Built-in Tool Schemas
Wayland Core ships a built-in tool registry of ~60+ tools. This page documents the parameter schemas and limits for the always-on core tools. The broader catalog (git, SQL, web, cloud CLI, API integrations, media, scheduling, memory) is covered in Built-in Tool Reference. MCP servers add further tools on top of the built-ins.
Concurrency-safe tools (Read, Grep, Glob, ToolSearch) can run in parallel. Tools that change state (Write, Edit, Bash) run one at a time.
Read file contents with line numbers (cat -n style).
Source: wcore-tools/src/read.rs
Read file_path string required Absolute path to read. offset integer optional Line number to start reading from (1-based). limit integer optional Maximum number of lines to return.- Binary files are detected automatically and returned as a hex summary rather than raw bytes.
- An internal mtime cache (
FileStateCache) deduplicates repeated reads of unchanged files within a session. - When
offsetandlimitare both omitted the full file is returned, subject to the session output cap.
Write content to a file atomically.
Source: wcore-tools/src/write.rs
Write file_path string required Absolute destination path. content string required Full file contents to write.- The write uses a temp file + rename so a partial write does not corrupt the destination.
- Parent directories are created automatically.
- A
FileWriteNotifierevent is emitted after every write so hooks and the TUI history can track changes.
Replace an exact string in a file.
Source: wcore-tools/src/edit.rs
Edit file_path string required Absolute path to the file to edit. old_string string required The text to replace. Must match exactly. new_string string required The replacement text. replace_all boolean optional Replace every occurrence. Default false (unique match required).- When
replace_allis false (the default), the match must appear exactly once. A non-unique match is a hard error; the model must supply more context. - Whitespace and indentation must match exactly.
Run a shell command inside the OS-native sandbox.
Source: wcore-tools/src/bash.rs
Bash command string required The shell command to run. timeout integer optional Timeout in seconds. Default 120, maximum 600.- Returns exit code, stdout, and stderr.
- Runs inside the platform sandbox (bubblewrap, sandbox-exec, AppContainer) with a curated env. Host env vars matching
*_API_KEY,*_TOKEN,*_SECRET, andWAYLAND_VAULT_*are scrubbed before the child process starts. - Network is denied by default. Set
WAYLAND_BASH_ALLOW_NETWORK=1to restore it. - When no sandbox backend is available the call fails closed with an actionable error rather than running unsandboxed. See Shell Sandbox.
Search file contents with a regular expression.
Source: wcore-tools/src/grep.rs
Grep pattern string required Regular expression to search for. path string optional Directory or file to search. Defaults to working directory. glob string optional File glob filter, e.g. "*.rs". case_insensitive boolean optional Case-insensitive match. Default false.- Uses
rg(ripgrep) when found in PATH; falls back togrep -rn. - Results are capped at 250 lines.
- Concurrency-safe: multiple Grep calls can run in parallel.
Find files by glob pattern.
Source: wcore-tools/src/glob.rs (name: "Glob")
Glob pattern string required Glob pattern, e.g. "**/*.rs" or "src/**/*.ts". path string optional Root directory for the search. Defaults to working directory.- Results are sorted newest-first by modification time.
- Capped at 100 files.
- Concurrency-safe.
Delegate
Section titled “Delegate”Structured single-task or batch sub-agent delegation.
Source: wcore-tools/src/delegate.rs
Delegate tasks array required One or more task objects. task.prompt string required The task description for the sub-agent. task.toolsets array optional Allowlist of tool names available to this sub-agent. task.max_turns integer optional Turn cap for this task. Default 50.- Up to 5 tasks per call.
- Returns structured JSON output per task.
- Sub-agents share the parent’s provider and config but run in their own session scope.
- See also:
Spawnfor registry-resolved named agents with OutputSink relay. Both shareAgentSpawner.
Multi-agent fan-out with registry-resolved named agents.
Source: wcore-agent/src/spawn_tool.rs (name: "Spawn")
Spawn tasks array required One or more task objects. task.agent string optional Named agent from the agent registry (e.g. "debugger"). task.prompt string required Task prompt.- Up to the topology cap (default 5 for
Topology::Spawn; FleetDispatcher atTopology::Fleetwhen agent count exceedsDEFAULT_SHARD_SIZE). - Output from each sub-agent is relayed to the parent’s OutputSink in real time.
Workflow
Section titled “Workflow”Run an inline ForgeFlow workflow defined in RON format.
Source: wcore-agent/src/workflow_tool.rs (name: "Workflow")
Workflow workflow string required A RON-format ForgeFlow workflow definition.- Parses RON → GraphConfig IR → WorkflowRunner.
- Supports Agent, Pipeline, and Parallel step types.
- A size and depth security guard on the RON input is applied before parse.
ToolSearch
Section titled “ToolSearch”Load full schemas for deferred tools so the model can call them.
Source: wcore-tools/src/tool_search.rs (name: "ToolSearch")
ToolSearch query string required Substring to match against tool names and descriptions.- MCP server tools are registered by name only at startup (deferred by default). ToolSearch fetches their full parameter schemas on demand.
- Match is case-insensitive substring on both name and description.
- No exact-name syntax. No result cap: all matches are returned.
- Set
deferred = falseon an MCP server to load schemas eagerly from the first turn. See MCP Client. - Concurrency-safe.
WebFetch
Section titled “WebFetch”Fetch a URL and return its content.
Source: wcore-tools/src/web_fetch.rs (name: "WebFetch")
WebFetch url string required Absolute http:// or https:// URL to fetch. readable boolean optional When true (default), HTML is run through a readability extractor. When false, the raw body is returned verbatim (use for JSON/plain text). timeout_ms integer optional Wall-clock timeout in milliseconds. Default 30000, maximum 90000.- Plain HTTP GET with readability extraction for HTML pages. No browser sidecar required.
- SSRF-safe: private IP ranges, loopback, cloud metadata endpoints, and non-http/https schemes are rejected before the request is sent (
url_safety::is_safe_url). - Prefer WebFetch for read-only URL reads. Use the browser tool (plugin-loaded) only when JavaScript rendering is needed.
Broader registry
Section titled “Broader registry”The tools above are the always-on core. The full registry also includes:
- File and data:
Jsonl,sql_query,pdf_extract,Archive,markdown_table,image_inspect,email_parse,RepoMap - Shell and DevOps:
Git,kubectl,gcloud,aws_cli - Web:
web(search/extract/crawl with Tavily/Brave/DuckDuckGo backends) - Communication:
send_message - Planning:
todo,clarify,AskUserQuestion - Memory:
session_search,record_episode(when memory enabled),assert_fact(when memory enabled) - Introspection:
wayland_status,wayland_telemetry_query,Skill - Availability-gated:
github_api,gitlab_api,linear_api,notion_api,discord_server,homeassistant,postgres_schema,meet_join/status/transcript/leave/say,image_generate,vision_analyze,transcribe_audio,text_to_speech,voice_mode,video_analyze,cronjob - Plugin-loaded: Browser (18 ops) and computer-use (11 ops) via
wayland-browserandwayland-cuaplugins
See Built-in Tool Reference for the complete catalog including gating conditions and the NO-STUBS availability contract.