A zero-dependency, production-grade load balancer written in Go with MCP server integration for WAF management tools
OLB exposes 9 WAF management tools with basic schemas and descriptions. All tools have names starting with action verbs (waf_*) and descriptions present. However, critical gaps undermine production readiness: (1) Parameter descriptions are minimal or absent for several tools (e.g., waf_status has empty input {}); (2) Output schemas are not documented anywhere in the provided code, LLMs cannot predict what fields to expect; (3) No error handling guidance, tools return raw errors without recovery hints; (4) No pagination support despite tools like waf_get_top_blocked_ips and waf_get_attack_timeline returning lists; (5) Destructive operations (waf_add_whitelist, waf_add_blacklist) lack confirmation patterns or dry-run support. Tool names are clear and verb-prefixed, which is a strength. Descriptions average ~80 chars, meeting baseline minimums but lacking depth on WHEN to use each tool or what downstream actions they enable.
Add an IP/CIDR to the WAF blacklist (immediately blocked)
Add an IP/CIDR to the WAF whitelist (bypasses all security checks)
Get attack counts per minute for the last N minutes
Get WAF statistics (total, blocked, monitored requests and per-detector hits)
Get top N blocked IP addresses
List all WAF whitelist and blacklist rules
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). Tools like waf_get_stats and waf_get_top_blocked_ips return lists but no schema is visible.
No error handling guidance. Tools return raw errors without recovery hints (e.g., 'Invalid CIDR format' should suggest 'Use format 10.0.0.0/8 or single IP 192.168.1.1').
Destructive operations lack confirmation or dry-run. waf_add_whitelist and waf_add_blacklist modify security posture without agent confirmation, risking accidental misconfigurations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Remove an IP/CIDR from the WAF blacklist
Remove an IP/CIDR from the WAF whitelist
Get WAF status: enabled layers, mode, and summary statistics
List tools lack pagination. waf_get_top_blocked_ips accepts 'limit' but no offset/cursor. waf_get_attack_timeline returns 'minutes' of data with no way to paginate large result sets.
Parameter descriptions minimal or missing. waf_status has empty input schema {}. waf_list_rules 'type' param description is generic ('Filter: whitelist, blacklist, or all'), no guidance on when to use each.