MCP server that provides tools to query the SuzieQ REST API for network data analysis, supporting 'show' and 'summarize' operations on various network tables.
Two tools with adequate schemas and descriptions, but significant gaps in parameter documentation and error guidance. Both tools have clear names (run_suzieq_show, run_suzieq_summarize) starting with action verbs, and descriptions of 150-200 chars explaining what they do. However, the 'filters' parameter lacks type specificity (object with no property schema), and neither tool documents expected output structure or error recovery paths. Error handling exists in code (httpx exceptions caught) but responses are generic JSON strings without actionable guidance for LLMs. No pagination, no result limits documented, no per-item error reporting for batch-like operations.
Runs a SuzieQ 'show' query via its REST API. Args: table: The name of the SuzieQ table to query (e.g., 'device', 'bgp', 'interface', 'route'). filters: An optional dictionary of filter parameters for the SuzieQ query (e.g., {"hostname": "leaf01", "vrf": "default", "state": "Established"}). Keys should match SuzieQ filter names. Values can be strings or lists of strings. If no filters are needed, this can be None, null, or an empty dictionary. Returns: A JSON string representing the result from the SuzieQ API, or a JSON string with an error message.
Runs a SuzieQ 'summarize' query via its REST API. Args: table: The name of the SuzieQ table to summarize (e.g., 'device', 'bgp', 'interface', 'route'). filters: An optional dictionary of filter parameters for the SuzieQ query (e.g., {"hostname": "leaf01", "vrf": "default"}). Keys should match SuzieQ filter names. Values can be strings or lists of strings. If no filters are needed, this can be None, null, or an empty dictionary. Returns: A JSON string representing the summarized result from the SuzieQ API, or a JSON string with an error message.
Filters parameter lacks property schema. Declared as type 'object' with no properties, additionalProperties, or constraints. LLMs cannot infer valid filter keys (hostname, vrf, state, etc.) and will hallucinate invalid filter names.
No output schema documented. Tools return 'A JSON string representing the result' but do not specify fields, structure, or pagination. LLMs cannot plan downstream operations or extract required data.
Error responses are generic JSON strings without recovery guidance. Code catches httpx.HTTPStatusError, httpx.RequestError, json.JSONDecodeError but returns bare error dicts. LLMs receive 'HTTP error occurred: 404' with no hint to try a different table or check configuration.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
No result limits or pagination documented. SuzieQ API may return thousands of rows; tools do not cap results or accept limit/offset parameters. Large responses will exhaust context windows and degrade LLM reasoning.
Configuration errors (missing SUZIEQ_API_ENDPOINT or SUZIEQ_API_KEY) return a generic error message but do not guide the user to set environment variables or .env file. Error message is actionable but could be more specific about .env file location and format.