Tools
Tools are the discrete actions Friday's agents can take inside the agent loop. Each turn, the LLM either replies with text or calls one or more tools; the tool outputs feed back into the conversation and the loop continues.
This page is a lookup reference. Use it to figure out why Dispatch picked a particular tool, or to decide which tools: line to put in a subagent definition.
Friday has three agent kinds, and each kind has a different toolset:
- Dispatch (the orchestrator) reads, plans, coordinates, and opens PRs. It does not edit files.
- Threads (workers) read and edit. They can also spawn subagents and accept their own work.
- Subagents are one-shot helpers. Their toolset is declared in the agent's frontmatter; the defaults below show what's available.
Who has what
| Tool | Dispatch | Thread | Subagent |
|---|---|---|---|
Read | yes | yes | yes |
ReadFile | yes | yes | yes |
Write | no | yes | yes |
Edit | no | yes | yes |
Glob | yes | yes | yes |
Grep | yes | yes | yes |
Bash | yes | yes | yes |
Plan | yes | yes | yes |
Task | yes | yes | no |
WebFetch | yes | yes | yes |
WebSearch | no | no | yes |
GetCurrentDate | yes | yes | yes |
TaskCreate / TaskList / TaskGet / TaskUpdate | yes | partial | yes |
CreateWorkerThreadForTask | yes | no | no |
AbandonWorkerThread | yes | no | no |
SendMessageToWorkerThread | yes | no | no |
ListWorkerThreads | yes | no | no |
AcceptThread | no | yes | no |
SendMessageToDispatch | no | yes | no |
GithubPrCreate | yes (GIT mode) | no | no |
GithubPrUpdate | yes (GIT mode) | no | no |
MCPLookup | yes | yes | yes |
Log | yes | yes | no |
The asymmetries are the point. Dispatch can't Write or Edit (that's a thread's job). Threads can't open PRs (that's Dispatch's job). Only threads have AcceptThread, because only a thread's branch needs cherry-picking. Only subagents have WebSearch by default; if Dispatch needs the web, it spawns a web-search subagent via Task.
File and directory I/O
Read
Used by: Dispatch, threads, subagents.
Reads a text file or lists a directory. The agent's primary way to look at code.
ReadFile
Used by: Dispatch, threads, subagents.
Reads an image or PDF visually so the model can inspect it. Different tool from Read because it routes the bytes through the model's vision input rather than as text.
Write
Used by: threads, subagents.
Creates a new file or overwrites an existing one. Dispatch does not have this tool; if you ask Dispatch to create a file, it will spawn a thread.
Edit
Used by: threads, subagents.
str_replace-style edit on an existing file. Dispatch does not have this.
Glob
Used by: Dispatch, threads, subagents.
Filename discovery. Backed by fd.
Grep
Used by: Dispatch, threads, subagents.
Content search. Backed by rg.
Shell
Bash
Used by: Dispatch, threads, subagents.
Runs a shell command in a long-lived session per agent. Subject to the permissions system (approval gates and a blocklist) unless you're in Cowboy mode or Bash mode.
Planning
Plan
Used by: Dispatch, threads, subagents.
Calls a separate planner model with a configurable reasoning effort and returns a structured plan. Friday often calls Plan automatically for multi-step prompts; in Collaborative mode the runner then pauses for your approval before execution.
When Dispatch calls Plan, the runner also turns the plan steps into entries in the task list.
See: Plan, then execute, Working style.
Subagents
Task
Used by: Dispatch, threads.
Spawns a subagent. The subagent runs to completion and its final text becomes the tool result. The Task tool's description is rebuilt each turn from the live agent registry, so newly added subagents become callable as soon as they're loaded.
Subagents themselves do not have Task (no nesting).
Tasks
TaskCreate, TaskList, TaskGet, TaskUpdate
Used by: Dispatch, subagents (full set); threads have TaskGet only.
Manage the persistent in-session task list. /tasks shows the same list. Threads can read a task they were given but don't manipulate the global list.
Worker threads (Dispatch only)
CreateWorkerThreadForTask
Used by: Dispatch.
Spawns a thread to do a piece of work. In GIT mode the thread runs in its own worktree on its own branch. This is the most common reason Dispatch hands off work.
AbandonWorkerThread
Used by: Dispatch.
Cancels a running thread and discards its branch. Dispatch uses this when a thread's work is no longer needed (you redirected, the approach didn't pan out, etc.).
SendMessageToWorkerThread
Used by: Dispatch.
Sends a message into a running thread's queue. Use case: redirect mid-flight, supply context the thread asked for, unblock it.
ListWorkerThreads
Used by: Dispatch.
Lists active and recently completed threads with their status. The same information is in the ThreadList UI; the tool exists so Dispatch can reason about it in-loop.
Thread to Dispatch (threads only)
AcceptThread
Used by: threads.
The merge gate. When a thread is done, it calls AcceptThread; the merge queue cherry-picks its commits onto your current branch and tears down the thread's worktree.
For Dispatch-spawned threads, the runner injects "Call AcceptThread" automatically when the thread reports task complete and its message queue is empty. Whether you see a "Ready to accept this thread?" prompt depends on Working Style.
See: Dispatch / Accepting a thread's changes, Threads.
SendMessageToDispatch
Used by: threads.
The reverse of SendMessageToWorkerThread. A thread uses this to ask Dispatch a question, report a blocker, or hand back results before merge. Dispatch sees the message in its own pane.
GitHub (Dispatch, GIT mode only)
GithubPrCreate
Used by: Dispatch in GIT mode.
Shells out to gh pr create with a title and body drafted from the conversation. Supports draft PRs. Pushes the branch first if needed and uses your configured base branch.
See: Build a feature and open a PR, Branches.
GithubPrUpdate
Used by: Dispatch in GIT mode.
Shells out to gh pr edit to update an existing PR's title, body, or other fields.
Web
WebFetch
Used by: Dispatch, threads, subagents.
Fetches a public URL. HTTP is upgraded to HTTPS automatically. Returns the page content for the agent to read.
WebSearch
Used by: subagents only.
Runs a web search. Built-in web-search subagent is the standard path; Dispatch and threads reach the web by calling Task with the web-search agent.
Date
GetCurrentDate
Used by: Dispatch, threads, subagents.
Returns today's date so the agent can ground time-sensitive reasoning. Useful before WebSearch ("what's the latest as of today") or when reading dated changelogs.
MCP
MCPLookup
Used by: Dispatch, threads, subagents.
Lazy-discovery primitive for MCP tools. MCP handlers are always registered, but their schemas only appear in the LLM's tools list after the agent calls MCPLookup for the relevant server. Context compression resets discovery; the agent has to look up again.
See: MCP.
Reporting
Log
Used by: Dispatch, threads.
A signal tool: the agent reports task completion and whether it made code changes. This drives the post-loop hooks: self-review on diff, and the auto-AcceptThread injection for dispatched threads.
Read next
- Dispatch, threads, and subagents: which agent kind does what.
- How Friday works: the agent loop these tools run inside.
- Subagents: how to declare a custom toolset.
- Permissions: how
Bashand other side-effecting tools are gated.