Tools

What an agent connected to a project can do, and exactly what each tool takes.

Project paths are relative to the project root and confined to it before anything touches the disk. read_file, list_files, grep and command cwd may also use ~/.agents/AGENTS.md and paths under ~/.agents/skills/. Writes cannot. Any other absolute path, or one that climbs out with .., is refused with PATH_ESCAPE.

Which of these a project actually offers is up to its policy: see what a project allows. Tools marked read only change nothing, which is what a project set to read only is left with, and what is never interrupted by a confirmation prompt.

This page is generated from the same definitions the gateway advertises and the executor validates against, so it cannot describe a tool that does not exist or miss an argument that does.

On the account URL, https://exeora.dev/mcp, every tool below also takes an optional project, naming the project to run that one call without changing shared state. A project's own URL has no such argument: it carries its project in the path, and offering a way to name another is exactly what it does not do.

File, command and process tools accept workspace, naming a connected Git workspace by slug or id; omit it or pass main for the project root. create_workspace accepts it as an optional source, while detach_workspace and remove_workspace require it as their target. list_git_workspaces and attach_workspace do not take it. The gateway resolves selectors to stable ids and removes the routing field before executor validation. list_workspaces remains the gateway inventory and works while the machine is offline;list_git_workspaces requires the machine and includes unattached Git checkouts. A workspace error never falls back to main.

read_file

Read file · read only

Read a text file in the project, `~/.agents/AGENTS.md`, or under `~/.agents/skills/`. Output is truncated at 500KB. Use offset/limit for large files; when you need the whole file, continue with offset until complete.

ArgumentTypeWhat it means
pathstringProject-relative path, or `~/.agents/AGENTS.md` / a path under `~/.agents/skills/`.
offset optionalinteger1-based line to start reading from. Omit to start at the beginning.
limit optionalintegerMaximum number of lines to return. Omit to read to the end.

list_files

List files · read only

List a directory or file in the project, `~/.agents/AGENTS.md`, or under `~/.agents/skills/`. Lists one level by default; set recursive to walk subdirectories, and glob to filter (for example '**/*.ts'). Includes dotfiles. Recursive listings respect .gitignore and always skip .git and node_modules. Output is truncated to 1000 entries.

ArgumentTypeWhat it means
path optionalstringDirectory or file to list. Defaults to the project root.
recursive optionalbooleanWalk subdirectories. Defaults to false.
glob optionalstringOnly return entries matching this glob, e.g. '**/*.ts'.

grep

Search file contents · read only

Search a directory or file for a regular expression. Paths may be project-relative, `~/.agents/AGENTS.md`, or under `~/.agents/skills/`. Returns matching lines with file paths and 1-based line numbers. Respects .gitignore and always skips .git and node_modules. Output is truncated to 200 matches, and long lines to 500 characters.

ArgumentTypeWhat it means
patternstringRegular expression to search for.
path optionalstringDirectory or file to search. Defaults to the project root.
glob optionalstringRestrict the search to files matching this glob.
caseInsensitive optionalbooleanIgnore case. Defaults to false.
maxResults optionalintegerMaximum matches to return (max 200).

edit_file

Edit file

Edit a file by exact text replacement. oldString must match a unique region of the file, if it appears more than once the edit is refused, so include surrounding lines to disambiguate rather than retrying. Returns a unified diff of what changed.

ArgumentTypeWhat it means
pathstringPath relative to the project root. Must stay inside the project.
oldStringstringExact text to replace. Must match the file byte for byte and must appear exactly once, include surrounding lines to make it unique.
newStringstringReplacement text.

write_file

Write file

Write content to a file, creating it if it does not exist and overwriting it entirely if it does. Parent directories are created automatically. Prefer edit_file for changes to an existing file, so the rest of it is not at risk.

ArgumentTypeWhat it means
pathstringPath relative to the project root. Must stay inside the project.
contentstringFull contents to write. Overwrites any existing file.

apply_patch

Apply a multi-file patch

Apply several file operations in one call: create, update (unique text replacement), replace (whole file), delete, or move. Checked before anything is written; if any operation cannot run, none of them do. At most 20 operations and 1000KB. Prefer this over repeated edit_file when more than one file must change together.

ArgumentTypeWhat it means
operationsarrayFile operations to apply together, all or nothing (max 20). Combined contents must stay within 1000KB.

list_git_workspaces

List Git workspaces · read only

List every Git workspace in this repository, including workspaces that are not connected to Exeora. Returns absolute local paths so one can be passed to attach_workspace. Requires the connected machine to be online; list_workspaces is the offline inventory of connected workspaces.

create_workspace

Create workspace

Create a native Git workspace under Exeora's managed workspace root and connect it to this project. Omit the routing workspace to base it on the project root's HEAD, or name a connected workspace to use that checkout as the source. Always use this tool rather than executing raw git commands.

ArgumentTypeWhat it means
branchstringBranch to create or reuse in the new workspace.
from optionalstringGit ref to base a new branch on. Cannot be used with reuseExistingBranch.
reuseExistingBranch optionalbooleanUse an existing local branch instead of creating one. Defaults to false.
name optionalstringDisplay name. Defaults to the branch.
slug optionalstringStable URL-safe selector. Derived from the branch by default.

attach_workspace

Attach workspace

Connect an existing Git workspace to Exeora without taking ownership of it. Pass exactly one absolute path or exact branch; use list_git_workspaces to discover candidates.

ArgumentTypeWhat it means
path optionalstringAbsolute path of an existing Git workspace. Pass exactly one of path or branch.
branch optionalstringExact branch checked out in an existing Git workspace. Pass exactly one of branch or path.
name optionalstringDisplay name for the connected workspace.
slug optionalstringStable URL-safe selector. Derived automatically by default.

detach_workspace

Detach workspace

Disconnect a workspace from Exeora without changing or deleting the Git checkout. The MCP routing workspace argument is required and names the workspace to detach.

remove_workspace

Remove workspace

Disconnect and physically remove a Git workspace. Refuses uncommitted changes unless force is true, and keeps the branch unless deleteBranch is true. The MCP routing workspace argument is required. Always use this tool rather than executing raw git commands.

ArgumentTypeWhat it means
force optionalbooleanRemove even when the workspace has uncommitted changes. Defaults to false.
deleteBranch optionalbooleanAlso delete the local branch with Git's safe branch -d. Defaults to false.

run_command

Run command

Run a shell command on the user's machine, in the project or under `~/.agents/skills/`. Returns stdout, stderr and the exit code. Output is truncated to the last 200KB. The command is killed, with everything it started, after 60s by default and at most 300s. Stdin is closed, so a command that waits for input exits rather than hanging.

ArgumentTypeWhat it means
commandstringShell command to run inside the project.
cwd optionalstringProject-relative, or under `~/.agents/skills/`. Defaults to the project root.
timeoutMs optionalintegerWall-clock budget in milliseconds (default 60000, max 300000).

start_command

Start a long-running command

Start a command in the project or under `~/.agents/skills/` and return immediately with a handle, for anything that outlives a single call: a dev server, a watch task, a long test run. Read its output with get_command_output and stop it with kill_command. It keeps running until it exits or is killed, but dies with the connection to Exeora, so nothing is left running once nobody is watching. Use run_command for anything that finishes on its own.

ArgumentTypeWhat it means
commandstringShell command to start inside the project.
cwd optionalstringProject-relative, or under `~/.agents/skills/`. Defaults to the project root.

get_command_output

Read a command's output · read only

Read output from a process started with start_command, continuing from a cursor. Returns at most 100KB per call, along with whether the process is still running and its exit code if not. Only the last 256KB is kept, so output is reported as skipped rather than silently lost if you read too slowly.

ArgumentTypeWhat it means
processIdstringHandle returned by start_command.
cursor optionalintegerWhere to read from, as returned by the previous call. Omit to read from the start.

send_command_input

Write to a command's input

Write to the standard input of a process started with start_command, for one waiting on an answer. Appends a newline unless told otherwise.

ArgumentTypeWhat it means
processIdstringHandle returned by start_command.
datastringWritten to the process's stdin exactly as given.
newline optionalbooleanAppend a newline. Defaults to true, since most prompts wait for one.

kill_command

Stop a command

Stop a process started with start_command, along with everything it started. Reports killed: false when it had already exited, which is not an error.

ArgumentTypeWhat it means
processIdstringHandle returned by start_command.

list_skills

List agent skills · read only

List Agent Skills available on this machine: `~/.agents/skills/` and `.agents/skills/` in the project. Returns name, description, source and the path to pass to read_file. Call once near the start of a session; when a description matches the task, read_file that path and follow it. Project skills override user skills with the same name.

Choosing a project

list_projects exists only on the account URL, where one connection covers several projects and a caller needs to see the valid targets. It is answered by the gateway and never reaches a machine, so no project policy applies to it.

With one project granted, there is nothing to choose and calls may omit project. With more, every executor tool call must carry a project slug or id. The target belongs to that call, so two conversations in the same client can work in different projects without moving each other.

list_workspaces

List workspaces · read only · account URL only

List the Git workspaces connected under a project. Pass a project slug or id when this connection reaches more than one project.

ArgumentTypeWhat it means
project optionalstringThe project's slug, or its id. Slugs are unique within an account.

list_projects

List projects · read only · account URL only

List the projects this connection can reach. When more than one is listed, every other tool call must name its project by slug or id.

Reading the manual

One more, on both URLs, taking no arguments and reaching no machine.

get_agent_prompt

Get the Exeora agent prompt · read only

Exeora's own guidance for working as a coding agent on someone's machine: how to search, edit and run things with these tools, and what a refusal from the project's policy means. Read it before your first tool call in a session, and follow it alongside your own instructions.

It returns a constant from the gateway, so it answers with the machine asleep and no project policy applies to it. The same text arrives as the coding_agent prompt, and a shorter form of it in the handshake. See the agent prompt.