MHS edge security gateway: a stateless MCP server on Fastly Compute that authenticates, authorizes, safety-checks, quotas, and proxies tools/call to an MHS driver backend.
Two tools with complete input schemas and descriptions, but both lack critical parameter-level documentation and output schema specifications. set_temperature has a minimal 6-word description; move_joint's 11-word description is similarly sparse. Neither tool documents expected output format, return fields, or error conditions. Parameter descriptions are entirely absent, 'celsius' and 'angle_degrees' lack units/range guidance despite being numeric. No error handling guidance. Naming is clear (verb_noun pattern), but schema completeness and parameter documentation fall short of production baseline (94% of A+ tools have full param descriptions; 100% document return types).
Move one joint of the robot arm to an angle, in degrees.
Set the qPCR block temperature, in Celsius.
Parameter descriptions entirely missing. 'celsius' and 'angle_degrees' have no guidance on valid ranges, units, or constraints. LLMs cannot infer whether celsius accepts -50 to 100 or 0 to 50, or whether angle_degrees wraps at 360.
Output schemas not documented. No specification of what set_temperature or move_joint return, success/failure status, confirmation data, device state, error details. LLMs cannot plan downstream actions or validate results.
Tool descriptions are under 20 characters and lack context. 'Set the qPCR block temperature, in Celsius' (6 words) does not explain WHEN to use this tool, what happens on success/failure, or prerequisites. 'Move one joint of the robot arm to an angle, in degrees' (11 words) similarly lacks actionable guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
No error handling or recovery guidance. Tools marked as WRITE (destructive) but provide no confirmation pattern, dry-run option, or error classification (retryable vs fatal). Agents cannot safely retry or understand failure modes.
No input validation constraints visible. Numeric parameters lack min/max bounds. No enum constraints for 'axis' parameter in move_joint (which axes are valid? x, y, z? joint_1, joint_2?). LLMs will hallucinate invalid values.