Fast, minimal YouTube watch engine for AI agents — clean transcripts, no API key required.
Four well-named tools with clear, actionable descriptions (avg 156 chars). All tools have input schemas with typed parameters and descriptions. Tool names follow verb_noun pattern (get_*, search_*). Descriptions explain WHAT, WHEN, and output strategy (e.g., 'Returns file path plus preview, NOT full text'). Output schemas are documented in docstrings. Key gaps: no error handling guidance, no parameter constraints (enums/ranges), no security/permission declarations, output schemas not formally specified in JSON Schema format.
Cheap probe of a YouTube video: title, duration, chapters, caption availability. Call this first to decide whether to fetch a transcript and how to read it.
Return transcript text for the time range [start, end) in seconds.
Fetch a cleaned transcript and write it to a local file. Returns the file path plus a short preview and stats — NOT the full text. Read the file, or use search_transcript / get_segment, to pull detail on demand.
Find cues matching a query. Returns timestamped snippets only. Use for long videos: locate the relevant moments without loading everything.
Output schemas not formally documented in JSON Schema. Docstrings describe return dicts but no structured schema definition visible in tool registration.
No error handling guidance. Tools lack descriptions of failure modes, recovery steps, or actionable error messages. E.g., what happens if URL is invalid or video has no captions?
Parameter 'lang' lacks constraints. Accepts comma-separated codes but no validation, format spec, or enum of supported languages documented.
No pagination or result limits documented. search_transcript returns list but no limit, offset, or total_count fields visible. Long videos could return unbounded results.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). get_transcript writes to disk but no destructiveHint declared; get_info is read-only but no readOnlyHint.