Programmable worlds for artificial intelligence — a world simulator and multi-agent governance platform with dynamic world simulation, tool-use observability, and MCP server integration
Volnix provides 4 negotiation tools with basic schemas and descriptions. All tools have input schemas with required parameters and descriptions. However, descriptions are minimal (20-60 chars), lacking context on WHEN to use each tool, prerequisites, or what distinguishes them. Parameter descriptions are present but generic. No output schemas documented. No error handling guidance. Tools lack idempotency hints despite being state-modifying (WRITE risk). No tool annotations (destructiveHint, idempotentHint). The 'message' parameter across all tools is vague, unclear if it's mandatory, what format is expected, or how it affects negotiation state.
Close the deal. Accept the other party's current terms.
Counter-offer on an open deal. Specify terms in the message.
Put an opening proposal on the table. You MUST specify terms in the message.
Walk away from the negotiation.
Descriptions are too brief (20-60 chars) and lack context. 'Put an opening proposal on the table' does not explain WHEN to call this vs negotiate_counter, what 'terms in the message' means, or what the tool returns.
No output schemas documented. LLMs cannot plan downstream calls or extract negotiation state (e.g., current offer, counterparty response, deal status) without knowing what these tools return.
'message' parameter is optional and vague. Description says 'Optional one-sentence in-character framing' but does not explain if it affects negotiation logic, format constraints, or whether it is required for the tool to function.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
All tools are marked WRITE risk but lack error handling guidance. No documentation on what happens if deal_id is invalid, if negotiation is already closed, or how to recover from failed operations.
No tool annotations (destructiveHint, idempotentHint). LLMs cannot determine if negotiate_accept is idempotent (safe to retry) or if calling it twice closes the deal twice.