Skip to main content
Glama
BunkerWeb MCP

BunkerWeb MCP

Official

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
WORKERSNoDocker entrypoint worker count.1
SEARCH_MODENo'remote' enables documentation search; 'disabled' omits the tool.remote
CACHE_ENABLEDNoCache selected read operations in process memory.true
RATE_LIMIT_WSNoMessages per WebSocket connection, when rate limiting is enabled.500/minute
RATE_LIMIT_RPCNoRequests to /rpc per client IP, when rate limiting is enabled.100/minute
SEARCH_API_URLNoURL of the remote search service API.http://localhost:8000
SEARCH_TIMEOUTNoSearch API request timeout in seconds.10.0
RATE_LIMIT_TOOLSNoRequests to /tools per client IP, when rate limiting is enabled.30/minute
MCP_ALLOWED_HOSTSNoComma-separated MCP Host allowlist. Include the port variants clients send.localhost,127.0.0.1
MCP_ENABLE_SKILLSNoServe bundled Agent Skills as skill://bunkerweb/ resources.true
BUNKERWEB_BASE_URLNoBase URL for the BunkerWeb control-plane API.http://localhost:8888
RATE_LIMIT_ENABLEDNoEnable rate limiting on endpoints.false
BUNKERWEB_API_TOKENNoStatic API token used for the Authorization bearer header.
BUNKERWEB_LOGS_PATHNoRuntime log directory; unset disables log tools.
BUNKERWEB_LOG_LEVELNoApplication log level.INFO
MCP_ALLOWED_ORIGINSNoComma-separated MCP Origin allowlist for browser clients.
BUNKERWEB_MAX_RETRIESNoMaximum number of retries for transient HTTP errors.3
BUNKERWEB_BASIC_PASSWORDNoPassword for HTTP Basic authentication.
BUNKERWEB_BASIC_USERNAMENoUsername for HTTP Basic authentication.
BUNKERWEB_PROMPT_CATALOGNoCustom tool-prompt JSON path; unset uses the bundled catalog.
BUNKERWEB_REDACT_PATTERNNoRegular expression that replaces the built-in sensitive setting name pattern.
BUNKERWEB_REDACT_SECRETSNoMask values of sensitive settings in tool and resource outputs.false
BUNKERWEB_WEBSOCKET_TOKENNoShared secret for legacy RPC/WebSocket access; also required on MCP HTTP when runtime logs are enabled.
BUNKERWEB_RETRY_BACKOFF_MAXNoMaximum backoff delay in seconds.5.0
BUNKERWEB_RETRY_BACKOFF_INITIALNoInitial backoff delay in seconds.0.5
BUNKERWEB_REQUEST_TIMEOUT_SECONDSNoHTTP request timeout in seconds.30.0
MCP_ENABLE_DNS_REBINDING_PROTECTIONNoEnable DNS rebinding protection for MCP endpoints.true

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
create_api_tokenA

Create a BunkerWeb API token (Biscuit) for use outside this server; returns only the token, a live credential to keep secret. Give username and password, or omit both to use the server's credentials. Needs an API user; lifetime is BunkerWeb's API_BISCUIT_TTL_SECONDS. Redaction may mask it.

ping_apiA

Check that the BunkerWeb API answers (GET /ping, returns pong); needs no credentials. The fastest liveness probe. Use diagnose_bunkerweb to also check authentication, version and instances, ping_instances to reach the instances themselves.

diagnose_bunkerwebA

Read-only report on the connected BunkerWeb: API reachability, authentication, version, MULTISITE and instance counts; service (a service ID) adds its existence, draft state and setting owners. A failed check shows as FAIL or null, not an error. Use ping_api for a bare probe.

list_instancesA

List every registered BunkerWeb instance (hostname, name, port, method, status, last_seen). Cached up to 60 s. This is registration data, not a live check: use ping_instances for reachability, get_instance for one host.

ping_instancesA

Ping one instance (hostname) or every registered instance (hostname omitted) and return each answer; BunkerWeb replies 502 if any ping fails. Read-only. Use list_instances for registration data without pinging.

stop_instancesA

Stop one instance (hostname) or every registered instance (all=true), never both; stopped instances serve no traffic until restarted outside this API. 502 if a stop is not acknowledged. Use reload_instances to apply config instead. Acts on the instances immediately.

get_instanceA

Fetch one registered instance by hostname (name, ports, server_name, method, status, last_seen); 404 if unknown. Cached up to 60 s. Use list_instances to find hostnames, ping_instances to test reachability.

create_instanceA

Register an instance (hostname may carry a scheme and port, https://host:5443). Name defaults to 'manual instance', method to api; fails if it exists. Use update_instance to change one. Saved to the database; the scheduler applies it later; this tool cannot confirm it is live.

update_instanceA

Change a registered instance's name, ports, HTTPS flag, server_name or method; omitted fields keep their value. Unknown or read-only instances are rejected. Use create_instance for a new host. Saved to the database; the scheduler applies it later; this tool cannot confirm it is live.

delete_instancesA

Unregister instances by hostname; use list_instances to find them. Hosts keep running (stop_instances halts them). Only UI/API-registered ones go; others come back as skipped, 404 if none can. Saved to the database; the scheduler applies it later; this tool cannot confirm it is live.

reload_instancesA

Reload configuration on one instance (hostname) or every registered instance (all=true), never both. test=true (default) checks the config first, then reloads; test=false reloads without the check. Returns only success or a 502 error. Use stop_instances to halt. Acts on the instances immediately.

list_bansA

List active bans as each instance reports them (ip, scope, service, kind, incl. CrowdSec entries), grouped per instance. Cached up to 30 s. Use it to check whether an IP is banned, or for the exact ip and service that unban_ips when writes are enabled needs.

ban_ipsA

Ban IPs on every instance: bans is a list of {ip, exp, reason, service}, exp in seconds (0 = permanent), service omitted for global. All IPs are validated before any is banned. Use unban_ips to lift a ban. Acts on the instances immediately.

unban_ipsA

Lift bans for IPs on every instance, globally or per service; match the scope list_bans shows. An IP also blocked by CrowdSec may be refused (409). Use list_bans first to find them. Acts on the instances immediately.

list_servicesA

List services (id, method, is_draft, template, security mode, dates); with_drafts=false hides drafts. Cached up to 5 min. Use get_service for one service's settings, get_global_config for global ones.

get_serviceA

Read one service's settings by ID (its first SERVER_NAME), with the method that set each; full=true adds defaults, with_drafts=false hides drafts. 404 if unknown. Cached up to 5 min. Use list_services to find IDs, get_global_config for global ones.

create_serviceA

Create a service named by SERVER_NAME (first word becomes its ID) with optional unprefixed settings and a draft flag. Fails if the name or a server name is taken. Use update_service to change one. Saved to the database; the scheduler applies it later; this tool cannot confirm it is live.

update_serviceA

Change a service's settings, rename it or set is_draft; needs MULTISITE=yes. Unknown or externally owned keys are skipped, and a receipt reads back the stored values. Use update_global_config for global. Saved to the database; the scheduler applies it later; this tool cannot confirm it is live.

delete_serviceA

Delete a service and all its settings, not reversible; wizard-managed services are refused. Use update_service with is_draft=true to take one offline instead. Saved to the database; the scheduler applies it later; this tool cannot confirm it is live.

get_global_configA

Read global settings; full=true adds defaults, methods=true adds the method that set each. Cached up to 10 min. Use get_service for one service's settings.

update_global_configA

Set global settings from key-value pairs; settings you omit are kept, values are stored as strings. Use update_service for one service's settings. Saved to the database; the scheduler applies it later; this tool cannot confirm it is live.

list_configsA

List custom config snippets (service, type, name, draft flag), optionally with content, across every scope unless filtered. Use get_config to read one snippet in full.

get_configA

Read one custom config snippet with its content, by service, type and name; 404 if unknown. Use list_configs to find snippets.

create_configA

Create one custom config snippet from text (method api); fails if the name exists or the service is unknown. Use create_configs_from_files to upload files. Saved to the database; the scheduler applies it later; this tool cannot confirm it is live.

update_configA

Edit, rename or move a snippet from text; omitted fields keep their value. UI/API-managed or template-derived only; templates cannot be renamed. A no-op is rejected. Use update_config_from_file for files. Saved to the database; the scheduler applies it later; this tool cannot confirm it is live.

delete_configsA

Delete config snippets: configs is a list of {service, type, name}, service 'global' for global ones. Only UI/API-managed ones go; others come back as skipped, 404 if none. Use list_configs to find them. Saved to the database; the scheduler applies it later; this tool cannot confirm it is live.

create_configs_from_filesA

Create snippets from base64 files ({filename, content_base64}) sharing one type and service; each is named after its sanitized file stem and bad files are reported, not fatal. Use create_config for text. Saved to the database; the scheduler applies it later; this tool cannot confirm it is live.

update_config_from_fileA

Replace a snippet from a base64 file ({filename, content_base64}); without new_name the stem renames it. UI/API-managed or template-derived only; templates cannot be renamed. Use update_config for text. Saved to the database; the scheduler applies it later; this tool cannot confirm it is live.

list_pluginsA

List installed plugins, filtered by type (all, external, ui, pro). type=ui lists the IDs accepted by uninstall_plugin when writes are enabled. Use list_jobs for jobs.

install_pluginsA

Install UI plugins from base64 archives ({filename, content_base64}; .zip, .tar.gz, .tar.xz with plugin.json). An existing plugin ID is refused; bad archives are reported. Uninstall first to replace. Saved to the database; the scheduler applies it later; this tool cannot confirm it is live.

uninstall_pluginA

Uninstall one UI-installed plugin by plugin_id; external and pro plugins are refused, 404 if absent. Use list_plugins type=ui to find IDs, install_plugins to add one (uninstall first to replace). Saved to the database; the scheduler applies it later; this tool cannot confirm it is live.

list_cache_filesA

List files that scheduler jobs cached (service, plugin, job, file name, checksum, last_update). with_data inlines text only; binary files show a placeholder, so read them with get_cache_file download=true. Use get_cache_file to read one.

delete_cache_filesA

Delete job cache files: files is a list of {service, plugin, job_name, file_name} service omitted for global. Use list_cache_files to find the keys. Missing files are reported per file; run_jobs regenerates them. Queued for the scheduler; this tool cannot confirm it ran.

get_cache_fileA

Read one job cache file by service, plugin, job_name and file_name as list_cache_files shows. Returns printable text; download=true returns base64 bytes instead. 404 if missing; sensitive files are refused when secret redaction is on. Use list_cache_files to find files.

list_jobsA

List scheduler jobs with their run history and cache metadata. Use list_cache_files for the files they wrote, and run_jobs when writes are enabled to trigger them.

run_jobsA

Trigger every job of the listed plugins (jobs: {plugin, name}; name is informational, all of a plugin's jobs run), e.g. after delete_cache_files. Returns only 'Jobs scheduled'; use list_jobs to check results. Queued for the scheduler; this tool cannot confirm it ran.

search_bunkerweb_docsA

Search the official BunkerWeb documentation by meaning, in any language. Returns up to limit sections with title, URL, category, relevance and content, one per document. Use it for how-to and setting questions; use the API tools to read live state. Lower min_score if nothing matches.

Prompts

Interactive templates invoked by user choice

NameDescription
create_api_tokenSuggested context for the 'create_api_token' tool.
ping_apiSuggested context for the 'ping_api' tool.
list_instancesSuggested context for the 'list_instances' tool.
ping_instancesSuggested context for the 'ping_instances' tool.
stop_instancesSuggested context for the 'stop_instances' tool.
get_instanceSuggested context for the 'get_instance' tool.
create_instanceSuggested context for the 'create_instance' tool.
update_instanceSuggested context for the 'update_instance' tool.
delete_instancesSuggested context for the 'delete_instances' tool.
reload_instancesSuggested context for the 'reload_instances' tool.
list_bansSuggested context for the 'list_bans' tool.
ban_ipsSuggested context for the 'ban_ips' tool.
unban_ipsSuggested context for the 'unban_ips' tool.
list_servicesSuggested context for the 'list_services' tool.
get_serviceSuggested context for the 'get_service' tool.
create_serviceSuggested context for the 'create_service' tool.
update_serviceSuggested context for the 'update_service' tool.
delete_serviceSuggested context for the 'delete_service' tool.
get_global_configSuggested context for the 'get_global_config' tool.
update_global_configSuggested context for the 'update_global_config' tool.
list_configsSuggested context for the 'list_configs' tool.
get_configSuggested context for the 'get_config' tool.
create_configSuggested context for the 'create_config' tool.
update_configSuggested context for the 'update_config' tool.
delete_configsSuggested context for the 'delete_configs' tool.
create_configs_from_filesSuggested context for the 'create_configs_from_files' tool.
update_config_from_fileSuggested context for the 'update_config_from_file' tool.
list_pluginsSuggested context for the 'list_plugins' tool.
install_pluginsSuggested context for the 'install_plugins' tool.
uninstall_pluginSuggested context for the 'uninstall_plugin' tool.
list_cache_filesSuggested context for the 'list_cache_files' tool.
delete_cache_filesSuggested context for the 'delete_cache_files' tool.
get_cache_fileSuggested context for the 'get_cache_file' tool.
list_jobsSuggested context for the 'list_jobs' tool.
run_jobsSuggested context for the 'run_jobs' tool.

Resources

Contextual data attached and managed by the client

NameDescription
Global ConfigurationCurrent BunkerWeb global configuration with all settings
Job Execution HistoryScheduler jobs with their execution history and status
Active IP BansList of currently active IP bans with expiry and reason
Instance StatusCurrent status and health of all registered BunkerWeb instances
bunkerwebUse when installing, deploying, configuring or upgrading BunkerWeb, the open-source WAF and reverse proxy, or when asked to protect a web app with a WAF or put BunkerWeb in front of a service. Covers Docker, Docker autoconf labels, Kubernetes ingress and Helm, Linux packages and the all-in-one image; global vs per-service settings and multisite prefixes; reverse proxy to an upstream; Let's Encrypt; SECURITY_MODE detect then block; verifying protection with curl. Symptoms include "put BunkerWeb in front of my app", "BunkerWeb docker-compose", "BunkerWeb ingress controller", "enable antibot on one host", "BunkerWeb Let's Encrypt", "upgrade BunkerWeb". Not for a setting that was already added and has no effect; use bunkerweb-troubleshooting.
references/all-in-one.md
references/apps/authentik.md
references/apps/directus.md
references/apps/drupal.md
references/apps/forgejo.md
references/apps/grafana.md
references/apps/home-assistant.md
references/apps/immich.md
references/apps/jellyfin.md
references/apps/keycloak.md
references/apps/netbird.md
references/apps/nextcloud.md
references/apps/paperless-ngx.md
references/apps/pi-hole.md
references/apps/seafile.md
references/apps/synapse.md
references/apps/tomcat.md
references/apps/tuwunel.md
references/apps/uptime-kuma.md
references/apps/vaultwarden.md
references/apps/wordpress.md
references/apps/xen-orchestra.md
references/autoconf.md
references/docker.md
references/kubernetes.md
references/linux.md
bunkerweb-migrateUse when moving to BunkerWeb from a source that has no dedicated migration skill (Envoy, IIS, Zoraxy, a cloud WAF or CDN rule set, a hand-rolled OpenResty setup), or from an estate that mixes several sources. Runs the shared five-step migration (inventory, map, custom-config fallback, parallel detect run, cutover with a written rollback), maps each row from BunkerWeb's own `plugin.json` files, and routes every part of the estate that has a dedicated skill (nginx, Nginx Proxy Manager, SWAG, ingress-nginx, Traefik, Caddy, Apache httpd, HAProxy, standalone ModSecurity) to it. Symptoms include "convert my Envoy config to BunkerWeb", "migrate IIS to BunkerWeb", "Cloudflare WAF rules to BunkerWeb", "I run nginx, Traefik and Caddy and want one BunkerWeb".
bunkerweb-migrate-apacheUse when moving Apache httpd to BunkerWeb (`VirtualHost`, `ProxyPass`, `ProxyPassReverse`, `RequestHeader`, `Require ip`, `RewriteRule`, `mod_proxy`, `.htaccess`). Maps each vhost directive to a BunkerWeb setting, flags what Apache never enforced (`LimitRequestBody` on proxied bodies), runs BunkerWeb in parallel in detect mode, then cuts over with a written rollback. Checked against a live Apache 2.4 and BunkerWeb 1.6.15. Symptoms include "Apache vhost to BunkerWeb", "replace Apache httpd with BunkerWeb", "ProxyPass to BunkerWeb", "convert my httpd config to BunkerWeb". For any other source, use `bunkerweb-migrate`, which routes to the skill for it.
references/mapping.md
references/verified-live.md
bunkerweb-migrate-caddyUse when moving Caddy to BunkerWeb (a Caddyfile, `reverse_proxy`, `handle` and `handle_path`, `header_up`, `basic_auth`, `tls`, and Caddy's automatic HTTPS with its stored certificates). Maps each Caddyfile directive to a BunkerWeb setting, turns on the certificate source that Caddy provided by itself, runs BunkerWeb in parallel in detect mode, then cuts over with a written rollback. Symptoms include "Caddyfile to BunkerWeb", "replace Caddy with BunkerWeb", "Caddy reverse_proxy to BunkerWeb", "Caddy automatic HTTPS in BunkerWeb". For any other source, use `bunkerweb-migrate`, which routes to the skill for it.
references/mapping.md
references/verified-live.md
bunkerweb-migrate-haproxyUse when moving HAProxy to BunkerWeb (`haproxy.cfg`, `frontend`, `backend`, `acl`, `use_backend`, `http-request`, `stick-table`, `bind ... ssl crt`). Maps the HTTP frontends to BunkerWeb settings, turns `mode tcp` frontends into stream services, lists what has no setting (balancing across several servers, `tcp-request` rules), runs BunkerWeb in parallel in detect mode, then cuts over with a written rollback. Checked against a live HAProxy 3.4 and BunkerWeb 1.6.15. Symptoms include "haproxy.cfg to BunkerWeb", "replace HAProxy with BunkerWeb", "HAProxy ACL to BunkerWeb", "HAProxy stick-table rate limit in BunkerWeb". For any other source, use `bunkerweb-migrate`, which routes to the skill for it.
references/mapping.md
references/verified-live.md
bunkerweb-migrate-ingress-nginxUse when moving Kubernetes Ingress objects served by ingress-nginx to BunkerWeb's ingress controller (`nginx.ingress.kubernetes.io/*` annotations, `ingressClassName` set to `nginx`, the ingress-nginx ConfigMap, the minikube `ingress` addon). Converts each annotation to a `bunkerweb.io/` annotation on the same Ingress under the `bunkerweb` class, lists what has no equivalent (snippets, canary, mirror, session affinity), runs both controllers side by side in detect mode, then cuts over by DNS with a written rollback. The Kubernetes project retired ingress-nginx in March 2026. Symptoms include "ingress-nginx is retired, move to BunkerWeb", "my rewrite-target annotation in BunkerWeb", "whitelist-source-range in BunkerWeb", "limit-rps in BunkerWeb". For any other source, use `bunkerweb-migrate`, which routes to the skill for it.
references/mapping.md
references/verified-live.md
bunkerweb-migrate-modsecurityUse when moving a standalone ModSecurity or OWASP CRS installation to BunkerWeb, namely the `owasp/modsecurity-crs` container (nginx or Apache), or ModSecurity on nginx or Apache with your own rule files (`SecRule` files, `SecRuleRemoveById`, `SecRuleUpdateTargetById` and `ctl:` exclusions, `crs-setup.conf` values, paranoia level, anomaly thresholds, `SecRuleEngine`, body limits, CRS plugins). BunkerWeb already runs ModSecurity with the CRS, so this moves only your own rules and settings into the right custom config type, replays the same requests against both in detect mode comparing rule ids, then cuts over with a written rollback. Checked against both CRS images and BunkerWeb 1.6.15. Symptoms include "move my ModSecurity rules to BunkerWeb", "port my CRS exclusions to BunkerWeb", "modsecurity.conf to BunkerWeb settings", "SecRuleRemoveById in BunkerWeb", "my CRS paranoia level on BunkerWeb". For any other source, use `bunkerweb-migrate`, which routes to the skill for it.
references/mapping.md
references/verified-live.md
bunkerweb-migrate-nginxUse when converting an nginx configuration to BunkerWeb settings (nginx.conf, a sites-enabled or conf.d server block, `location`, `proxy_pass`, `upstream`, `client_max_body_size`, `allow`/`deny`). Inventories the server and location blocks, maps each directive to a BunkerWeb setting, moves what has no setting into a custom config, runs BunkerWeb in parallel in detect mode, then cuts over with a written rollback. Symptoms include "convert my nginx.conf to BunkerWeb", "nginx server block to BunkerWeb settings", "proxy_pass to BunkerWeb", "replace my nginx reverse proxy with BunkerWeb". Only for a hand-written nginx config. For any other source, use `bunkerweb-migrate`, which routes to the skill for it.
references/mapping.md
references/verified-live.md
bunkerweb-migrate-nginx-proxy-managerUse when moving Nginx Proxy Manager (NPM) to BunkerWeb (proxy hosts, redirection hosts, streams, access lists, "Block Common Exploits", custom locations, the Advanced tab, and NPM's Let's Encrypt certificates). Reads each host from NPM's API, its generated `proxy_host/<id>.conf` files or a copy of its database, maps every option to a BunkerWeb setting, handles the certificates and the port 80 conflict, runs BunkerWeb in parallel in detect mode, then cuts over with a written rollback. Symptoms include "migrate from Nginx Proxy Manager to BunkerWeb", "replace NPM with BunkerWeb", "my NPM proxy hosts to BunkerWeb", "NPM access list in BunkerWeb". For any other source, use `bunkerweb-migrate`, which routes to the skill for it.
references/mapping.md
references/verified-live.md
bunkerweb-migrate-swagUse when moving linuxserver SWAG (Secure Web Application Gateway, `lscr.io/linuxserver/swag`) to BunkerWeb (`proxy-confs/*.subdomain.conf`, `*.subfolder.conf`, `proxy.conf`, `ssl.conf`, `URL`, `SUBDOMAINS`, `VALIDATION`, `DNSPLUGIN`, fail2ban `jail.local`, `.htpasswd`). Maps each proxy conf and the certificate environment to BunkerWeb settings, maps the fail2ban jails, flags what SWAG did that BunkerWeb does not (`proxy_redirect`, unlimited body size, extra `X-Forwarded-*` headers), runs BunkerWeb in parallel in detect mode, then cuts over with a written rollback. Symptoms include "replace SWAG with BunkerWeb", "linuxserver swag proxy-confs to BunkerWeb", "swag fail2ban to BunkerWeb". For any other source, use `bunkerweb-migrate`, which routes to the skill for it.
references/mapping.md
references/verified-live.md
bunkerweb-migrate-traefikUse when moving Traefik to BunkerWeb (Docker `traefik.*` labels, `dynamic.yml` or file-provider routers, services and middlewares, entrypoints, `certresolver` and `acme.json`). Converts each router and middleware to BunkerWeb autoconf labels (`bunkerweb.*`), lists what has no equivalent, builds the autoconf stack, runs BunkerWeb in parallel in detect mode, then cuts over with a written rollback. Symptoms include "replace Traefik with BunkerWeb", "Traefik labels to BunkerWeb labels", "Traefik middlewares to BunkerWeb", "Traefik ipallowlist in BunkerWeb". For any other source, use `bunkerweb-migrate`, which routes to the skill for it.
references/mapping.md
references/verified-live.md
bunkerweb-modsecurity-crs-tuningUse when tuning ModSecurity or OWASP CRS on BunkerWeb, clearing a WAF false positive where a legitimate request gets 403, or writing a BunkerWeb custom config of type modsec, modsec-crs, crs-plugins-before or crs-plugins-after. Symptoms include "ModSecurity blocks a valid request", "OWASP CRS false positive", "949110 Inbound Anomaly Score Exceeded", "my exclusion does nothing", "SecRuleRemoveById has no effect", "which folder do I put the rule in", "how do I disable rule 942100 for one path", "CRS exclusion for one URL".
reference.md
bunkerweb-troubleshootingUse when BunkerWeb blocks, bans or breaks something and the cause is unknown. Covers 403 Forbidden on a legitimate request, "You have been banned", 502 or 504 from the reverse proxy, Let's Encrypt certificate failures, a setting or label that has no effect, the web UI not reaching BunkerWeb, and reloads that fail. Maps the status code and log signature to the BunkerWeb module that fired (bad behavior, antibot, blacklist, DNSBL, country, limit, ModSecurity), lists and lifts bans, and whitelists correctly. Symptoms include "BunkerWeb 403", "403 page after putting BunkerWeb in front of my site", "what is blocking my form", "BunkerWeb banned me", "how to unban an IP", "BunkerWeb 502 bad gateway", "setting not applied", "I added a setting, restarted, and nothing changed", "why is my setting ignored", "label ignored", "Let's Encrypt failed BunkerWeb".
references/modules.md

TDQS

A4.2/5.0

Scored across 37 tools

Disambiguation5/5

Despite 37 tools, each targets a distinct resource+action and descriptions explicitly cross-reference siblings (ping_api vs diagnose_bunkerweb vs ping_instances; list_instances vs get_instance; stop_instances vs reload_instances; text vs file variants of config tools). Boundary cases like create_config vs create_configs_from_files or list_bans vs list_cache_files are spelled out in-line, so an agent can reliably choose.

Naming Consistency5/5

Consistent verb_noun pattern throughout (list_/get_/create_/update_/delete_/ping_/run_ + resource), with singular vs plural used meaningfully to signal single-item vs batch operations (get_instance vs delete_instances, ban_ips vs list_bans). No camelCase or style mixing.

Tool Count3/5

The 37 tools span roughly eight real sub-domains (instances, services, global config, config snippets, plugins, jobs, cache files, bans) so most earn their place, but the total is heavy and some pairs (create_config/create_configs_from_files, update_config/update_config_from_file, ping_api/diagnose_bunkerweb) could be consolidated via parameters.

Completeness4/5

Coverage is strong: full CRUD on instances, services, global config and snippets, plus plugin install/uninstall, ban/unban, cache read/delete, job triggering, diagnostics and docs search. Minor gaps remain around API token lifecycle (create only, no list/revoke) and instance start (stop exists but restart is explicitly out of scope).

Maintenance

ActivityNo data
ResponsivenessOutdated data