Type-safe TypeScript framework for building Model Context Protocol (MCP) servers with pure interface-driven API
This MCP server has critical definitional gaps that would prevent production use. Of 2 tools, only 1 (notify) has a complete schema with proper types and descriptions. The tool_runner tool has a description but lacks visible input parameter type definitions in the source code provided. The notify tool is well-defined (message string with minLength, type enum), but tool_runner's parameters (language, code, timeout) appear to lack TypeScript type annotations in the visible schema. Additionally, neither tool documents output schemas, which is essential for agent composition. Error handling appears absent from both tool definitions, there are no recovery guides or error classifications. The server provides no guidance on when to use tool_runner vs other approaches, and the 'code execution' nature of tool_runner raises severe security concerns with no visible input sanitization, timeout enforcement details, or permission gating. Schema documentation baselines show 100% of A+ tools have documented return types; this server has 0%.
Add two numbers together
Analyze code for patterns and anti-patterns
Analyze data using external Python script
Process multiple items
Perform a calculation
Check code for security vulnerabilities
Compute SHA-256 of provided text and return the digest as raw bytes
Delete a user account
Deploy a named service to an env.
Double a number using Python
tool_runner has no visible input schema in source code. The description mentions 'language', 'code', and 'timeout' parameters but no JSON Schema with type definitions is shown. Per hard scoring rules, schema score must be 0.
No output schemas documented for either tool. Baselines show 100% of A+ tools document return types. Without output schema, agents cannot plan downstream tool calls or extract required data for composition.
tool_runner accepts arbitrary code execution with timeout parameter but no visible timeout enforcement, sandbox isolation documentation, or error recovery guidance. This is a severe security risk. No documentation of what happens on timeout, syntax errors, or runtime exceptions.
notify description is 52 characters ('Send a notification to the user'), meets minimum but provides no context on WHEN to use this tool vs logging alternatives, or what constitutes a successful notification.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 1 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 33 | - | v1 |
Double a number using TypeScript
Execute arbitrary code (requires elevated scope)
Get weather forecast
Get weather for a location
Greet someone by name
Greet a user
Look up data by key
Run ML prediction (requires numpy/sklearn)
Health check endpoint
Draft a release-notes blurb from a PR number.
Send an email to a user
Calculate basic statistics for a list of numbers
Run a torch tensor op (pool mode — first call cold, rest warm)
Void a customer payment using the tier-specific approval code.
Show current user info from JWT claims
tool_runner description (70 chars) claims 'isolated sandbox environment' but provides no documentation of isolation boundaries, capabilities available, or what code cannot access. Agents need to understand constraints before attempting code execution.
tool_runner naming is vague. 'tool_runner' does not clearly convey 'execute arbitrary TypeScript'. Agents cannot infer from name alone that this is a code execution tool. Consider 'execute_typescript' or 'run_code'.
No error handling guidance in either tool definition. Baselines from 549 production tools show A+ tools include recovery hints like 'Try search_users() first' or 'User not found.' This server provides none, forcing agents to guess next steps on failure.
tool_runner 'language' parameter description ('Programming language') is generic and provides no enum constraint or validation guidance. This invites hallucinated language names. Should specify supported languages: TypeScript, JavaScript, Python, etc.
tool_runner 'code' parameter (description: 'Code to execute') provides no guidance on code size limits, what imports are available, or what global state is accessible. Agents will guess and produce oversized or invalid code.