RolitRolit Docs
Rolit CLI

Extensions

MCP servers, language servers, DuckDB data, managed installs, and subagents.

MCP servers

MCP servers add tools to the agent. A server named studio exposing a timeline tool appears as studio.timeline. Server names can't reuse a built-in family name such as local, web, media, agent, google, or seo.

Manage servers with /mcp or rolit mcp, or list them in .rolit/config.json. Connections go directly from the CLI to the server, over stdio or HTTP. Tool definitions are deferred and loaded on demand with tool_search.

{
  "tools": {
    "mcpServers": [
      {
        "name": "example",
        "enabled": true,
        "transport": { "kind": "http", "url": "https://mcp.example.com/mcp" },
        "auth": "rolit",
        "timeoutSecs": 300,
        "riskOverrides": { "send_campaign": "send" }
      },
      {
        "name": "local-files",
        "transport": { "kind": "stdio", "command": "my-mcp-server", "args": ["--stdio"] }
      }
    ]
  }
}
SettingMeaning
transport{"kind": "http", "url", "headers"} or {"kind": "stdio", "command", "args", "env"}.
enabledDefaults to true.
timeoutSecsPer-call limit for that server. Default 300. Handshakes use a fixed 30-second limit.
authnone (default) sends only the entry's own headers. rolit sends your Rolit sign-in token as a bearer token. HTTP only. Opt in per server, because it is your Rolit credential.
riskOverridesRaises a tool's risk to send, spend, or publish. Other values fail config load.

Approval

Every MCP call is the External MCP tier. It asks unless session Auto is on, and it is denied in plan-only and non-interactive sessions.

Risk can only be raised, never lowered. A tool is raised by riskOverrides, by labels in the built-in ESP, CMS, CRM, and ads connector maps, and by name: a tool called like send_email, publish_post, create_ad, or update_budget is treated as Send, Publish, or Spend, and the prompt says (risk inferred from tool name). A raised tool asks in every mode, becomes a pending action in scripts, and is never available to a subagent when it is Send or Spend.

A server that fails to connect stays listed in /tools as MCP server · connection failed with the error. Image results are passed to the model as images and not as base64 text.

Language servers (lsp.*)

Give the agent code intelligence from language servers. Servers start on first use and stay alive for the session. Results use workspace-relative paths and are redacted.

/lsp                        # list the catalog and current state
/lsp install rust           # rust-analyzer, via rustup
/lsp install typescript     # typescript-language-server, via npm
/lsp install python         # python-lsp-server, via pip
/lsp install go             # gopls, via the Go toolchain
/lsp rust off               # disable an installed server

Installs run in the background with a ten-minute limit, then restart the session with history preserved. The required ecosystem tool (rustup, npm, python3, or go) must be installed. To use another server, add it under tools.lspServers:

{
  "tools": {
    "lspServers": [
      { "name": "rust", "command": "rust-analyzer", "extensions": ["rs"], "languageId": "rust" }
    ]
  }
}
ToolWhat it returns
lsp.hoverHover information at a path, line, and character (zero-based lines, UTF-16 offsets)
lsp.definitionWhere a symbol is defined
lsp.referencesWhere a symbol is used
lsp.document_symbolsSymbols in one file
lsp.workspace_symbolsSymbols matching a query (needs server if more than one is enabled)
lsp.diagnosticsErrors and warnings for a file

All are Read tier.

DuckDB data (duckdb.*)

Load files, query them with SQL, and chart the results in the terminal. Interactive chat only. Install the engine first:

/setup duckdb

See Setup.

The model supplies a table name, SQL, and column names, never a path, command, or server.

ToolTierWhat it does
duckdb.loadWrite (replace is Explicit consent)Loads a workspace file or a public CSV, TSV, or Parquet link (up to 256 MiB) into a table. mode is create (never overwrites), replace, or append. Returns the schema, row count, and a 5-row preview.
duckdb.queryBy statementOne SQL statement. Queries run on a read-only connection. DROP, DELETE, TRUNCATE, and CREATE OR REPLACE need explicit consent. Returns up to 200 rows. It can't read or write files.
duckdb.chartReadDraws a bar, line, or scatter chart from cached rows. Large series are sampled, and more than 60 bar categories are refused.
duckdb.watchExplicit consentRe-runs a SELECT every 5 to 3,600 seconds and redraws. At most 3 at a time, and it stops after 3 failed refreshes.
duckdb.watch_stopMetadataStops one live chart or all of them.

Open the charts with /data (←/→ switches charts, t shows the table, s stops a live chart). /data stop [id] stops live charts.

Subagents (agent.*)

A subagent is a second run with its own context, tool budget, and journal, working on the same workspace in the background. Use it to hand off a longer, independent goal.

  • Run /spawn <goal> yourself, or let the agent spawn one.
  • Press Ctrl+G to open the subagent panel: j/k select, x cancels, Esc closes. The composer footer shows how many are running or waiting.
  • A subagent can't spawn other subagents and can't ask you questions. It asks its parent with agent.ask_parent.

Capability levels

The level bounds what a subagent may ever do, whatever the parent asks for.

LevelUnlocks
c0local.read, local.search, web.* (read-only)
c1local.write, local.edit, local.run_command
c2Browser inspection tools, computer.*
c3 (default)deploy, MCP tools, media.*

A subagent runs under its parent's approval mode and the same workspace. Send and Spend tools are never available to it.

Settings

Change them in the /agents panel, with /agents model <id|clear>, level <c0-c3>, pane <n>, process <n>, or timeout <secs>, or in .rolit/config.json. Changes apply to the next session.

{
  "tools": {
    "subagents": {
      "capabilityLevel": "c3",
      "maxConcurrentPerPane": 4,
      "maxConcurrentPerProcess": 12,
      "defaultTimeoutSecs": 600,
      "maxTimeoutSecs": 1800,
      "defaultEscalationTimeoutSecs": 300
    }
  }
}

Set defaultModel to a faster or cheaper model for routine delegated work. Without it, a subagent uses its parent's model.

Tools

ToolSideWhat it does
agent.spawnParentStarts a subagent from a goal. mode is background (default) or await (waits up to 30 seconds). timeoutSeconds is 1 to 1,800 (default 600).
agent.statusParentCurrent state of one subagent
agent.resultParentThe final answer once finished, or not_ready
agent.waitParentA bounded wait of 1 to 60 seconds. Background completion normally arrives automatically.
agent.cancelParentRequests cancellation
agent.listParentLists subagents
agent.answerParentAnswers a subagent's question
agent.ask_parentSubagentAsks the parent a question. At most maxEscalations (0 to 3, default 3).

A subagent's final answer comes back to the parent as ordinary user-level content, so it gains no extra authority. A subagent that is killed mid-run is recovered as orphaned on /resume, not restarted silently.

On this page