MCP server for sending raw network packets
Two tools with identical schemas and similar descriptions. Both have proper input schemas with type constraints (host: string, port: integer 1-65535, payload: string with default). Descriptions are adequate (60-70 chars) but lack actionable context about when to use each tool or what happens on failure. No output schema documented. Error handling returns text but lacks recovery guidance. Parameters are well-typed but descriptions could specify encoding details and timeout behavior. No tool annotations (destructiveHint, idempotentHint) despite both being write operations.
Send a raw TCP packet to a specified host and port
Send a raw UDP packet to a specified host and port
No output schema documented. LLMs cannot predict response structure (bytes_sent, connection_time, response_received fields). Breaks downstream tool chaining and forces parsing unstructured text.
Missing tool annotations. Both tools are destructive (send network packets) but lack destructiveHint=true. Agents cannot reason about side effects or plan rollback strategies.
Error responses lack recovery guidance. Errors return plain text (e.g., 'TCP packet send failed') without suggesting next steps. Pattern: 'Connection refused. Verify host is reachable and port is open.'
Parameter descriptions lack encoding and timeout details. 'payload' description does not mention UTF-8 encoding, max size, or binary data handling. TCP timeout is 10s, UDP is 5s, not documented in parameter descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Tool descriptions do not explain when to use TCP vs UDP or what each returns. LLMs cannot distinguish use cases. Add: 'TCP: connection-oriented, reliable delivery. UDP: connectionless, fire-and-forget.'