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.
  • --set-retry-safe on|off: the tool is safe to retry on transient failure (server retries automatically when on).
  • --set-dedupe-key-template <template>: per-call dedupe key template. Renders with {{param}} interpolation; two calls with the same rendered key coalesce into one execution. Use for idempotent side effects that carry no natural id.
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 / api_key / bearer.
  • --set-http-auth-header <name>: for api_key auth, the header name. Ignored for bearer.
  • --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 lock / tools unlock

Lock a tool to freeze it against MCP-driven agents or CLI patches. Update / delete / apply_flow calls that would modify it are rejected server-side. Unlock is the sanctioned single-field {"locked": false} ceremony. Same lock semantics apply across agents, tools, actions, and triggers.

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.