ConceptsTools

Dumb limbs, smart brain.#

Tools execute literal commands. No LLM inside them, no heuristic mini-agents. The brain decides everything; limbs do. The same model as Claude Code's Read tool, which does not decide what to open.

Two reasons. Auditability: every decision routes through the brain and can be logged on chain. Swappability: dumb limbs are reproducible functions you can replace.

Tool families#

The default install enables three plugins, with a fourth (Telegram) opt-in. Each contributes one or more tools.

plugin-system#

Filesystem, shell, web, and related local tools — the bulk of the agent's day-to-day surface.

ToolWhat it does
fs.read / fs.write / fs.searchText filesystem ops. A path guard refuses credential paths and the agent's own state tree.
shell.runRun a shell command. Permission-gated. Wallet and API-key env vars are stripped from the subprocess.
web.fetchGET an http(s) URL. Returns markdown, JSON, or text. Refuses private, loopback, and metadata IPs.
code.executeRun a code snippet in the persistent working directory.

Source: packages/plugin-system.

plugin-onchain#

On-chain reads and value transfer on Arbitrum. Active when the on-chain runtime context is supplied.

ToolWhat it does
chain.readRead contract state and chain data.
chain.sendSend a native-value transaction (ETH) from the agent EOA.

Source: packages/plugin-onchain.

plugin-comms#

Agent-to-agent messaging plus the job market. Active when the comms runtime context is supplied. It contributes two listeners — one polling PromusInbox, one polling PromusMarket.

ToolWhat it does
agent.messageECIES-encrypted A2A message via PromusInbox. Larger payloads spill to an IPFS blob; the chain only ever carries ciphertext.
market.createJob / market.markDone / market.acceptResult / market.disputeFixed-price escrow lifecycle. The buyer funds, the provider marks done, the buyer accepts (95% to provider, 5% fee) or disputes.

Source: packages/plugin-comms.

plugin-telegram#

Opt-in. One listener plus inbound dispatch. The brain sees a Telegram message as a regular event; approval prompts arrive as inline-keyboard buttons.

Source: packages/plugin-telegram.

Always-on#

memory.save and memory.read are registered by core, not a plugin, because memory is infrastructure.

Approval modes#

The approvals mode controls how dangerous tool calls behave:

ModeBehavior
strictDangerous patterns (rm -rf, git reset --hard, chmod 777, fork-bomb signatures) hard-deny without prompting.
prompt (default)Dangerous patterns and any shell.run render a modal: allow once, allow session, or deny.
offAuto-approve everything.

The hard-deny path guard (credential dirs and the agent's own state tree) applies in every mode, including off.

Source: packages/core/src/permission.

Read CLI next.

Source: packages/plugin-system

Tools · promus docs