An MCP server that aggregates tools from multiple upstream MCP providers and lazycat skills, managing provider discovery, health monitoring, and tool routing
Server has 3 tools with basic registration but significant quality gaps. All tools have descriptions (good), but 2 of 3 lack proper parameter type constraints and descriptions are thin. Parameter validation is weak, enum constraints exist for only 2 tools. Error handling is minimal (raw error codes, no recovery guidance). Output schemas are not documented. Tool names are reasonably clear (domain_base_info_lookup, lazycat_power, lazycat_device_query) but descriptions are bilingual clutter. No discussion of idempotency, destructive operations lack confirmation patterns, and no output schema documentation. This is below the 70-79 'good' threshold due to incomplete parameter descriptions and missing error recovery guidance.
domain base info query 域名基本信息查询
Retrieve skill prompt content by slug
Descriptions are bilingual (English + Chinese) and thin (30-40 chars each). Thin descriptions lack context on WHEN to use tool, WHAT it returns, and disambiguation from similar tools. Bilingual text wastes tokens without improving LLM usability.
Output schemas are NOT documented. Callers do not know what fields are returned. domain_base_info_lookup returns a domainBaseInfo struct with DNSNameServers ([]string), IpAddresses ([]string), MxRecords ([]*net.MX), WhoisInfo (string), Certificates ([]*x509.Certificate), but this is invisible to MCP clients. lazycat_device_query returns EndDevice objects, structure unknown to agent.
lazycat_power is DESTRUCTIVE (power-off, reboot) but has no confirmation pattern. An agent could accidentally power-off a production device. No mention in description that 'power-off' and 'reboot' are irreversible.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 0 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 47 | - | v1 |
Error responses provide no recovery guidance. deviceListHandler returns mcp.NewToolResultError(err.Error()), raw error text that tells the agent nothing actionable.
Parameter descriptions lack format constraints. 'domain' parameter in domain_base_info_lookup has no guidance on format (FQDN? bare domain? IPv4?).
No audit logging of tool calls visible. Code shows Zerolog logger configured but no evidence of audit events (who called, when, with what params, what result). Critical for security compliance.
No permission checks visible. lazycat_power can execute destructive operations without verifying caller authorization.