Single tool 'youtube-info' has a basic description but lacks depth and LLM-optimization guidance. Input schema is present with types and defaults, but parameter descriptions are minimal (under 50 chars each). No output schema is documented, LLMs cannot predict the response structure. Error handling returns generic error objects without recovery guidance. Tool name lacks action verb prefix (should be 'get_youtube_info'). No tool annotations (readOnlyHint, etc.) despite being read-only.
Fetch YouTube video metadata and transcripts
Tool name 'youtube-info' does not start with action verb. Should be 'get_youtube_info' to signal intent and follow verb_noun convention.
No output schema documented. LLMs cannot predict response structure (metadata fields, transcript format, error object shape). Must document: {metadata: {title, description, author, publish_date, length, views, keywords, channel_url, thumbnail}, transcript: string | {error: string}}.
Parameter descriptions are too brief (<50 chars). 'The YouTube video ID' and 'The language code for the transcript' lack context on format, constraints, or when to use fallback behavior. Should explain: video_id format (11-char alphanumeric), language code format (ISO 639-1), and that 'en' falls back to 'ar' if unavailable.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
Error handling returns bare error objects ({error: string}) without recovery guidance. When transcript fails, LLM has no hint to retry with different language or check video_id validity. Should return: {error: string, recovery_hint: string, retryable: boolean}.
No tool annotations. Tool is read-only but lacks readOnlyHint annotation. This prevents agents from understanding safety guarantees and optimizing caching/retry logic.