Discover the running registry
Ask the Entity to usesearch_tools to find a capability and describe_tool to inspect its exact schema. Telegram /tools also exposes registered tools.
Do not depend on one fixed tool count. Configuration and MCP connections change the registry, and a truncated discovery result may return only part of it.
The spatial reference documents every shipped spatial tool and its parameters.
ar_world composes many creation operations through one interface. Distinct consecutive requests are allowed; three identical consecutive requests trigger the retry guard. Inspect, act, and verify instead of continuously polling. Blender previews and local programs keep updating without model polling.
Send a long-running coding goal
Usecode_task_session for coding work that should continue independently of the chat connection. Give it a self-contained objective, repository path, success criteria, and any constraints on publishing or deployment. It returns a task ID immediately.
end_turn only ends a phase. Exhausting a budget leaves the goal paused and incomplete.
max_phases: 0 removes the phase-count limit; the default runtime allowance is six hours. Repeated lack of new tool evidence pauses a goal after three phases. The same external blocker must recur for three consecutive phases before the goal becomes blocked. Repeated execution errors produce a resumable failed state. These states never imply completion.
One coding goal runs at a time per Entity, with additional goals queued. Each goal uses its own model context and a coding tool subset; normal chat remains available. Telegram and Discord receive progress sent with say and a final status at the original channel. Progress is also saved under code_tasks/ in the execution workspace. Browser disconnects do not cancel the goal.
The authoritative JSON records live in .code_tasks/ beside the Entity journal and use atomic replacement. Keep this directory on persistent storage and run one worker per Entity data directory. Active goals recover on daemon or bridge startup. Restart recovery includes the last pending tool call so the worker can inspect its effects before retrying. A process killed during a command may leave an uncertain outcome; recovery does not promise exactly-once command execution. Paused, blocked, failed, and cancelled goals require explicit resume. Inference pause also pauses coding goals.
The authenticated Entity bridge exposes GET /code-tasks, GET /code-tasks/{task_id}, and POST /code-tasks/{task_id}/resume or /cancel. These controls do not depend on the original WebSocket. Resume accepts instructions and additional_seconds in its JSON body. The tools and bridge use the same saved state.
Configure capabilities
Harness tool settings live inconfigs/default.yaml. A top-level tools block in Entity YAML can override them:
Choose the execution host
Shell, code, and filesystem tools use the execution client. A configured RPC endpoint takes precedence; local fallback is gated by settings and the deployment environment. For a dedicated local development workspace, an explicit configuration is:Add an MCP tool
The v1 MCP hub launches stdio servers. A URL-only HTTP MCP configuration is not handled directly by this hub. Createtools/hello_mcp.py in your application checkout:
mcp_hello_greet. Ask the Entity to describe that tool, then call it with a name. The example needs no service credential.
MCP subprocesses inherit a runtime environment and can have their own access. Keep real credentials in the private environment instead of copying them into committed YAML.
Optional dependencies
Install only the extras needed for your configured capabilities. From the source checkout:browser, imagegen, youtube, and full extras. An installed package does not configure its external backend. Verify the tool result before claiming a capability is operational.