MCP server that allows Claude Desktop to download videos from public URLs and upload them to YouTube.
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation, error handling, and output schema clarity. check_auth_status and authenticate lack input parameter descriptions (empty objects). upload_from_url has reasonable parameter coverage but missing output schema documentation. No error recovery guidance, no idempotency hints, and descriptions are generic (10-50 chars). Tool composition is reasonable but lacks chaining metadata. No tool annotations (readOnlyHint, destructiveHint). Baseline: 549 production tools average 194 chars in description and 100% have param descriptions, this server has ~40 chars avg and 0% param descriptions for empty inputs.
Authenticate with YouTube using OAuth2
Check if the user is authenticated with YouTube
Download a video from URL and upload it to YouTube
Empty input schemas for check_auth_status and authenticate lack parameter descriptions.
No output schema documented for any tool. Rubric requires: 'Document the output schema. LLMs need to know what fields to expect.' check_auth_status returns AuthResponse (authenticated: bool, message: str) but this is not visible in tool definition. authenticate returns Dict[str, Any], completely opaque to LLM.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). check_auth_status is read-only but not marked. authenticate and upload_from_url are destructive/write operations but lack destructiveHint annotation. Agents cannot distinguish safe from risky tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Error handling lacks recovery guidance. authenticate() returns {'success': False, 'message': '...'} but does not tell LLM what to do next (retry? ask user? check env vars?). Rubric: 'Error responses must tell the LLM what to do next.'
upload_from_url accepts 'url' parameter but no validation or format constraint documented. Rubric: 'Describe the expected format, range, and allowed values directly in the parameter description.' Should specify: valid URL schemes (http/https), max file size, supported video formats.