A multi-server MCP implementation with Calculator, Document Search, Web Search, Google Workspace, and Telegram integration capabilities using SSE transport
This server has 29 tools with severe definition quality gaps. Most tools lack parameter descriptions entirely (e.g., subtract, multiply, divide, power, cbrt, factorial, remainder, sin, cos, tan, mine, fibonacci_numbers all have parameters with no descriptions). Tool descriptions are often trivial or include usage examples that violate best practices (e.g., 'Add two numbers. Usage: add|input={"a": 10, "b": 5}'). Input schemas are present but inconsistent: some tools wrap parameters in an 'input' object (add, sqrt, strings_to_chars_to_int) while others expose parameters directly (subtract, multiply). No parameter descriptions exist for any tool. Error handling is absent, no guidance on retryability, user-fixable errors, or recovery paths. Security-critical tools like run_python_sandbox, run_shell_command, and send_email lack permission gates, input validation descriptions, or warnings about destructive operations. Output schemas are undocumented. The 'mine' tool has a cryptic description ('special mining tool') with no explanation of its purpose. Tools like create_thumbnail, extract_webpage, extract_pdf, and search lack descriptions of their output structure. No tool declares idempotency or destructiveness hints.
Add two numbers. Usage: add|input={"a": 10, "b": 5}
Append data to a Google Sheet. If the data looks like F1 standings, it will be automatically formatted. Usage: append_to_sheet|input={"spreadsheet_id": "...", "range": "...", "values": [[...]]}
Compute the cube root of a number. Usage: cbrt|a=27
Compute cosine of an angle in radians. Usage: cos|a=1
Create a new Google Sheet. Usage: create_sheet|input={"title": "My Sheet"}
Create a 100x100 thumbnail from image. Usage: create_thumbnail|image_path="example.jpg"
Divide one number by another. Usage: divide|a=20|b=4
Parameter descriptions completely missing. 24 of 29 tools have parameters with no descriptions (subtract, multiply, divide, power, cbrt, factorial, remainder, sin, cos, tan, fibonacci_numbers, etc.). LLMs cannot infer parameter meaning from names alone, a parameter 'a' could be angle, amount, or array index.
Tool descriptions include usage examples with literal parameter values (e.g., 'add|input={"a": 10, "b": 5}'). LLMs reuse example values literally rather than adapting to context, causing failures. Descriptions should state WHAT the tool does, not HOW to call it with examples.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | 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.
Generate first n Fibonacci numbers. Usage: fibonacci_numbers|n=10
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
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. Usage: send_email|input={"to": "...", "subject": "...", "body": "..."}
Share a file with a user via email. Usage: share_file_via_email|input={"file_id": "...", "email": "..."}
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
Security-critical tools lack permission gates and input validation guidance. run_python_sandbox, run_shell_command, send_email, and create_sheet have no descriptions of what permissions they require, no warnings about destructive operations, and no input sanitization guidance. Agents could be tricked into executing arbitrary code or sending unauthorized emails.
Inconsistent parameter wrapping. Some tools wrap parameters in an 'input' object (add, sqrt, strings_to_chars_to_int, int_list_to_exponential_sum, run_python_sandbox, run_shell_command, run_sql_query, extract_webpage, extract_pdf, send_email, create_sheet, append_to_sheet, share_file_via_email) while others expose parameters directly (subtract, multiply, divide, power, cbrt, factorial, remainder, sin, cos, tan, fibonacci_numbers, create_thumbnail, search_documents, search, fetch_content). This inconsistency forces LLMs to reason about parameter structure for each tool, increasing errors.
Cryptic tool name 'mine' with description 'special mining tool' provides no actionable information. LLMs cannot determine when to call this tool or what it does. The implementation (a - b - b) suggests it computes a difference, but the name and description do not convey this.