Tools

A tool is a plugin an agent calls — a typed capability with declared inputs, outputs, permissions, and environment. Never a special case in the runtime.

Tools are how an agent reaches the outside world — search, an HTTP client, a wallet reader. Each declares its input and output as JSON Schema, its runtime (node, python, or http), the permissions it needs, and the environment it requires. An agent lists the tools it uses; installing the agent resolves them.

One protocol

Every tool speaks the same wire protocol, so the runtime treats them all identically: JSON arrives on stdin as { input, context }, JSON leaves on stdout as { output } or { error }, and logs go to stderr. An http tool instead proxies to a URL with placeholder substitution — and the caller cannot tell the difference. That uniformity is what keeps the runtime small.

Working with tools

$ norien tool search wallet$ norien tool info http-client$ norien tool install http-client$ norien tool publish
NoteTools are versioned in the registry just like agents. Browse the marketplace in the app.