Process tools control Solo-managed process entries: commands, terminals, agents, and stopped entries.
Tools
list_processes— List process entries in the effective project scope, including commands, terminals, agents, and stopped entries.get_process_status— Read detailed status for one process, includinginput_deliveries: pending and recent automated input deliveries from this app session. Each delivery has astatusofpending,delivering,delivered,undelivered, oruncertain.rename_process— Rename a process in the Solo UI.select_process— Select a process in the Solo UI so its terminal surface is attached and rendered.start_process— Start one existing Solo process entry. This can start a stored command, terminal, or agent. Usespawn_process(kind="terminal")to create a new terminal. Preferspawn_agentto create a new agent;spawn_process(kind="agent")remains the generic fallback. Only command processes must be trusted in the Solo UI before MCP can start them.stop_process— Gracefully stop one running process.restart_process— Restart one existing Solo process entry. This can restart a stored command, terminal, or agent. Usespawn_process(kind="terminal")to create a new terminal. Preferspawn_agentto create a new agent;spawn_process(kind="agent")remains the generic fallback. Only command processes must be trusted in the Solo UI before MCP can restart them.send_input— Send text (input) or raw bytes (bytes, such as[13]for Enter or[3]for Ctrl+C) to a running process. Text is followed by Enter unlesssubmit: false. For agents,intentchooses how text is delivered; see How agent messages are delivered. Optionalwait_ms, clamped to 250–10,000 ms, returns the rendered output tail after delivery completes.close_process— Remove one stored Solo terminal or Solo agent from the project. Usestop_processorrestart_processfor command processes.
Notes
Command trust still matters. MCP can start or restart trusted command processes, but untrusted command entries must be reviewed in the Solo UI first.
stop_process and restart_process refuse to stop or restart the MCP caller's own Solo process unless you pass confirm_self_stop: true. Likewise, if close_process targets the caller's own process, it requires confirm_self_close: true. Set these only when the user explicitly asked that process to stop, restart, or close itself.
How agent messages are delivered
For agents, send_input text with the default intent: "message" joins the same queue as timer deliveries. Queued messages:
- arrive in order, behind earlier timer and MCP messages to the same agent;
- wait while you've typed in that terminal in the last few seconds, and while the program reports that it is blocked;
- arrive as a bracketed paste when the agent has paste mode on, and Solo waits for the agent to read the text before sending Enter.
Use intent: "interaction" only for a deliberate answer to, or edit of, the agent's current prompt; it's written right away as keystrokes. Raw bytes and submit: false are always interactions. For commands and terminals, input is always written directly.
Raw bytes made only of Tab, newline, or carriage return (up to 8 bytes) are queued behind earlier messages too, and they're dropped if you type in the meantime so an automated Enter never submits your draft. Any other bytes, such as Ctrl+C or Escape, go to the agent immediately.
If an interrupted submission may have left a draft in the agent's composer, Solo holds further automated input until the process restarts.
Delivery outcomes
send_input returns within 30 seconds:
| Outcome | What it means |
|---|---|
| Delivered | The bytes reached the terminal. |
Pending, with a delivery_id |
Solo accepted the message and will deliver it. Don't resend; check get_process_status for that delivery. |
Timed out with accepted: false |
Nothing was queued or sent. It's safe to retry. |
Timed out with delivery_uncertain: true |
The input was handed to the terminal but delivery isn't confirmed. Don't resend; check get_process_output and get_process_status. |
Delivered means the bytes were written to the terminal, not that the agent accepted them or started a turn. Silence from the agent isn't evidence that resending text or Enter is safe. Pending messages belong to the current process run and app session; they aren't replayed after a restart.
For a new process, use spawn_process(kind="terminal") for a terminal or prefer spawn_agent for an agent. The generic spawn_process(kind="agent") path remains available. See Agent and terminal tools.