Remote MCP control plane for an ESP32 over WiFi — a Worker + Durable Object relay the board dials out to.
Four tools with minimal descriptions and incomplete schemas. Tool names lack action verbs (status, telemetry, gpio, command). Descriptions are present but vague (10-80 chars, below the 50-200 char LLM-optimized baseline). Input schemas exist for gpio and command but lack proper type annotations and descriptions for all parameters. No output schemas documented. No error handling guidance. No parameter constraints (enums, ranges) beyond gpio's min/max. The server reads like a hardware control interface with domain-specific jargon rather than an LLM-friendly tool suite.
Send a raw command op to the board firmware and await its ack — for board-specific verbs beyond gpio (e.g. a robot's 'drive'). args is an arbitrary JSON object.
Drive a GPIO pin on the board: set <pin> to level 0 or 1, and await the board's ack. The control half of the loop.
Is the board online (currently dialed into the relay)? Returns last-seen + the hello info it announced.
The latest telemetry snapshot the board pushed over its WiFi link (any JSON). Null if it hasn't sent any yet.
Tool names lack action verbs. 'status', 'telemetry', 'gpio', 'command' are nouns or domain jargon, not verb_noun patterns. LLMs cannot infer intent from names alone.
Descriptions are too short (10-80 chars vs 50-200 char baseline). 'Is the board online...' and 'The latest telemetry snapshot...' lack context for when/why to call these tools.
No output schemas documented. LLMs cannot plan downstream calls or extract fields without knowing what status/telemetry/gpio/command return.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
No error handling guidance. Tools do not explain what to do if the board is offline, command fails, or pin is invalid. Agents have no recovery path.