Production-ready MCP (Model Context Protocol) server on Cloudflare Workers. Bearer-token auth, structured logging, sample tool. Stateless, edge-distributed, scale-to-zero.
Single tool with clear naming (getCompanyFacts), good description (119 chars, within 10-1024 range), and complete input schema with proper types and constraints. Parameter 'ticker' has a descriptive annotation with examples. Output schema is implicit but reasonable (JSON object with company fields). No error handling guidance for LLM recovery. Tool is read-only and low-risk. Lacks output schema documentation and error recovery patterns expected of A-grade tools.
Look up structured facts about a publicly-traded company by NYSE/NASDAQ ticker symbol. Returns name, sector, market cap, and headquarters.
Output schema not documented. LLM cannot plan downstream operations or validate response structure. Should document: {ticker: string, name: string, sector: string, market_cap_usd: number, hq: string}.
Error responses lack recovery guidance. 'No company found with ticker...' is informative, but missing guidance like 'Try a different ticker or call tools/list to see available companies.' LLM cannot self-correct.
Parameter 'ticker' description includes example values ('AAPL', 'MSFT', 'GOOGL'). LLMs tend to reuse examples literally. Use enum constraint or pattern instead.
Tool accepts only 4 hardcoded companies (AAPL, MSFT, GOOGL, NET). Real-world usage requires dynamic data source (API, database). Sample data is fine for template, but production readiness is limited.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 79 | 2026-07-28+ | v2 |
No pagination or result limits documented. Tool returns single object, so not critical here, but pattern should be noted for multi-result tools in future extensions.