An audio perception layer for agents — continuous-listening, event-gated, with a concept memory that grows through use.
Single tool 'record_event' has a complete input schema with 10 parameters, all typed and described. Description is detailed (180+ chars) and explains the domain-specific semantics (FAMILY-LEVEL vs INSTANCE-LEVEL, specialist tracking, audit trail). However, no output schema is documented, and the description lacks actionable guidance on when/why to call the tool or what it returns. Parameter descriptions are domain-specific but could be more concise for LLM parsing. No error handling guidance provided.
Record a classified event and extend concept memory. - label is FAMILY-LEVEL canonical category (never instance detail). - subclass is INSTANCE-LEVEL detail per event. - overlap_group_id ties co-present source events together. - evidence is short prose citation of features + specialist outputs. - specialist_id is the id of the specialist whose invocation produced the subclass (e.g. `"birdnet"` when subclass is a species name from BirdNET, `"whisper"` when subclass is a transcript snippet). Persisted to `events.specialist_id` so promotion can auto-attach a `subclass_specialist_id` when one specialist consistently enriches a concept's events. Pass `None` when no specialist was involved (pure memory match, heuristic label, user teach). Full multi-tool audit trail still lives in `event_traces.trace_json`.
No output schema documented. LLMs cannot plan downstream calls or extract return values without knowing what record_event returns (success confirmation, event ID, updated memory state, etc.).
No error handling guidance. Tool description does not explain failure modes (invalid label, confidence out of range, database errors) or recovery steps. LLMs will not know how to retry or self-correct.
Parameter 't_end_s' defaults to null but description does not clarify semantics: does null mean 'unbounded', 'same as t_start_s', or 'infer from audio duration'? Ambiguous defaults invite misuse.
Tool description is domain-expert prose (specialist_id, overlap_group_id, subclass semantics) but lacks LLM-friendly guidance: WHEN should an agent call this? What does 'awaiting_review' do? How does it interact with the concept memory?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Parameter 'confidence' has no range constraint documented (0 - 1? 0 - 100?). LLMs will guess, potentially passing invalid values. JSON Schema should include minimum/maximum.