The server defines 4 tools with visible schemas and descriptions, but exhibits significant quality gaps. All tools have input schemas with typed parameters and descriptions present, meeting baseline structure. However, descriptions are inconsistent in clarity and actionability. Tool naming follows verb_noun convention (list_, get_, extract_, analyze_) which is acceptable. Critical issues: (1) Output schemas are NOT documented anywhere, the code returns TextContent with JSON strings, but the LLM cannot know what fields to expect in the parsed response. (2) No error handling guidance is visible; error returns are bare strings like 'Error: Session not found' without recovery suggestions. (3) Session-based architecture (session_id parameter in every tool) is awkward, LLMs must track session IDs manually; this design does not match the chat data model where users expect stateless, name-based queries. (4) Descriptions are generic/weak for distinguish ability: list_flows vs get_flow_details both describe retrieving HTTP data, creating ambiguity about when to call which. (5) No pagination or result limits documented despite tools that could return large result sets. (6) Parameter descriptions lack actionable constraints (e.g., 'session_id' is just described as 'The ID of the session', no guidance on format, how to obtain one, or error handling if invalid).
Analyze flow for bot protection mechanisms and extract challenge details
Extract specific fields from JSON content in a flow using JSONPath expressions
Lists HTTP requests/responses from a mitmproxy capture session, showing method, URL, and status codes
Retrieves detailed HTTP request/response data including headers, content (or structure preview for large JSON), and metadata from specified flows
Output schemas completely absent. No tool documents what fields or structure it returns. LLM cannot plan downstream tool calls or data extraction. Code shows TextContent with JSON strings, but tool registration provides no schema.
Descriptions lack distinction between similar tools. Both list_flows and get_flow_details claim to 'list/retrieve HTTP data', LLM cannot determine which to call. Missing WHEN/WHY guidance.
Error handling is absent. Code returns bare error strings ('Error: Session not found') with no recovery guidance. LLM cannot determine whether to retry, ask the user, or call a different tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 16 | - | v1 |
Session-based architecture (session_id in every call) does not match chat data model. Users say 'analyze this request' not 'analyze flow 5 in session ABC123'. Tool design should accept request identifiers or implement automatic session discovery.
Parameter descriptions lack actionable constraints. 'session_id' described only as 'The ID of the session', no format, length, example, or how to obtain. LLM has to guess or rely on inference.
No pagination or result limits documented. list_flows and get_flow_details could return thousands of entries, blowing context window. Missing limit/offset params and explicit caps in descriptions.