A remote MCP server running on Cloudflare Workers that provides calculator and GitHub PR search tools without authentication
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation and error handling. Tool names lack action verbs (add, calculate, github-prs are weak). Descriptions are present but generic (10-60 chars, below the 50-200 char LLM-optimized baseline). Parameters have types but lack descriptions for most fields. The github-prs tool has a critical bug: githubToken is hardcoded to empty string, making the tool non-functional. No error recovery guidance. Output schemas are not documented. Composition is reasonable (three independent tools), but overall quality is below production baseline.
Simple addition tool that adds two numbers
Calculator tool with multiple operations (add, subtract, multiply, divide)
Search for GitHub pull requests by author within a date range
Tool names lack action verbs. 'add' and 'calculate' are weak; 'github-prs' uses hyphens instead of verb_noun pattern. LLMs rely on names to infer intent before reading descriptions.
Parameter descriptions are missing or minimal. 'a' and 'b' in add/calculate have no descriptions; 'operation' enum lacks explanation of when to use each operation. LLMs cannot infer parameter meaning from names alone.
github-prs tool has a critical bug: githubToken is hardcoded to empty string (line: const githubToken = '';). Tool will always fail with 'GitHub PAT not found' error. Environment variable GITHUB_PAT is declared but never used.
No output schemas documented. Callers cannot predict response structure. add/calculate return text content; github-prs returns JSON array. Undocumented schemas force LLMs to guess field names for downstream tool chaining.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
Error handling lacks recovery guidance. github-prs returns raw error text from GitHub API; add/calculate return generic error strings. LLMs receive no actionable next steps (e.g., 'Try search_users() first' or 'Retry with valid date format').