Single tool 'search_word' has a basic schema with Zod types and descriptions, but critical gaps undermine production readiness. Tool description is minimal (12 chars: '단어를 검색합니다.'), far below the 50-200 char LLM-optimized baseline. Parameters lack actionable constraints (no min/max for numeric start/num, no enum for query format). Output schema is undocumented, LLMs cannot predict response structure. Error handling returns raw JSON without recovery guidance. No pagination limits stated despite API returning potentially large result sets. Tool does not follow verb_noun naming (search_word is acceptable but description is too terse to guide LLM selection). Overall, this is a minimal wrapper around a Korean dictionary API with insufficient metadata for reliable agent use.
단어를 검색합니다.
Tool description is 12 characters ('단어를 검색합니다.'), far below 50-200 char LLM-optimized baseline. LLMs cannot determine when to call this tool vs. alternatives or what it returns.
Output schema is completely undocumented. Tool returns JSON from API (StdDictResponse with channel.item array) but LLMs have no visibility into response structure, field names, or types. Prevents downstream tool chaining.
Numeric parameters 'start' and 'num' lack constraints (min/max). LLMs can pass negative, zero, or absurdly large values. No pagination limit enforced, API could return thousands of items, exhausting context window.
Error handling returns raw error messages without recovery guidance. E.g., 'API Error: ...' or 'JSON 파싱 오류' tells LLM nothing about whether to retry, call a different tool, or ask the user.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
Parameter 'query' is optional but tool throws 'Error: 검색어를 입력해주세요.' (search term required) at runtime. Schema should mark query as required, not optional, to prevent LLM from omitting it.