Four tools with complete JSON schemas and descriptions. Naming follows verb_noun pattern (browse_, get_, mutate_, delete_). Descriptions are adequate (50-200 chars) but lack LLM-optimized guidance on when to use each tool vs. alternatives. Parameters are well-typed with enums and constraints (e.g., transcript_block enum, limit bounds). Critical gap: no output schemas documented, LLMs cannot predict response structure for planning. Error handling and recovery guidance absent. Destructive tool (delete_recording) requires explicit confirmation, which is good, but no dry-run or undo patterns for mutate_recording.
Page through Plaud recordings with optional filters.
Permanently and irreversibly delete a recording.
Fetch full detail for one recording. Transcripts are returned a page of utterances at a time — check transcript_truncated and follow transcript_next_after to read the rest.
Apply a reversible state change to one or more recordings: rename, trash, restore, or move.
No output schemas documented. LLMs cannot predict response structure (fields, types, pagination tokens) for downstream planning. browse_recordings and get_recording return paginated results but response format is implicit.
mutate_recording combines four distinct actions (rename, trash, restore, move) in one tool. LLMs must reason about which action to take; splitting into separate tools (rename_recording, trash_recording, restore_recording, move_recording) would improve clarity and reduce parameter confusion.
Parameter descriptions lack actionable constraints. 'folder_id' says 'Folder ID (from `list_folders`)' but list_folders is not exposed as a tool. 'query' parameter has no length/format guidance. 'since' and 'until' say 'ISO 8601' but do not specify timezone handling or whether times are inclusive/exclusive.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | <=2025-11-25 | v2 |
No error recovery guidance. If a recording is not found, the tool should suggest alternatives (e.g., 'Recording not found. Try browse_recordings() to find the correct ID'). If mutate_recording fails due to invalid folder_id, no hint on how to discover valid folders.
mutate_recording's 'action' parameter is required but 'recording_id' and 'recording_ids' are both optional with no mutual-exclusivity constraint documented. LLMs may pass both or neither, causing ambiguous failures.