Tools

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

Every path is interpreted relative to the project root and confined to it before anything touches the disk. An absolute path, or one that climbs out with .., is refused withPATH_ESCAPE rather than resolved.

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 optionalproject, naming the project to run that one call in without changing the active one. 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.

read_file

Read file · read only

Read the contents of a text file in the project. 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
pathstringPath relative to the project root. Must stay inside the project.
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 directory contents in the project. 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 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 file contents for a regular expression. 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 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.

run_command

Run command

Run a shell command on the user's machine, in the project directory. 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 optionalstringWorking directory relative to the project root. Defaults to the root.
timeoutMs optionalintegerWall-clock budget in milliseconds (default 60000, max 300000).

start_command

Start a long-running command

Start a command 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 optionalstringWorking directory relative to the project root. Defaults to the 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.

Choosing a project

These three exist only on the account URL, where one connection covers several projects and something has to say which one a call lands in. They are answered by the gateway and never reach a machine, so no project policy applies to them.

With one project granted, there is nothing to choose and calls go there. With more, the first call that has not been told where to go is refused with NO_ACTIVE_PROJECT, which names these tools. The choice belongs to the client rather than to a conversation, so it outlives the one that made it and is shared with any other conversation open in the same client.

list_projects

List projects · read only · account URL only

List the projects this connection can reach, and say which one is active. The active project is where every other tool runs unless a call names another one.

get_active_project

Get the active project · read only · account URL only

The project every other tool works in right now, or null when none is selected. Use list_projects to see what else is available.

set_active_project

Switch the active project · account URL only

Choose the project every other tool works in from now on, by slug or id. The choice belongs to this client rather than to a conversation, so it outlives this one and is shared with any other conversation open in the same client. To work somewhere else for a single call without moving it, pass that call a project argument instead.

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