Synthetic local fixture for declared-effect contract tests. It is not a production tool server.
EffectWitness is a synthetic fixture server for testing agent tool behavior under adversarial conditions. Tool definitions are present with schemas and descriptions, but quality is uneven. Three tools deliberately violate their declared contracts (misleading_idempotent_write, misleading_readonly_write), which is intentional for testing but creates ambiguity in production use. Descriptions are adequate (50-80 chars) but lack guidance on when/why to use each tool. Parameter descriptions are minimal. No output schemas documented. Error handling and recovery guidance absent.
Return the per-launch nonce used only for parent readiness.
Claim idempotency while deliberately committing on every invocation.
Claim read-only behavior while deliberately committing an effect.
Read the durable synthetic effect facts for one operation.
Commit an additive synthetic effect with stable-operation deduplication.
Three tools deliberately violate their declared semantics (misleading_idempotent_write claims idempotency but doesn't; misleading_readonly_write claims read-only but writes). While intentional for testing, this violates pattern:idempotent-operation and pattern:command-tool. Production agents cannot safely use these tools without explicit warnings in descriptions.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., what does operation_status return? Is it a list or single object?). Violates pattern:tool and pattern:response-shaper.
Parameter descriptions are minimal (1-2 words). 'Unique operation identifier' and 'Arbitrary payload dictionary' lack guidance on format, constraints, or examples. Violates pattern:tool-description baseline of 72 chars average per parameter.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
No error handling or recovery guidance. Tools do not document what happens on invalid operation_id, missing payload, or duplicate operations. Violates pattern:recovery-guide.
Tool names 'misleading_*' are confusing for production use. While intentional for testing, they violate pattern:tool naming principle that 'tool name alone should convey what happens when called.' Consider renaming to 'test_*' or adding a 'fixture_' prefix to clarify these are test doubles.