Two tools with basic schemas and descriptions, but significant gaps in LLM-optimization and error handling. Tool names lack action verbs (getCurrentTime, convertTimezone are descriptive but not verb-first). Descriptions are present but minimal (10-30 chars), below the 50-200 char baseline for LLM optimization. Parameter descriptions exist but lack constraints, ranges, or format guidance. No output schema documentation. Error handling in timeService.ts returns plain text error strings rather than structured recovery guidance. No tool annotations (readOnlyHint present in metadata but not in schema). Schemas use Zod but lack explicit type declarations visible in registration.
在不同时区之间转换时间
获取当前时间,可指定时区
Tool names do not start with action verbs. 'getCurrentTime' and 'convertTimezone' are descriptive but lack the verb_noun pattern (get_current_time, convert_timezone). LLMs rely on verb-first naming to infer intent.
Descriptions are too short (10-30 chars). Baseline is 50-200 chars. 'Get current time, can specify timezone' and 'Convert time between timezones' lack context for LLM selection, prerequisites, or when to use vs similar tools.
No output schema documented. LLMs cannot plan downstream calls or extract structured data. timeService.ts returns plain text strings; tool handlers wrap in {content: [{type: 'text', text: ...}]} but this structure is not declared in tool definitions.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | <=2025-11-25 | v2 |
Parameter descriptions lack format/constraint guidance. 'timezone' says 'e.g. Asia/Shanghai' (example in description, anti-pattern). No mention of valid IANA timezone format, length limits, or what happens with invalid input. 'datetime' lacks ISO 8601 format specification.
Error handling returns unstructured text ('时区转换错误: ...', 'Invalid date format'). No recovery guidance. LLM cannot determine if error is retryable, user-fixable, or fatal. No actionable next steps.