Skip to content

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 offset and limit are 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 FileWriteNotifier event 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_all is 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, and WAYLAND_VAULT_* are scrubbed before the child process starts.
  • Network is denied by default. Set WAYLAND_BASH_ALLOW_NETWORK=1 to 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 to grep -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.

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: Spawn for registry-resolved named agents with OutputSink relay. Both share AgentSpawner.

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 at Topology::Fleet when agent count exceeds DEFAULT_SHARD_SIZE).
  • Output from each sub-agent is relayed to the parent’s OutputSink in real time.

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.

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 = false on an MCP server to load schemas eagerly from the first turn. See MCP Client.
  • Concurrency-safe.

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.

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-browser and wayland-cua plugins

See Built-in Tool Reference for the complete catalog including gating conditions and the NO-STUBS availability contract.