Skip to main content
The language stays verbs. Everything else is a tool, and the standard library ships builtins under the nika:* namespace, engine-native (no MCP round-trip, no subprocess), all invoked the same way:
The tables below name every builtin so you know what exists offline. For the argument contract of any one of them, ask your installed binary rather than a page that can drift:
Canonical source: nika-spec/stdlib/builtins-v0.1.md, the Apache-2.0 language spec. The set was curated by the Rams “less but better” sweep (ADR-086/087/088): one super-powerful builtin with mode args beats five single-purpose ones.

Overview

Builtins

tools · 6 categories

Extract modes

on nika:fetch

Namespace

nika:* · engine-native

Core (6)

The workflow-control family: speak, signal, guard, ask, finish, pause.

File (5)

Data (9)

jq is THE data language: map, filter, reshape, merge. The other eight cover what jq genuinely cannot do: diff, validate, delete-on-null merge, format conversion, generation, time, hashing, adjudication.

Network (2)

Engines MUST ship SSRF defense on nika:fetch: private-network and cloud-metadata targets are rejected unless explicitly configured, and self-signed TLS is rejected by default.

Introspection (2)

Media (4)

API keys are engine-configured, never workflow args: OPENAI_API_KEY / GEMINI_API_KEY / XAI_API_KEY (or the NIKA_-prefixed variants) and the local server’s NIKA_IMAGE_LOCAL_URL (+ optional NIKA_IMAGE_LOCAL_API_KEY) are read once at the engine’s composition root. The provider endpoints are engine-fixed constants — permits.net.http does not govern them (exactly like infer:); permits.tools and permits.fs do.

Design rules the set obeys

  • One super-powerful builtin, multi-mode args: fetch+extract, jq, convert, wait, date, inspect all follow the same pattern. No per-direction or per-shape builtin slots.
  • jq subsumes: anything that is a pure JSON transform is a jq expression, not a builtin. A builtin earns its slot only by doing what jq cannot.
  • Additive forever: new builtins may join in stdlib v0.x; existing arg shapes never break (the language envelope nika: v1 is frozen).

See also

Full stdlib spec

Per-builtin args, error codes (NIKA-BUILTIN-*), trust classes, and what jq subsumed out of v0.1.

Verbs

How invoke: dispatches nika:* builtins vs MCP tools.

MCP catalog

External tools: the MCP server registry Nika knows by id.

Bindings

Templating that pipes output from one invoke: to the next.