Three tools with complete schemas and descriptions, but significant quality gaps. Tool names lack action verbs (calculate, advanced_math, expression_eval are weak). Descriptions are present but generic (avg ~80 chars, below 194-char baseline). Parameters have types and descriptions, but lack constraints and validation guidance. No output schema documented. Error handling is minimal, errors return plain text without recovery guidance. expression_eval has a critical security flaw (unsafe eval). No tool annotations (readOnlyHint, destructiveHint). Composition is reasonable but naming could be clearer.
执行高级数学函数(三角函数、对数、开方等)
执行基本数学运算(加减乘除、幂运算、取模等等)
计算数学表达式(如:2+3*4, sqrt(16)+5)
Tool names lack action verbs. 'calculate', 'advanced_math', 'expression_eval' do not follow verb_noun pattern (e.g., 'compute_arithmetic', 'compute_trigonometric', 'evaluate_expression'). LLMs rely on names to infer intent before reading descriptions.
expression_eval uses unsafe Function() eval on user input. Sanitization regex [^0-9+\-*/.() ] is insufficient, does not prevent exponentiation abuse (e.g., '9**9**9' causes DoS) or other injection vectors. Requires safe expression parser (e.g., math.js, expr-eval).
No output schema documented. Tool descriptions state what they return (e.g., 'calculation result') but do not specify field names, types, or structure. LLMs cannot plan downstream calls or extract data reliably.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Error handling returns plain text without recovery guidance. E.g., 'Division by zero' does not tell the LLM what to do next. Should follow pattern: 'Cannot divide by zero. Provide a non-zero divisor and retry.'
No tool annotations. Tools lack readOnlyHint (all three are read-only, safe to retry). Annotations help agents reason about idempotency and side effects.