Scriba exposes 3 tools with complete input schemas and descriptions. All tools have verb-noun naming (transcribe, estimate, backends) and clear descriptions (50-100 chars). However, parameter descriptions lack actionable constraints (e.g., no format hints for 'language' code, no range for 'speakers'). Output schemas are documented as JSON strings but not formally specified. Error handling returns JSON with error type but no recovery guidance. The 'transcribe' tool is complex with 11 parameters, some interdependencies (diarize/speakers, output_tier/output_format) are undocumented. No tool annotations (readOnlyHint, destructiveHint) despite clear risk profiles.
List available transcription backends and their status.
Estimate cost and time for transcription without running it.
Transcribe an audio or video file.
Parameter constraints underdocumented. 'language' accepts any string but should specify ISO 639-1 format. 'speakers' has no min/max bounds. 'quality' enum is clear, but 'output_tier' and 'output_format' lack guidance on when to use each.
Parameter interdependencies not documented. 'diarize' and 'speakers' are related; 'output_tier' affects what 'output_format' options make sense. LLMs will pass invalid combinations without explicit guidance.
Output schema not formally specified. Tools return JSON strings, but the structure (fields, types, nesting) is not documented. LLMs cannot plan downstream parsing or extract required fields reliably.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Error handling lacks recovery guidance. Errors return {'error': str, 'type': typename} but do not suggest next steps. E.g., 'File not found' should suggest 'Check file_path or use list_files() to discover available media.'
Tool annotations missing. 'transcribe' is destructive (WRITE risk) and 'estimate' is read-only, but no readOnlyHint or destructiveHint annotations present in schema. Agents cannot infer safety profile.