A multi-server MCP agent that integrates multiple MCP servers (Calculator, Document Search, DuckDuckGo Search, Gmail/Google Sheets) with an agentic loop for task execution
This server exhibits pervasive quality gaps across naming, descriptions, and schemas. Of 32 tools, most lack parameter descriptions entirely. Tool names are inconsistent (verb_noun vs bare nouns). Descriptions are often trivial or missing (e.g., 'mine' = 'special mining tool'). Input schemas exist but many parameters are undescribed. No output schemas documented. Error handling is absent. Security concerns: run_python_sandbox and run_shell_command expose dangerous operations with minimal validation. The server reads like a demo/prototype, not production-grade tooling.
Add two numbers. Usage: add|input={"a": 10, "b": 5}
Compute the cube root of a number. Usage: cbrt|a=27
Compute cosine of an angle in radians. Usage: cos|a=1
Create a Google Sheet with the given content and return its link
Create a 100x100 thumbnail from image. Usage: create_thumbnail|image_path="example.jpg"
Debug an error message
Divide one number by another. Usage: divide|a=20|b=4
Dangerous code execution tools (run_python_sandbox, run_shell_command) lack input validation, sandboxing, and error guidance. No permission gates or audit trails. Agents can execute arbitrary code.
Most tools (21/32) lack parameter descriptions. LLMs cannot infer what 'name', 'code', 'error', 'query' mean without explicit guidance. Violates pattern:tool-description baseline (100% of A+ tools have param descriptions).
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. Violates baseline: 100% of A+ tools have documented return types.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Convert PDF file content to markdown format. Usage: extract_pdf|input={"file_path": "documents/dlf.pdf"}
Extract and convert webpage content to markdown. Usage: extract_webpage|input={"url": "https://example.com"}
Compute the factorial of a number. Usage: factorial|a=5
Fetch and parse content from a webpage URL.
Fetch the current F1 standings
Generate first n Fibonacci numbers. Usage: fibonacci_numbers|n=10
Get a personalized greeting
Get unread emails from Gmail
Sum exponentials of int list. Usage: int_list_to_exponential_sum|input={"numbers": [65, 66, 67]}
special mining tool
Multiply two integers. Usage: multiply|a=6|b=7
Compute a raised to the power of b. Usage: power|a=2|b=10
Compute the remainder of a divided by b. Usage: remainder|a=17|b=4
Please review this code
Run math code in Python sandbox. Usage: run_python_sandbox|input={"code": "result = math.sqrt(49)"}
Run a safe shell command. Usage: run_shell_command|input={"command": "ls"}
Run safe SELECT-only SQL query. Usage: run_sql_query|input={"code": "SELECT * FROM users LIMIT 5"}
Search DuckDuckGo and return formatted results.
Search indexed documents for relevant content. Usage: search_documents|query="india Current GDP"
Send an email using Gmail API
Compute sine of an angle in radians. Usage: sin|a=1
Compute the square root of a number. Usage: sqrt|input={"a": 49}
Convert characters to ASCII values. Usage: strings_to_chars_to_int|input={"string": "INDIA"}
Subtract one number from another. Usage: subtract|a=10|b=3
Compute tangent of an angle in radians. Usage: tan|a=1
Tool 'mine' has trivial description ('special mining tool') and ambiguous name. Does not convey intent. Violates naming clarity baseline.
No error handling or recovery guidance. Tools fail silently or return raw exceptions. LLMs cannot self-correct or retry intelligently. Violates pattern:recovery-guide.