the language
invoke
Use a tool. Fetch a page, write a file, call GitHub. Every tool explicit. One of the four verbs. A verb is a distinct native execution model, and every task speaks exactly one. 28 nika: builtins + mcp:<server>/<tool>; everything callable is a tool.
- 3block keysthe contract
- 0requiredall optional
- 6check gatestyped findings
- 10skeletonsspeak this verb
the shape
a complete workflowSchema-valid whole: this exact text passes nika check (the on-page YAML gate re-validates it on every test run).
nika: v1workflow: id: use-a-tooltasks: page: invoke: tool: "nika:fetch" args: { url: "https://nika.sh" }inside invoke:
3 keys · 0 requiredThe block's vocabulary comes from the served contract itself (workflow.schema.json). Each key opens its register row.
- args
objectthe tool call’s arguments, validated against the builtin’s declared contract before anything runs- tool
stringTool reference · nika:<path> (closed v0.1 builtin set) OR mcp:<server>/<tool> (requires the slash). The namespace set is CLOSED at v1 (spec/02-verbs.md) — an x-<vendor>: prefix is RESERVED, not valid (engine-specific tools route through mcp: · spec/06-stdlib-contract.md §Namespace ownership).- workflow
stringCompose another workflow (spec 14) · a STATIC target: a filesystem path OR registry:owner/name@version (pinned). A templated target is refused at check (NIKA-COMP-001). Exactly one of tool: | workflow: (the invoke tagged union · G21).
cross-references
skeletons that speak it
the check gates
the vocabulary
everything callable is a tool: the 28 builtins are invoke's standard library; mcp: servers are the other lane.
where it lives
errors of this verb
The verbs are locked forever: four, never five (fetch is a builtin, not a verb; ordering is the DAG's job, not a word's). The grammar lives in spec 02 · verbs; every other key is in the keyword register. Read the spec →