Noema provides 6 tools with reasonable naming conventions (verb_noun pattern) and basic descriptions. All tools have input schemas with type definitions. However, descriptions are inconsistent in depth and completeness. Some parameter descriptions are minimal (e.g., 'Trace ID' lacks context on format or how to obtain one). Output schemas are not documented in the visible code. Error handling guidance is absent. The tool interface matches the domain well (trace management with lineage), but lacks production-grade polish in parameter validation hints, dependency documentation, and recovery guidance.
Append content to an existing trace's body
Get the cortex identity (name, id, cortex_id)
Create a new trace with title, type, body, optional author, tags, and derivedFrom
Search traces using hybrid, semantic, or lexical search
Get the lineage (derivedFrom and derivedBy) for a trace
Update trace title and/or metadata
Output schemas not documented. No visible schema definitions for what these tools return (fields, types, structure). LLMs cannot plan downstream calls without knowing response structure.
Error handling guidance absent. No descriptions of what errors can occur, when they're retryable, or what to do next. E.g., append_trace, update_trace, and create_trace (WRITE operations) should explicitly state 'Returns error if trace not found' or similar.
Parameter descriptions lack constraint details. 'Trace ID' (trace_lineage, append_trace, update_trace) does not specify format, length, or where to find one. 'Search mode' enum is documented but not the expected format of 'query' parameter.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 76 | 2026-07-28+ | v2 |
No pagination or result limits documented. search_traces does not specify if results are paginated, what the maximum result count is, or how to handle large result sets.
Dependency documentation missing. No guidance on required prerequisites (e.g., 'Call cortex_identity first to validate connection') or the relationship between tools (e.g., create_trace can reference existing traces via derived_from).
create_trace has optional parameters (author, tags, derived_from) but does not document default behavior when omitted. Does derived_from accept multiple IDs as comma-separated, or array JSON?
update_trace title is optional but description does not clarify: Can both title and other metadata be updated in one call? What metadata fields are supported?