py2mcp exposes 11 tools with complete input schemas and descriptions. Naming follows verb_noun convention (add, multiply, greet, list_projects, get_project, set_project, delete_project). Descriptions are present but brief (10-80 chars), below the 50-200 char LLM-optimized baseline. Parameter descriptions are minimal. No output schemas documented. Error handling and recovery guidance absent. Tool composition is reasonable (separate get/set/delete for projects), but descriptions lack context on when to use each tool and what they return.
Add two numbers together.
Add two arrays element-wise. Note: This function expects numpy arrays as inputs, but the MCP client will send lists. We use input_trans to convert lists to arrays automatically.
Delete a value.
Format text with optional uppercase conversion. This function doesn't need transformation - it works with plain types.
Get a value by key.
Generate a greeting message.
Check if a number is even.
Descriptions are too brief (10-80 chars vs. 50-200 char baseline). LLMs cannot determine when to select tools or what they return. E.g., 'List all keys' lacks context on what keys represent or when to call it.
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields. E.g., list_projects returns 'all keys' but the structure (list of strings? objects?) is undocumented.
No error handling or recovery guidance. If a tool fails, the LLM has no actionable next step. E.g., delete_project has no guidance on what happens if the key doesn't exist.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
List all keys.
Multiply two numbers.
Normalize a vector to unit length.
Set a value.
Destructive tool (delete_project) lacks confirmation or dry-run support. Agents make mistakes, no safeguard prevents accidental deletion.
Parameter descriptions are minimal or absent. E.g., 'key' in get_project has description 'Project key' but no format, length, or character constraints. 'value' in set_project is 'Project data' with no schema hint.