Skip to main content
Tools are what Agents call at runtime. The tools command group creates, edits, and configures Tool blocks. A Tool has a runtime (HTTP or inline), typed parameters, and optional HTTP headers.

Commands

tools create

Flags:
  • --name <n> (required) — how the Agent refers to it.
  • --description <d> — the single-most-important field. The Agent uses this to decide when to call the tool. Write clearly.
  • --runtime <json> — the runtime spec (HTTP or inline).
  • --params <json> — array of parameters. See nora schema show for the exact shape.
  • --x <n>, --y <n> — canvas position.
Runtime shapes at a glance: HTTP:
Inline (JS/Python/SQL):
The command prints the new Tool’s ID.

tools update

Update flags — grouped

Identity
  • --set-name <n>
  • --set-description <d>
  • --set-icon <name>
Behavior
  • --set-idempotent on|off — is calling twice the same as calling once?
  • --set-required on|off — Agent must call this at least once per run.
  • --set-approval on|off — require approval before each call.
  • --set-max-turns <n> — cap how many times the Agent can call this in one run.
HTTP runtime
  • --set-runtime-kind http|inline — switch runtime.
  • --set-http-method <m>GET / POST / PATCH / PUT / DELETE.
  • --set-http-url <url>.
  • --set-http-auth-kind <k>none / bearer / header / basic / secret.
  • --set-http-auth-header <name> — for header auth, header name.
  • --set-http-auth-value <v> — auth value (literal or secrets://ref).
Inline runtime
  • --set-inline-lang <lang>javascript / python / sql.
  • --set-inline-code <text> — inline code.
  • --set-inline-code-file <path> — code from file (replaces --set-inline-code).
  • --set-inline-database-url <url> — for SQL: database connection string. Accepts secrets://ref.
Verification
  • --verify — for SQL tools, tests the DB connection and marks connected=true on success.
Position/size
  • --set-x <n>, --set-y <n>, --set-width <n>.
Bulk
  • --patch <json> — arbitrary JSON merge.
Runtime --set-* flags deep-merge into the existing runtime object, so you can change just one field without re-specifying the whole runtime.

tools edit

Opens Tool JSON in $EDITOR. Save to apply.

tools verify-db

For SQL Tools, connects to the configured database and runs a probe query. On success, marks runtime.connected=true so the Tool shows as green in the app. Failures print the exact error (bad URL, missing driver, auth failure).

tools params — declared inputs

Parameters are the typed inputs the Agent picks values for. Each param has a name, type, source (Agent-picked or fixed), location, and description.

List

Prints all parameters as JSON.

Add

Flags:
  • --name <n> (required).
  • --type <t> (required) — string / integer / number / float / boolean / array / object.
  • --description <d> — read by the Agent to choose values.
  • --required — no default; Agent must supply.
  • --location <loc>url / query / body / header. Where the value goes in the HTTP request.
  • --source <src>llm (Agent picks) or fixed.
  • --fixed-value <v> — for source=fixed.

Update

Patch. Only fields passed change.

Remove & reorder

reorder requires a full permutation (every param exactly once).

tools headers — HTTP headers

For HTTP Tools, headers are stored on the runtime.

List / add / remove

Secret values: pass secrets://<ref> (references a workspace secret) or a plain string (stored inline). For interactive secret entry:
See Piping & secrets for all input modes.

Recipes

Migrate a Tool from one URL to another

Publish separately.

Rotate an API key across all Tools using it

Better long-term: use secrets://api_key and rotate the underlying secret once.

Freeze a Tool’s arguments

Turn Agent-picked args into fixed ones for a specific rollout:
Every future call will use "customer_requested" regardless of Agent output.