Hold an agent's destructive tool calls until a person releases them. A safety mechanism that prevents automatic execution of destructive tools by requiring human approval before they run.
Claustrum defines 2 tools with minimal structure. Both tools accept function parameters ('execute', 'preview') that cannot be serialized to JSON Schema, these are JavaScript functions, not data. Input schemas are declared as generic 'object' type with no property definitions, violating JSON Schema best practices. Descriptions exist but are vague and do not explain WHEN to use each tool or what the LLM should expect. No output schema is documented. The 'read' tool description ('Register a read-only tool...') describes the registration API, not the tool's behavior from the agent's perspective. No error handling guidance. Tool names ('read', 'propose') are generic and do not follow verb_noun convention.
Register a destructive tool that is held for human approval before execution. Changes nothing when called and returns a proposal id the agent can poll.
Register a read-only tool that executes immediately without human approval. Runs now.
Input schemas are non-functional: 'execute' and 'preview' parameters are JavaScript functions, not JSON-serializable data. JSON Schema cannot represent function types. This breaks tool invocation for any MCP client.
No output schema documented. LLMs cannot plan downstream tool calls or extract structured data without knowing what fields are returned.
Tool names are generic ('read', 'propose') and do not follow verb_noun convention. 'read' could mean read a file, read a database, or read a proposal. Ambiguous names cause LLM confusion.
Descriptions describe the registration API, not tool behavior. 'Register a read-only tool that executes immediately' tells the developer how to call claustrum.install(), not what the tool does when invoked by an agent.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 23 | 2026-07-28+ | v2 |
No error handling guidance. If a tool fails, the LLM has no recovery path. No distinction between retryable and fatal errors.