Serves utility programs from Claude's Toolbox using the Model Context Protocol (MCP). Allows agentic LLMs to use the programs regardless of their API interface (e.g. Claude Code, Claude Desktop, etc.).
The server provides 2 tools with significant definition quality gaps. Tool names are reasonably clear (list_tools_in_functions_dir, use_function_as_tool), but descriptions are verbose and lack clarity about when to use each tool. Input schemas are present with JSON Schema types, but parameter descriptions are inconsistent and some lack guidance on valid values or constraints. No documented output schemas. Error handling descriptions are generic. Tool composition appears reasonable but documentation does not guide the LLM on the intended workflow.
Search a Python codebase for specific patterns or terms.
Generate documentation from Python source code.
Fix common linting issues in Python codebases.
Run Python tests and save results to a JSON file.
Generate test files based on JSON input.
Output schema not documented. Neither tool declares what fields the LLM should expect in the response. This prevents downstream tool chaining and forces the LLM to guess the structure.
use_function_as_tool requires exact docstring matching as a parameter for verification. This is unusual and creates a poor UX, the LLM must somehow know or fetch the exact docstring before calling the tool. This pattern violates separation of concerns (tool discovery vs tool execution).
Parameter descriptions lack validation rules and constraints. 'similarity_threshold' has no guidance on valid range (0-1?). 'top_k' has no bounds. 'args_dict' and 'kwargs_dict' accept 'object' type with no schema for the nested values, making it impossible for LLMs to validate inputs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 9 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 36 | - | v1 |
Tool descriptions are overly long (list_tools_in_functions_dir: ~380 chars, use_function_as_tool: ~600 chars) and repetitive. Baseline for A+ tools is 50-200 chars. Verbose descriptions waste tokens and bury key intent.
Tool workflow not documented. The relationship between list_tools_in_functions_dir (discovery) and use_function_as_tool (execution) is implicit. No description explains: 'First call this to find available tools, then call use_function_as_tool with the results.' This violates the tool-chain pattern.
Error handling not specified. Both tools truncate output at 19,000 chars and catch exceptions, but the description does not say 'This tool returns function output or an error message.' LLMs need explicit guidance on error classification (retryable vs fatal).