Template for building a remote MCP server with Hono, deployed on Vercel
Four tools with complete schemas and descriptions. Naming follows verb_noun convention (echo, convert-length, search-items, get-item). Descriptions are clear and actionable (avg ~120 chars). All parameters have types and descriptions. Input schemas use JSON Schema with constraints (minLength, minimum, maximum, default). However, output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal; no recovery guidance. Tool composition is sound (single responsibility, chainable IDs). Missing tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only.
Convert a length between units (mm, cm, m, km, in, ft, mi). Returns the converted value plus the exact conversion factor used. Prefer this over calculating by hand.
Echo a message back, optionally repeated. Use to verify the MCP connection is alive and that arguments arrive correctly.
Fetch a single row from "items" by its id. Use after search-items to get full detail.
Search rows in the "items" table by name, newest first. Returns matching rows with all columns.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nested objects). Agents must infer from trial-and-error.
Tool annotations missing. All four tools are read-only and idempotent, but lack readOnlyHint and idempotentHint in schema. Agents cannot distinguish safe tools from destructive ones.
Error handling lacks recovery guidance. No documented error cases, retryability classification, or actionable error messages. Agents cannot self-correct on failure.
search-items returns 'newest first' but no pagination cursor or total count documented. Large result sets risk context window exhaustion.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
convert-length precision parameter (0-10 decimals) lacks guidance on when to use. Description should explain use case (e.g., 'for display vs. calculation').