world-model-mcp
@putervision/world-model-mcp
@putervision/world-model-mcp is a zero-infrastructure, deterministic Model Context Protocol (MCP) server that maintains a persistent 3D/2D spatial world model for AI agents. It bridges perception (@putervision/vision-memory-mcp) and reasoning/action (@putervision/state-memory-mcp) with durable entity tracking, object permanence with confidence decay, movement simulation with AABB collision avoidance, expected view frustum projection, and Playwright 3D game automation.
๐ Official Documentation & Website: putervision.com
โก Quick Start & Installation
Prerequisites: Node.js >= 18.18.0
# 1. Install globally
npm install -g @putervision/world-model-mcp
# 2. Navigate to your project directory
cd your-project
# 3. Initialize world-model-mcp
# Creates .world-model-mcp/, updates .gitignore, registers project,
# and scaffolds IDE instructions and MCP configs for Cursor, Claude, VS Code, Windsurf, etc.
world-model-mcp init
# Done! Restart your IDE or Agent Manager to activate.Alternative Options
# Run directly via binary (after global install)
world-model-mcp run
# Launch interactive 3D WebGL Scene Visualizer
world-model-mcp view
# Display database metrics and permanence confidence stats
world-model-mcp statsRelated MCP server: persistent-kb-mcp
๐ Key Highlights
๐ Deterministic 3D/2D Spatial Memory: Zero LLM in the loop for spatial indexing; deterministic SQLite WAL queries with FTS5 search and 3D Euclidean proximity radius lookups.
โก 15 Production-Grade Consolidated MCP Tools: Full CRUD, topological spatial graphs (
on,inside,contains,near), ray-AABB occlusion frustum culling, waypoint navigation, and time-travel rollback.โณ Object Permanence & Decay: Entities remain in persistent memory even when out of view, with configurable exponential confidence decay ($C = C_0 \cdot e^{-\lambda t}$) and status lifecycles (
activeโhiddenโlost).๐ Collision & Movement Simulation: Predicts entity displacement trajectories, detects AABB obstacle collisions, and computes obstacle-avoiding navigation waypoints before actions execute.
๐ฎ Playwright Game Automation: Generates timed WASD / Arrow keyboard hold sequences (
KeyW for 450ms,ArrowLeft for 290ms) and 3Dโ2D coordinate screen projections.๐ค Multi-Agent Spatial Blackboard: Topic-based coordination with TTL, mutex locks, and collision intent alerts across parallel subagents.
๐ก๏ธ Spatial Spec-Driven Development (Spatial SDD): Physical design contract baseline registration, live verification (clearance, bounds, containment), and cryptographic SHA-256 evidence bundles.
๐จ Interactive 3D WebGL Visualizer: Browser-based Three.js 3D viewport rendering active entities, orientation axes, frustum cones, and topological links (
world-model-mcp view).๐ 100% Local & Private: All spatial entities, relations, and history stay inside
.world-model-mcp/in your workspace.
๐ ๏ธ MCP Tool Suite
@putervision/world-model-mcp provides 15 production-grade consolidated MCP tools organized across 5 core workflow domains:
Spatial Memory & Search:
update_entity(entity CRUD, 3D bounds, properties, confidence),query_entities(FTS5 search, proximity radius, status/tags filter, history lookup),set_relation(topological graph links:on,inside,near,contains),get_spatial_map(JSON, GeoJSON, glTF 2.0, OBJ, summary).Simulation & Vision Integration:
simulate_movement(displacement prediction, AABB collision checks, waypoint routing),ingest_observation(vision detection ingestion, Euclidean re-identification, frustum reconciliation),get_expected_view(observer pose, horizontal FOV cone, ray-AABB occlusion).Goal & State Integration:
link_to_goal(associate entities/regions with State Memory tasks, extract spatial context slices),record_outcome(record execution results, position shifts, property changes, destruction).Spatial SDD & Proofs:
manage_spatial_spec(register physical clearance/containment contracts, live verification scoring),create_evidence_pack(cryptographic SHA-256 evidence bundles linking spatial proofs to task nodes).Multi-Agent, Replay & Automation:
use_spatial_blackboard(topic board, mutex claim/release, intent conflicts),manage_snapshot(checkpoints, snapshot diffing, time-travel undo),wait_for_spatial_state(async polling for target spatial condition),generate_game_inputs(Playwright WASD hold timings, 3Dโ2D screen ray projection).
๐ For complete parameter specifications, return schemas, and example payloads, see the API Reference Guide and Database Schema.
๐ Architecture & Spatial Memory Lifecycle
Perception / Vision Detection
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Perception Ingestion & Re-ID โ โโโถ ingest_observation(reconcile: true)
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Durable Entity & Permanence โ โโโถ update_entity(...)
โ (3D Bounding Boxes, Decay) โ โโโถ set_relation(relation: "on"|"inside")
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Simulation & Waypoint Routing โ โโโถ simulate_movement(mode: "navigate")
โ (AABB Collision Avoidance) โ โโโถ get_expected_view(fov: 90)
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Playwright & Action Execution โ โโโถ generate_game_inputs(...)
โ (WASD Sequences, Screen Rays) โ โโโถ record_outcome(action_type: "move")
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Spatial SDD & Cryptographic โ โโโถ manage_spatial_spec(action: "verify")
โ Evidence Bundling to Tasks โ โโโถ create_evidence_pack(...)
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Persistent SQLite Engine โ โโโถ .world-model-mcp/world.db (WAL mode)
โ Append-Only History Ledger โ โโโถ SHA-256 Cryptographic Audit Chain
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ๐ Documentation Directory
Explore dedicated guides and deep dives in the docs/ directory:
Guide | Description |
High-signal architectural overview, module inventory, data flows, and design decisions. | |
PuterVision Autonomous Triad interaction, 3D WebGL scene visualizer, and evidence packs. | |
Object Permanence ($C = C_0 \cdot e^{-\lambda t}$), Confidence Decay, Frustum Projection, and Spatial SDD. | |
โ๏ธ Configuration & IDE Setup | Auto-Initialization details, Environment Variables, and Editor Configs (Cursor, VS Code, Claude, Windsurf). |
๐ ๏ธ CLI Command Reference | CLI flags ( |
Complete reference for all 15 Consolidated MCP Tools, legacy tool mapping, and parameter examples. | |
๐๏ธ Database Schema | SQLite tables ( |
Autonomous 3D browser arena with Three.js bridge diagnostics ( | |
๐งญ Examples & Tutorials | Deep-dive examples: Spatial Navigation, Perception Reconciliation, and Multi-Agent Blackboard. |
๐ Agent Playbook: 5-Step Canonical Workflow
When an autonomous AI agent enters a repository with world-model-mcp:
1. Orient & Explore โโโถ get_spatial_map(format: "summary") + get_expected_view(fov: 90)
2. Query & Locate โโโถ query_entities(query: "chest", radius: 15) + query_entities(entity_id: "...")
3. Plan & Simulate โโโถ simulate_movement(mode: "navigate") + manage_spatial_spec(action: "verify")
4. Execute & Ingest โโโถ generate_game_inputs(...) + ingest_observation(reconcile: true)
5. Record & Evidence โโโถ record_outcome(...) + create_evidence_pack(task_id: "...")๐งช Testing
# Run full unit, integration, and geometry stress test suite across 47 test files (206 tests)
npm test
# Run multi-Node matrix test suite across Node.js 18, 20, and 22
npm run test:matrix
# Run 3D geometry, projection, and Playwright game loop tests
npm run test:3dโ๏ธ License & Disclaimers
Developed and maintained by PuterVision. Released under the MIT License.
Local Storage Guarantee: All spatial coordinates, bounding volumes, and entity history remain 100% local in your workspace. No telemetry or project data is ever transmitted.
Trademarks & Non-Affiliation: Product names (Cursor, Claude Code, Gemini, Windsurf, VS Code, GitHub, SQLite, Three.js, Playwright) are property of their respective owners and used solely for compatibility identification.
Available Tools
15 toolscreate_evidence_packA
Package entity positions, observation reconciliations, and snapshot states into an immutable, SHA-256 hashed cryptographic evidence pack for compliance and state-memory task verification.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Optional project identifier | |
| task_id | No | Primary state-memory task ID linked to this proof | |
| entity_ids | No | Entity IDs included in evidence pack | |
| observation_ids | No | Observation IDs included in evidence pack | |
| after_snapshot_id | No | Snapshot ID after action execution | |
| before_snapshot_id | No | Snapshot ID before action execution | |
| linked_state_memory_nodes | No | Linked state-memory node IDs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only signal that this is not read-only, not idempotent, and not destructive; the description adds the important behavioral facts that the result is immutable and protected by a SHA-256 hash. It does not explain side effects on source entities or output details, but it meaningfully exceeds the annotations and does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense, well-structured sentence with no filler. It front-loads what the tool packages, then the key properties (immutable, SHA-256 hashed), then the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a seven-parameter tool with nested input and no output schema, the description gives a solid high-level view but does not state what the tool returns or any constraints across parameters (e.g., whether before/after snapshots must be paired). Schema descriptions cover individual fields, but the overall invocation contract is only partially specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All seven parameters already have schema descriptions (100% coverage), so a baseline of 3 applies. The description's high-level categories loosely map to entity_ids, observation_ids, and snapshot IDs but add no field-level semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Package') applied to a specific resource (cryptographic evidence pack) and enumerates the inputs: entity positions, observation reconciliations, and snapshot states. It also names the intended purpose (compliance and state-memory task verification), which distinguishes it from the sibling data-management tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended context is explicit: evidence for compliance and state-memory task verification, implying use after snapshots/observations are collected. It does not name alternatives or give when-not-to-use exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_game_inputsBRead-onlyIdempotent
Generate Playwright MCP automation inputs (WASD, mouse-look, clicks) or project/unproject 3D entity coordinates and screen pixels.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Action to perform (default: generate_inputs) | |
| camera | No | Camera state for projection / click-to-move | |
| project | No | Optional project identifier | |
| screen_x | No | Screen pixel X coordinate for screen_to_world unprojection | |
| screen_y | No | Screen pixel Y coordinate for screen_to_world unprojection | |
| viewport | No | Browser viewport dimensions | |
| direction | No | Projection direction for projection mode | |
| entity_id | No | Player or target entity ID | |
| waypoints | No | Optional intermediate navigation waypoints | |
| output_format | No | Output format (default: playwright_mcp) | |
| world_position | No | 3D world position for projection or starting point | |
| control_profile | No | Game control key bindings and physical parameters | |
| target_position | No | Destination 3D coordinates | |
| current_position | No | Starting 3D coordinates (auto-resolved from entity_id if omitted) | |
| ground_elevation | No | Ground plane elevation Y for raycast intercept (default: 0) | |
| target_entity_id | No | Target destination entity ID | |
| current_orientation | No | Starting orientation angles |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint and destructiveHint=false, and the description does not contradict them. It adds modest context that outputs target Playwright MCP automation or projections, but it stops short of stating that no game state is modified or that the tool only produces action payloads rather than executing them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler and is front-loaded with the primary generation purpose. However, for a tool with 17 parameters and three action modes, the compressed wording may sacrifice clarity by omitting mode-specific context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is richly documented, but the description provides no walkthrough of the three action modes, no required parameter combinations, andโsince there is no output schemaโno indication of what the returned Playwright inputs look like. It is adequate only because the schema descriptions fill most gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already documents all 17 parameters and their defaults. The description adds only a coarse map to parameter groups (WASD/mouse-look/clicks to control_profile, coordinates to projection parameters), which is useful but not enough to add much value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete operation ('Generate Playwright MCP automation inputs') plus a second coordinate-conversion mode ('project/unproject 3D entity coordinates and screen pixels'). It is specific about the resource and output medium, but it does not explicitly differentiate from siblings such as simulate_movement or get_expected_view, and the two modes are folded into one sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to choose generate_game_inputs over simulate_movement or get_expected_view, nor about when to use generate_inputs vs project_screen vs unproject_ray. The tool's role is only implied by the verb 'generate', so an agent must infer selection criteria from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_expected_viewARead-onlyIdempotent
Calculate what entities should be visible from an observer's pose and field of view frustum cone.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Optional project identifier | |
| fov_degrees | No | Horizontal field of view in degrees (default: 90) | |
| max_distance | No | Maximum view distance in units (default: 100) | |
| observer_position | Yes | Observer 3D coordinates | |
| observer_orientation | No | Observer orientation (yaw determines heading direction) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows the tool is safe. The description adds the notion of a 'frustum cone' which clarifies the geometric calculation, but does not explain what output is returned (e.g., a list of entity IDs or count). It also does not mention any assumptions about entity position representation or coordinate system. Since annotations cover the mutation safety, this is a pass with minor gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and directly states the tool's purpose. It is front-loaded with the core concept and uses domain-specific terms that are likely familiar to the target agent. No filler or redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a read-only calculation with no output schema, the description is fairly complete for understanding its inputs and purpose. It lacks explicit details on return format or any edge cases, but with comprehensive parameter schemas and safe annotations, an agent can likely call it correctly. The breath of sibling tools suggests it's part of a simulation context, and the description fits in well. A minor gap is the absence of what 'visible' means in terms of occlusion or whether entities behind obstacles are considered, but this is acceptable for a 5-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter has a description in the schema. The description adds a hint about the frustum cone but does not elaborate on how parameters like fov_degrees or max_distance interact. The description effectively restates the purpose without adding new parameter-level detail. Baseline 3 is appropriate since schema is comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: calculating which entities should be visible from an observer's pose and field of view. It specifies the verb 'calculate', the resource 'entities', and the context 'observer's pose and field of view frustum cone'. It also clearly differs from sibling tools like query_entities or get_spatial_map, which are about querying or retrieving spatial info, not computing visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use case: when you need to know what an observer can see given a pose and frustum. It does not explicitly contrast with alternatives like query_entities, though the purpose is clear enough that an agent could infer it. There is no mention of when not to use it, but the context is sufficiently specific to avoid major confusion. This is adequate but lacks explicit routing to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spatial_mapBRead-onlyIdempotent
Return a structured spatial layout, topological graph, 3D asset export (gltf/obj), or high-level environment summary of the known world.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Export or view format (default: json, use "summary" for high-level environment overview) | |
| project | No | Optional project identifier | |
| region_id | No | Optional region ID to filter | |
| min_confidence | No | Filter out entities below confidence threshold |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that the tool can return 3D exports and summaries, but this largely restates the format enum and does not reveal extra behaviors such as cost, size limits, or how filtering interacts with exports.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that communicates the core purpose quickly. It is slightly dense because it compresses many output types into one list, but it contains no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with zero required parameters and a fully described schema, the description is close to adequate. However, there is no output schema and no clarification of the less obvious formats like 'joint' or 'spatial_vlm', leaving some ambiguity about what the agent will receive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline of 3 applies. The description mentions gltf/obj and summary formats, which mirrors the schema's format enum, and adds no new parameter meaning beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource ('known world') and the action ('Return'), and it enumerates the main output forms: spatial layout, topological graph, 3D asset export, and environment summary. It does not explicitly contrast itself with sibling tools like get_expected_view or query_entities, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a spatial layout, graph, 3D export, or summary of the world is needed. However, it gives no explicit when-not-to-use guidance and does not name alternatives, so an agent gets only implied selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_observationA
Merge structured vision perception detections into the world model (re-identifying existing objects and boosting confidence), or reconcile observed state against the expected frustum view.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Optional project identifier | |
| reconcile | No | If true, also performs/returns frustum reconciliation analysis (confirmed, new, displaced, missing) | |
| detections | Yes | List of detected objects in the frame | |
| field_of_view | No | ||
| observer_pose | No | Position and orientation of the camera/agent when observing | |
| visual_state_id | No | Associated visual state ID from vision-memory-mcp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only, so the description adds value by explaining that it merges detections into the world model, re-identifies objects, and boosts confidence โ all behavioral effects beyond the annotations. It also hints at reconciliation analysis. It does not disclose edge cases or failure modes, but the additional context about state mutation is meaningful given annotations are sparse. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the primary and secondary purposes. It is front-loaded with the main action and avoids unnecessary words. Though it is a bit dense due to the 'or' structuring, it is appropriately concise for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, nested objects, no output schema), the description is incomplete. It does not explain what the tool returns, how observer_pose and field_of_view feed into the merge/reconcile logic, or when each mode should be used. The schema descriptions help somewhat, but the overall behavior and expected outcomes are under-specified, leaving an agent uncertain about invocation and interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83% (high), so the baseline is 3. The description does not elaborate on individual parameters beyond the schema; it only references detections conceptually and reconcile as a mode. It does not add semantics for field_of_view, observer_pose, or visual_state_id, which the schema partially describes. The description adds marginal value over the schema, consistent with the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action (merge detections into the world model) and a secondary reconciliation mode, distinguishing it from sibling tools like query_entities (query-only) and update_entity (general update). The verb 'merge' and resource 'world model' are specific, and the mention of re-identifying objects and boosting confidence adds precision. However, the dual purpose (merge vs reconcile) slightly dilutes focus, so not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you have vision detections to ingest) but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or comparison to siblings. It does not say 'use query_entities for reading' or 'use update_entity for direct edits'. The guidance is implied rather than explicit, so it meets the minimum but lacks clear routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_to_goalB
Associate entities or spatial regions with state-memory task DAGs (link/unlink), or extract goal-relevant spatial context slices.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Context notes | |
| action | No | Action to perform: "link" (default), "unlink", or "get_context" to retrieve goal-relevant spatial slice | |
| radius | No | Proximity radius around agent for get_context action (default: 30) | |
| project | No | Optional project identifier | |
| task_id | No | State memory task node ID | |
| entity_id | No | Target entity ID to link/unlink | |
| region_id | No | Target region ID to link | |
| max_entities | No | Maximum entities to return for get_context action (default: 20) | |
| relationship | No | Role of entity relative to goal (default: target) | |
| current_agent_position | No | Current agent position for get_context action |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the tool mutates state. The description adds little beyond that: it mentions 'link/unlink' which implies modification, but does not disclose what entities or DAGs are affected, whether actions are reversible, or any side effects of get_context. The behavioral transparency is weak given the tool's complexity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that leads with the primary purpose and separates the two main modes. It is free of fluff and front-loads the key information, though it could be slightly more structured for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, multiple actions, nested objects, no output schema), the description is too brief. It does not explain which parameters apply to which action, what the return value looks like, or how it complements the many sibling spatial tools. An agent would need to open the schema and infer usage, which is insufficient for such a multi-mode tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds a high-level context (entity/region association, goal-relevant slices) but does not clarify conditional requirements (e.g., which parameters are needed for each action) or relationships between parameters. With full schema coverage, a baseline of 3 is appropriate, but the description could have filled the conditional-usage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('associate') and resource ('entities or spatial regions' with 'state-memory task DAGs'), and also distinguishes a second operation ('extract goal-relevant spatial context slices'). It is not a tautology and differentiates from siblings by focusing on goal-DAG linking and context retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like set_relation or query_entities. It does not mention prerequisites, scenarios, or conditions that should favor this tool. The action parameter (link/unlink/get_context) implies usage, but there is no explicit when-to-use or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_snapshotB
Unified spatial snapshot and time-travel management: save checkpoints, restore states, diff two snapshots, list history, undo mutations, or inspect world state at historical timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Snapshot name for save/restore | |
| type | No | Mutation type to undo (default: any) | |
| action | No | Action to perform (default: list) | |
| project | No | Optional project identifier | |
| entity_id | No | Target entity ID for undo or history lookup | |
| timestamp | No | ISO timestamp for time-travel reconstruction | |
| snapshot_a | No | First snapshot name for diff | |
| snapshot_b | No | Second snapshot name for diff | |
| description | No | Optional snapshot description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all set to false and provide no safety profile, so the description carries full weight. It says 'restore' and 'undo mutations' without disclosing whether these actions destructively modify world state, whether they are reversible, or what permissions are needed. The read-only operations (list, diff, history, time travel) are not separated from mutating ones.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence that front-loads the tool's role and enumerates actions. There is no repeated info and the structure clearly organizes the core capabilities, though the sausage is a bit sprawling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters, 7 actions, and no output schema, the description is too sparse to fully map actions to required parameters or to explain return types. Each property in the schema is described, but the constellation of combinations and the tool's output shape are left to inference, so it is just adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter has its own descriptions, so the schema does the heavy lifting. The description adds the list of actions but not the mapping of them to parameters; it establishes baseline about semantics without violating or contradicting the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description precisely identifies the resource (spatial snapshots/time-travel) and lists concrete verbs: save, restore, diff, list, undo, inspect. It clearly differentiates from sibling tools by focusing on snapshot management rather than entity updates, relations, or simulation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description frames the tool as the unified destination for snapshot operations but never states when to prefer it over a sibling or when not to use it. No exclusions or alternative conditions are mentioned, leaving the agent to infer scope from the action enum alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_spatial_specC
Manage Spatial Spec-Driven Development (Spatial SDD) baseline contracts and live compliance verification against physical constraints (min clearance, containment, occupancy).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of the spatial specification | |
| action | No | Action to perform (default: list) | |
| bounds | No | Spatial bounding box limits | |
| project | No | Optional project identifier | |
| tolerance | No | Verification tolerance percentage (default: 0.05) | |
| constraints | No | List of spatial constraints | |
| description | No | Specification description | |
| sdd_requirement_id | No | Linked state-memory SDD requirement node ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only, not idempotent, and not destructive, but the description adds no extra behavioral context. It does not disclose side effects (e.g., overwriting existing specs, returning pass/fail for verification, or requiring specific permissions). Since the agent only knows it can modify state, but not how, the description fails to enhance transparency beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence with jargon ('Spatial SDD') and a long list of parenthetical constraint types. It is not overly long but could be clearer and more front-loaded by stating the primary actions first. Every phrase serves some purpose, but the structure buries the core action under modifiers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, nested objects, and no output schema, the description should provide an overview of what each action returns and how the tool fits into the spatial workflow. It does not explain that 'set' creates/updates a spec, 'verify' checks compliance, or 'list' enumerates specs. It also doesn't relate to sibling tools or clarify prerequisites. The description is too sparse for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is documented. The description adds a little context by mentioning physical constraints (min clearance, containment, occupancy), which maps to constraint types in the schema, but it does not clarify how parameters like bounds, tolerance, or constraints interact. It does not compensate for any ambiguity in the schema, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (Spatial SDD baseline contracts) and the primary operations (managing contracts and verifying compliance against physical constraints). It names specific constraint types (min clearance, containment, occupancy), which helps distinguish it from sibling tools like get_spatial_map or simulate_movement. However, the verb 'manage' is generic and doesn't explicitly enumerate the actions (set/verify/list) that the schema reveals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. It does not state 'use this to define a spatial spec' or 'when you need to check compliance', nor does it exclude scenarios better handled by siblings such as get_spatial_map or simulate_movement. The usage context is only implied by the tool name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_entitiesARead-onlyIdempotent
Find entities by keyword query (FTS5 search), type, region, spatial proximity, tags, or status. Alternatively, provide entity_id for single-entity location and historical trajectory lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter by matching tags | |
| type | No | Filter by entity type | |
| limit | No | Maximum number of entities to return (default: 50) | |
| query | No | Full-text search query across entity names, tags, and properties | |
| status | No | Filter by status | |
| project | No | Optional project identifier | |
| entity_id | No | Specific entity ID to look up directly (returns location and state) | |
| region_id | No | Filter by region ID | |
| max_distance | No | Maximum distance radius from near_position | |
| history_limit | No | Maximum number of history events to return when include_history is true (default: 20) | |
| near_position | No | Center position for proximity distance search | |
| min_confidence | No | Minimum confidence score (e.g. 0.5 to filter out decayed entities) | |
| include_history | No | If true and entity_id is specified, returns recent movement/event history |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior, so the description carries a lower burden here. It does add context: FTS5 search, spatial proximity, and an alternative trajectory-lookup mode. However, it does not mention default limits, result ordering, pagination, or how much history is returned, which are behavioral details an agent might need.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and the main filtering modes, and the second sentence covers the direct entity_id path with a clear 'Alternatively'. No surplus wording or repeated structured data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter tool with a well-described schema and no output schema, the description covers the two main calling patterns: bulk search and individual entity lookup. It does not explicitly state the return envelope (array vs single record) or global constraints like limits and pagination, but the description and schema together are enough for most common invocations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes all 13 parameters with 100% coverage, which sets a baseline of 3. The description groups related filters (keyword, type, region, spatial proximity, tags, status) and highlights the entity_id/history path, adding modest semantic value beyond schema descriptions but not deeply explaining any individual parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action 'Find entities' and then enumerates the search dimensions (keyword/FTS5, type, region, spatial proximity, tags, status), followed by a distinct second path for entity_id lookup. This clearly differentiates it from mutation or simulation siblings like update_entity, set_relation, and simulate_movement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear when to use the tool (to find/query entities, or to get a single entity's location/trajectory) but does not explicitly exclude other sibling tools, name alternatives, or state conditions for when another tool is more appropriate. The use-cases are implied but not compared against the rich sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_outcomeA
Update the world model after an action executes (moving an entity, modifying properties, destroying or creating objects).
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Optional project identifier | |
| success | Yes | Whether the action succeeded | |
| task_id | No | Linked task ID | |
| destroyed | No | If true, marks entity as destroyed | |
| entity_id | No | Primary entity affected | |
| action_name | Yes | Name of the executed action (e.g. move_to, pickup, place, destroy) | |
| property_changes | No | Updated properties to merge | |
| resulting_position | No | New position of entity after action |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as not read-only, and the description adds useful behavioral context by mentioning it can record moving, property changes, destruction, and creation. This helps an agent understand the side-effect model beyond the annotations, though it does not discuss persistence, failure behavior, or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action and then adds concise clarifying examples. It is efficient and readable, though slightly more structure could have made the scope even clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters deeply nested objects scratch and no output schema, this description is adequate but thin. It communicates the core purpose and timing but does not explain the relationship between required params like success/action_name and optional state updates, nor does it guide an agent on which optional fields to populate in different outcome scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is a 3. The description's examples loosely align with entity_id, resulting_position, property_changes, and destroyed, but it adds no parameter-level detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Update the world model after an action executes' and clarifies with concrete examples like moving an entity or modifying properties. This goes well beyond a tautology, though it does not explicitly contrast with similar siblings like update_entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The temporal context 'after an action executes' gives a clear sense of when to use the tool. However, it provides no guidance on when not to use it or how it differs from siblings such as update_entity, ingest_observation, or set_relation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_relationB
Record or update a spatial relationship between two entities (e.g. on, inside, next_to, above, below, near, contains, occluded_by, connected_to, facing, holding, part_of).
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Action to perform (default: add) | |
| offset | No | Relative offset vector from source to target | |
| project | No | Optional project identifier | |
| distance | No | Optional measured distance between entities | |
| metadata | No | Additional relation metadata | |
| relation | Yes | Type of spatial relation | |
| source_id | Yes | Source entity ID | |
| target_id | Yes | Target entity ID | |
| bidirectional | No | If true, automatically sets inverse relationship on target |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as not read-only, so 'Record or update' is consistent but adds little beyond readOnlyHint=false. The description does not disclose important mutation behaviors such as action=remove, overwrite semantics, the bidirectional inverse-relationship effect, or idempotency, which are meaningful for a state-changing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that immediately states the action and resource. The relation list is somewhat redundant with the schema enum, but it is compact and helps at-a-glance understanding without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter write operation with no output schema, the description covers core purpose but leaves key behavioral semantics like the 'remove' action and 'bidirectional' flag to be discovered in the schema. Since the schema is rich and well-described, this is acceptable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already documented, including enums for relation and action. The description's relation examples echo the schema enum rather than adding new semantic meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a concrete action ('Record or update') and a clear resource ('spatial relationship between two entities'), with a helpful list of relation types. It is clearly distinct from read-oriented siblings like get_spatial_map or query_entities, though it doesn't explicitly differentiate from update_entity and omits the 'remove' action shown in the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: use this tool when a spatial relationship between two entities needs to be recorded or updated. However, there is no explicit when-to-use vs. when-to-use-another tool guidance, and siblings like update_entity or manage_spatial_spec could plausibly overlap, leaving selection partially to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_movementBRead-onlyIdempotent
Simulate physical movement and test for AABB collisions, or calculate waypoint navigation paths between entities and coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Operation mode: "simulate" (default) for physics/collision, "navigate" or "waypoints" for path planning | |
| project | No | Optional project identifier | |
| velocity | No | Velocity vector in units per second | |
| entity_id | No | Entity ID to simulate or move | |
| delta_position | No | Relative movement displacement | |
| start_position | No | Starting 3D coordinates for navigation mode | |
| start_entity_id | No | Starting entity ID for navigation mode | |
| target_position | No | Target position destination | |
| check_collisions | No | Whether to test for AABB obstacle collisions (default: true) | |
| duration_seconds | No | Movement duration in seconds | |
| target_entity_id | No | Target destination entity ID for navigation mode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds a few behavioral details, such as AABB collision testing and waypoint navigation paths, but does not disclose potential side effects (e.g., whether it returns computed paths or only validates viability), error conditions, or performance implications. Given the annotation coverage, a 3 is appropriateโthe description adds some context but not rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The primary action (simulation and collision) is front-loaded, followed by the alternative (navigation). While it could benefit from structured enumeration of modes, the current form is efficient and reads clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 11 parameters, no required fields, and no output schema, the description is too sparse to guide an agent effectively. It does not specify which parameters apply to each mode, what the return format looks like (e.g., collision results, path coordinates), or how to select between 'navigate' and 'waypoints'. This leaves significant ambiguity for correct invocation, especially in multi-mode tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented. The description provides a high-level overview but does not explain how parameters interrelate (e.g., that start_position and target_position are relevant only in navigation/waypoint mode, or that velocity and delta_position are for simulation). It adds minimal semantic value beyond the schema, and no parameter usage examples or prerequisites are providedโexactly the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb-resource pair: it simulates physical movement and tests AABB collisions, or calculates waypoint navigation paths. It distinguishes two distinct operation modes and names the specific resource (entities, coordinates, AABB). This differentiates it from sibling tools like update_entity (which likely modifies state) and get_spatial_map (which reads spatial data).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives. It mentions two modes but does not explain the selection criteria (e.g., use 'simulate' when you need collision checks, use 'navigate' when planning a path). There are no exclusions or references to sibling tools. An agent must infer usage from the 'mode' parameter and surrounding context, which is insufficient for a multi-mode tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_entityB
Create or update an entity in the spatial world model. Allows specifying position (3D coordinates), orientation (pitch/yaw/roll), bounding box volume, custom properties, tags, and confidence score.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Optional entity ID (auto-generated ULID if omitted for creation) | |
| name | Yes | Human-readable name or label of the entity | |
| tags | No | Array of searchable string tags | |
| type | Yes | Categorical entity type | |
| status | No | Entity lifecycle status (default: active) | |
| project | No | Optional project identifier | |
| position | No | 3D world position coordinates | |
| parent_id | No | Optional parent entity ID for hierarchical containment or attachments | |
| region_id | No | Optional named region ID where this entity resides | |
| confidence | No | Object permanence confidence score from 0.0 to 1.0 (default: 1.0) | |
| properties | No | Arbitrary JSON key-value properties (physics, materials, interactive state) | |
| orientation | No | 3D Euler orientation angles in degrees | |
| bounding_box | No | AABB bounding volume size |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, idempotentHint=false, destructiveHint=false, indicating it is a mutating, non-idempotent, non-destructive operation. The description adds that it can both create and update, which is useful behavioral context beyond annotations; it implies persistence of changes)Skip. However, it doesn't disclose that 'create' auto-generates an ID (that is in schema) or that updates might overwrite existing properties in a way that could be non-destructive. With annotations covering the harmful side, the description adds some value but not extensive behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is informative and front-loads the main action. It is not overly verbose; it lists key fields but not every detail, striking a balance. It could be shorter but it's efficient for the scope. It earns a 4 because it conveys the core purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the input schema is rich with nested objects and 13 parametersัะฝะฐั. The description covers the main fields but doesn't explain the create-vs-update semantics in detail (e.g., that providing an id updates an existing entity). It also doesn't mention any return value or side effects, which is common for such tools. Given the complexity, it is minimally adequate but has gaps in clarifying behavior and prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all 13 parameters have descriptions. The description lists fields like position, orientation, bounding box, custom properties, tags, and confidence, which overlaps with schema. It doesn't add new meaning beyond listing them; for instance, it mentions 'custom properties' but the schema already explains arbitrary JSON. For high coverage, baseline is 3, and the description doesn't significantly compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a verb (Create or update) and a resource (entity in the spatial world model), and enumerates what fields can be set, distinguishing it from siblings like query_entities or set_relation. It doesn't explicitly name alternatives, but the purpose is specific enough that an agent can infer it is the primary write tool for entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies dual behavior (create vs update) but does not explicitly state when to use this tool versus query_entities (for reading) or other spatial manipulation tools like manage_spatial_spec. It mentions 'create or update' but lacks explicit conditions, such as 'use when you need to add a new entity or modify an existing one's properties.' It also doesn't state when not to use it (e.g., for queries). Some usage is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
use_spatial_blackboardA
Multi-agent shared spatial blackboard for publishing ephemeral intentions, waypoints, and claiming exclusive spatial access to prevent collisions.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Blackboard topic name | |
| action | No | Action to perform (default: read) | |
| sender | No | Agent identifier posting or claiming | |
| payload | No | Payload object (supports coordinates for collision alerts) | |
| project | No | Optional project identifier | |
| resource_id | No | Resource or entity ID to claim/release | |
| ttl_seconds | No | Post TTL expiration in seconds | |
| duration_seconds | No | Claim duration in seconds (default: 60) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the sparse annotations by revealing that content is ephemeral and that claiming grants exclusive spatial access, which is important for collision-sensitive coordination. It doesn't spell out TTL or claim-expiry mechanics, but the word 'ephemeral' signals lifetime and 'exclusive' signals blocking semantics without contradicting any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single focused sentence with no filler. It is efficient and front-loads the core purpose, though it could have used an explicit verb and a brief note about the four action modes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with no output schema, the description does not explain how the post/read/claim/release actions map to parameters or what a read result looks like. The schema covers individual parameters, but the description alone is not enough to correctly choose between this and the many sibling spatial tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters including the action enum, payload coordinates, TTL, and duration. The description only frames semantics conceptually and does not add operational details such as which parameters apply to posting versus claiming.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a shared spatial blackboard and names its two core purposes: publishing ephemeral intentions/waypoints and claiming exclusive spatial access. It is not merely a title restatement Durch, but it uses a noun phrase rather than an explicit operation and does not differentiate itself from sibling spatial tools like get_spatial_map or manage_spatial_spec.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for publishing... and claiming... to prevent collisions' implies when an agent would use this tool, but there are no explicit use conditions, exclusions, or named alternatives. With 14 sibling tools, an agent would still need to infer how this differs from get_spatial_map or wait_for_spatial_state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_spatial_stateARead-onlyIdempotent
Poll and wait until an entity reaches a specific spatial state (exists, becomes active, confidence exceeds threshold, or enters region).
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Optional project identifier | |
| condition | Yes | Condition to wait for | |
| entity_id | Yes | Entity ID to monitor | |
| region_id | No | Target region ID for in_region condition | |
| threshold | No | Confidence threshold (default: 0.8) | |
| timeout_ms | No | Timeout in milliseconds (default: 10000) | |
| poll_interval_ms | No | Polling interval in milliseconds (default: 250) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds value beyond those by specifying the blocking/waiting behavior and the distinct state conditions (exists, active, confidence_above, in_region), which are not inferable from the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. The operative verb and resource come first, followed by a compact parenthetical enumeration of supported conditions. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the fully described schema and safety annotations, the description covers the core purpose and wait semantics well. The only minor gap is that it does not explicitly state timeout/failure behavior, but the timeout_ms and poll_interval_ms parameters largely fill that context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters, including the enum for condition and defaults for threshold, timeout, and poll interval. The description restates condition categories but adds little per-parameter meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Poll and wait') on a specific resource ('entity reaching spatial state') and enumerates the four condition types. This clearly differentiates it from one-shot sibling tools like query_entities or get_spatial_map.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Poll and wait until' phrasing makes the blocking use case explicit: use this when the caller must wait for a condition to become true, rather than perform a one-shot read. It does not explicitly name alternatives, but the polling semantics provide clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
15 tool updates
v0.3.1- First observed
create_evidence_pack - First observed
generate_game_inputs - First observed
get_expected_view - First observed
get_spatial_map - First observed
ingest_observation - First observed
link_to_goal - First observed
manage_snapshot - First observed
manage_spatial_spec - First observed
query_entities - First observed
record_outcome - First observed
set_relation - First observed
simulate_movement - First observed
update_entity - First observed
use_spatial_blackboard - First observed
wait_for_spatial_state
TDQS
Scored across 15 tools
Every tool targets a distinct aspect of spatial world modeling: entity CRUD, querying, relations, map generation, simulation, observation ingestion, view prediction, goal linking, outcome recording, spatial specs, evidence packs, blackboard coordination, snapshot management, game input generation, and state waiting. There is no ambiguity between operations like update_entity vs record_outcome vs ingest_observationโeach has a clear and separate purpose.
All tools follow a consistent verb_noun snake_case pattern (e.g., update_entity, query_entities, set_relation, get_spatial_map, simulate_movement). Verb choices vary appropriately with their actions, but the style and structure are uniform across all 15 tools, making the set predictable and easy to navigate.
15 tools is well-scoped for a rich domain like spatial world modeling. Each tool covers a distinct feature area without redundancy, and the count remains within the ideal range for a comprehensive MCP server. The number feels justified given the breadth of functionality (state management, simulation, spatial reasoning, evidence, collaboration, and automation).
The tool surface covers the full lifecycle: entity creation/update (update_entity), querying (query_entities), deletion and post-action updates (record_outcome), relationships (set_relation), spatial mapping (get_spatial_map), simulation (simulate_movement), observation ingestion (ingest_observation), expected view (get_expected_view), goal integration (link_to_goal), compliance (manage_spatial_spec), evidence (create_evidence_pack), multi-agent coordination (use_spatial_blackboard), snapshot/history (manage_snapshot), game input generation (generate_game_inputs), and waiting for state changes (wait_for_spatial_state). No obvious gaps prevent an agent from performing critical workflows.
Maintenance
Related MCP Connectors
Cloud-hosted MCP server for durable AI memory
Shared voxel world for AI agents. Extend First Light at the world centre over HTTP or MCP; no auth.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Governed personal world model and memory for your AI agent. Pair once, connect over MCP.
Related MCP Servers
- AlicenseAqualityAmaintenanceA local-first MCP server that gives AI coding agents persistent memory and controlled commands. Features a git-backed markdown knowledge vault with FTS5 search, surgical section edits, token-aware context budgeting, and a sandboxed command engine with human approval gates. Works with Claude Code, Cursor, Copilot, Gemini, and more.458316 npm1Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA local-first MCP server providing persistent, searchable knowledge base via SQLite, enabling AI agents to save and recall facts across sessions without cloud dependencies.MIT
- AlicenseAqualityCmaintenancePersistent memory MCP server for AI agents, using SQLite with hybrid keyword and semantic search for long-term memory storage.5Do What The F*ck You Want To Public
- FlicenseNot gradedqualityAmaintenanceA local MCP server using SQLite to unify context and memory across multiple AI agents, enabling persistent decisions and preferences without re-explanation.-