Centralized Attributable impls for every concrete Tool defined
in zeroclaw-runtime. See the sibling file in zeroclaw-tools for
the rationale; same pattern.
Agent-loop tool that spawns an ephemeral SubAgent inheriting the
parent’s identity, security policy, and memory allowlist, runs a
focused prompt, and returns the response. Cron’s JobType::Agent
dispatch is the other SubAgent spawn site; both funnel through
crate::subagent::SubAgentSpawn so permission inheritance,
tracing-span shape, and audit attribution stay uniform.
Per-conversation mutable state tracking which deferred tools have been
activated (i.e. their full schemas have been fetched via tool_search).
The agent loop consults this each iteration to decide which tool_specs
to include in the LLM request.
Spawns Claude Code inside a tmux session with HTTP hooks that POST tool
execution events back to ZeroClaw’s gateway endpoint, enabling live Slack
progress updates and SSH session handoff.
Tool that delegates a subtask to a named agent with a different
model_provider/model configuration. Enables multi-agent workflows where
a primary agent can hand off specialized work (research, coding,
summarization) to purpose-built sub-agents.
Tool that runs a single prompt through an LLM and optionally validates
the response against a JSON Schema. No tools are provided to the LLM —
this is a pure text-in, text-out (or JSON-out) call.
Tool for interacting with the Notion API — query databases, read/create/update pages,
and search the workspace. Each action is gated by the appropriate security operation
(Read for queries, Act for mutations).
Send a message to a peer on a shared channel. Bound to a single
calling agent’s alias; the tool validates every send against that
agent’s resolved peer set.
Resets a session by clearing its message history. The session key
remains valid for new messages. Useful for cleaning up stale
conversations without deleting the session entry itself.
Returns the session key and metadata for the currently active session.
Reads the session key from the TOOL_LOOP_SESSION_KEY task-local,
which is scoped around gateway and channel agent turns.
A skill tool that delegates execution to another tool resolved from the
resolution registry — either a built-in (kind = "builtin") or an MCP tool
(kind = "mcp"). This is the skill-scoped tool elevation mechanism: a
policy blocking shell by name (or deferred MCP tools hidden from the
model) does not block my_skill__use_shell, because the wrapper is
registered under the prefixed name {skill}__{tool} and delegates to the
resolved target.
Text browser tool: renders web pages as plain text using text-based browsers
(lynx, links, w3m). Ideal for headless/SSH environments where graphical
browsers are unavailable.
Web search tool for searching the internet.
Supports multiple model_providers: DuckDuckGo (free), Brave (requires API key),
Tavily (requires API key), SearXNG (self-hosted, requires instance URL).
Always-on built-in tools that surface in the integrations panel as
(display_name, description) pairs. The integrations registry consumes
this verbatim — adding a new always-on built-in is one row here, no
edit to the registry. Tools with a config struct (Browser, Cron,
GoogleWorkspace) declare themselves via the #[integration(...)]
attribute on the schema struct instead.
Build the <available-deferred-tools> section for the system prompt.
Lists only tool names so the LLM knows what is available without
consuming context window on full schemas. Includes an instruction
block that tells the LLM to call tool_search to activate them.