{ "format": "wai.ops/1", "toolchain": "0.4.0", "envelope": "envelope/1", "exit_codes": [ { "exit": 0, "meaning": "done; every check held" }, { "exit": 1, "meaning": "ran, and a check failed" }, { "exit": 2, "meaning": "usage error or invalid input" }, { "exit": 3, "meaning": "authentication or permission" }, { "exit": 4, "meaning": "confirmation required; nothing changed" }, { "exit": 5, "meaning": "not found (file, target, room, operation)" }, { "exit": 6, "meaning": "target unavailable; safe to retry" }, { "exit": 7, "meaning": "internal error" } ], "agent_flags": [ { "flag": "--json", "summary": "one JSON envelope on stdout: {\"wai\": \"envelope/1\", \"op\", \"ok\", \"data\" | \"error\"}", "aliases": [] }, { "flag": "--dry-run", "summary": "write nothing and send nothing; say what would be done (an operation that only reads ignores it)", "aliases": [] }, { "flag": "--yes", "summary": "confirm a change that waits for confirmation; off a terminal, without it, exit 4", "aliases": [ { "flag": "--confirm", "deprecated": { "since": "0.3.0", "use_instead": "--yes" } } ] }, { "flag": "--no-input", "summary": "never ask: a change that waits for confirmation exits 4 unless --yes is given", "aliases": [] } ], "operations": [ { "id": "toolchain.test", "summary": "WAI's four steps (name, dispatch, rebuild, receipt) on a picture made here, its receipt checked offline", "cli": "wai hello", "aliases": [], "usage": [ "wai hello [] WAI's four steps (name, dispatch, rebuild, receipt) on a sample, written to (wai-hello)" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "dir": { "type": "string", "format": "path", "description": "Where the object and its receipts are written (wai-hello).", "x-cli": { "positional": true } } }, "required": [], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": true, "needs": { "all": [ "quickstart" ] }, "names": { "cli": "wai toolchain test", "mcp": null, "c": "wai_toolchain_test", "rust": "wai::toolchain::test", "sdk": "wai.toolchain.test" } }, { "id": "project.create", "summary": "A new project from one of the examples, written into a new or empty directory; --list names the templates", "cli": "wai create", "aliases": [], "usage": [ "wai create --template | create --list a new project from one of the examples" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "dir": { "type": "string", "format": "path", "description": "A directory that does not exist or is empty.", "x-cli": { "positional": true } }, "template": { "type": "string", "description": "The template, one of `wai create --list`.", "x-cli": { "flag": "--template" } }, "list": { "type": "boolean", "description": "List the templates instead.", "x-cli": { "flag": "--list" } } }, "required": [], "additionalProperties": false }, "output": { "type": "array", "items": { "type": "object", "required": [ "template", "title", "files" ] } }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai project create", "mcp": null, "c": "wai_project_create", "rust": "wai::project::create", "sdk": "wai.project.create" } }, { "id": "dev.start", "summary": "A relay, a room service and the room page on one origin on this machine, for development; --check starts, checks every piece and stops", "cli": "wai dev", "aliases": [], "usage": [ "wai dev [--port P] [--dir D] [--site DIR] [--watch FILE [--watch-ms MS]] [--call] [--remote]", " [--show [--audience N]] [--messaging] [--e2ee] [--publishers N] [--check] [--for S] [--web DIR]", " [--relay BIN] [--room BIN]", " --port P the origin's port on 127.0.0.1 (8080; 0 picks a free one)", " --dir D keys, configuration and logs (.wai/dev)", " --site DIR your page: DIR is served at /, the room client beside it at /room/", " --publishers N places in the room (4)", " --watch FILE a watch room: everyone in it watches FILE together (.wav, .webm, .mp4,", " .ogg, .mp3); --watch-ms MS its duration, read from a WAV file's header", " --call the room is a call: /room/call.html places one, rings, answers", " --remote the room is one host's shared screen; prints the host's invitation", " --show the room is a show: hosts on camera, an audience that votes in polls", " the room's clock opens and signs (co-performance); --audience N each", " viewer's inputs to a poll (1)", " --messaging a conversation beside the room, at /msg-api/: /room/messages.html", " --e2ee every room end-to-end encrypted", " --check start, check every piece through the origin, report, stop", " --for S stop after S seconds", " --web DIR the room client's files (beside this binary: ../share/wai/web; $WAI_WEB)", " --relay BIN wai-relay (beside this binary, then $PATH; $WAI_RELAY_BIN)", " --room BIN wai-room (beside this binary, then $PATH; $WAI_ROOM_BIN)", " WAI Studio is served at /_wai/ when its files are found ($WAI_STUDIO, or share/wai/studio", " beside this binary).", " A wai.json in the current directory (`wai create` writes one) gives the defaults; a flag", " wins over it. Ctrl-C stops everything. With --json and without --check, the first line", " is {\"ready\": true, ...}." ], "placement": "local", "effect": "runs", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": true, "http": false }, "toolset": "dev", "stability": "stable", "input": { "type": "object", "properties": { "port": { "type": "integer", "description": "The origin's port on 127.0.0.1 (8080; 0 picks a free one).", "x-cli": { "flag": "--port" } }, "dir": { "type": "string", "format": "path", "description": "Keys, configuration and logs (.wai/dev).", "x-cli": { "flag": "--dir" } }, "site": { "type": "string", "format": "path", "description": "A directory served at /.", "x-cli": { "flag": "--site" } }, "watch": { "type": "string", "format": "path", "description": "A file everyone in a watch room watches together.", "x-cli": { "flag": "--watch" } }, "watch_ms": { "type": "integer", "description": "The watch file's duration in milliseconds.", "x-cli": { "flag": "--watch-ms" } }, "call": { "type": "boolean", "description": "The room is a call.", "x-cli": { "flag": "--call" } }, "remote": { "type": "boolean", "description": "The room is one host's shared screen.", "x-cli": { "flag": "--remote" } }, "show": { "type": "boolean", "description": "The room is a show: hosts on camera, an audience that votes in polls.", "x-cli": { "flag": "--show" } }, "audience": { "type": "integer", "description": "With --show, each viewer's inputs to a poll (1).", "x-cli": { "flag": "--audience" } }, "messaging": { "type": "boolean", "description": "A conversation beside the room.", "x-cli": { "flag": "--messaging" } }, "e2ee": { "type": "boolean", "description": "Every room end-to-end encrypted.", "x-cli": { "flag": "--e2ee" } }, "publishers": { "type": "integer", "description": "Places in the room (4).", "x-cli": { "flag": "--publishers" } }, "check": { "type": "boolean", "description": "Start, check every piece, report and stop.", "x-cli": { "flag": "--check" } }, "for_s": { "type": "integer", "description": "Stop after this many seconds.", "x-cli": { "flag": "--for" } }, "web": { "type": "string", "format": "path", "description": "The room client's files.", "x-cli": { "flag": "--web" } }, "relay": { "type": "string", "format": "path", "description": "The relay's binary.", "x-cli": { "flag": "--relay" } }, "room": { "type": "string", "format": "path", "description": "The room service's binary.", "x-cli": { "flag": "--room" } } }, "required": [], "additionalProperties": false }, "output": { "type": "object", "required": [ "ready", "seconds", "steps", "checks", "origin" ] }, "stream": { "type": "object", "required": [ "ready" ], "properties": { "ready": { "type": "boolean" }, "origin": { "type": "string" } } }, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai dev start", "mcp": "dev_start", "c": "wai_dev_start", "rust": "wai::dev::start", "sdk": "wai.dev.start" } }, { "id": "receipt.verify", "summary": "Every receipt index (*.wai.receipts) under each path, its group receipts and claims checked offline, and every conformance result and fleet report bundle there", "cli": "wai verify", "aliases": [], "usage": [ "wai verify ... the receipts (receipt indexes *.wai.receipts), conformance results (*.wai-conform.json)", " and fleet report bundles (*.wai-fleet.json) under each path, checked offline" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": true, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "paths": { "type": "array", "items": { "type": "string" }, "description": "Files or directories holding receipt indexes, conformance results or fleet report bundles.", "x-cli": { "positional": true } } }, "required": [ "paths" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "quickstart" ] }, "names": { "cli": "wai receipt verify", "mcp": "receipt_verify", "c": "wai_receipt_verify", "rust": "wai::receipt::verify", "sdk": "wai.receipt.verify" } }, { "id": "envelope.inspect", "summary": "What an envelope holds and whether this build decodes it: media, intent, pin, capability, fallback, the dispatch verdict and the conformance checks", "cli": "wai inspect", "aliases": [], "usage": [ "wai inspect what a WAI1 or WAI2 envelope holds, and the verdict of SPEC §4's dispatch here" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": true, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "path": { "type": "string", "format": "path", "description": "A .wai envelope.", "x-cli": { "positional": true } } }, "required": [ "path" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai envelope inspect", "mcp": "envelope_inspect", "c": "wai_envelope_inspect", "rust": "wai::envelope::inspect", "sdk": "wai.envelope.inspect" } }, { "id": "envelope.wrap", "summary": "Carry a registered capability's bytes in an envelope, byte for byte, under SPEC's intent, role and candidate rules", "cli": "wai wrap", "aliases": [], "usage": [ "wai wrap [-o out.wai] [--fallback ] [--intent ]", " [--companion ]... WAI2: companions bound to the payload" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": true, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "capability": { "type": "string", "description": "A registered capability (`wai capabilities`).", "x-cli": { "positional": true } }, "payload": { "type": "string", "format": "path", "description": "The bytes to carry.", "x-cli": { "positional": true } }, "out": { "type": "string", "format": "path", "description": "The envelope (out.wai).", "x-cli": { "flag": "-o" } }, "fallback": { "type": "string", "description": "A WAI1 fallback capability.", "x-cli": { "flag": "--fallback" } }, "intent": { "type": "string", "description": "The envelope's intent (replicate where SPEC §7 allows it).", "x-cli": { "flag": "--intent" } }, "companion": { "type": "array", "items": { "type": "string" }, "description": "A companion capability and its payload, bound to the payload.", "x-cli": { "flag": "--companion" } } }, "required": [ "capability", "payload" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai envelope wrap", "mcp": "envelope_wrap", "c": "wai_envelope_wrap", "rust": "wai::envelope::wrap", "sdk": "wai.envelope.wrap" } }, { "id": "envelope.unwrap", "summary": "An envelope's capability and its checks, and with -o its payload or one component, exactly as wrapped", "cli": "wai unwrap", "aliases": [], "usage": [ "wai unwrap [-o payload] [--component ] extract any registered capability's bytes" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "path": { "type": "string", "format": "path", "description": "A .wai envelope.", "x-cli": { "positional": true } }, "out": { "type": "string", "format": "path", "description": "Where the payload is written.", "x-cli": { "flag": "-o" } }, "component": { "type": "integer", "description": "A WAI2 component's index.", "x-cli": { "flag": "--component" } } }, "required": [ "path" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai envelope unwrap", "mcp": null, "c": "wai_envelope_unwrap", "rust": "wai::envelope::unwrap", "sdk": "wai.envelope.unwrap" } }, { "id": "media.encode", "summary": "Encode a file with a codec this build holds, in an envelope; AVC and HEVC through the device's own encoders, with a signed record", "cli": "wai encode", "aliases": [], "usage": [ "wai encode [-o out.wai] [-q quality] codecs: png jpeg avif jxl jxl-lossless opus flac av1 av1-lossless zstd xz", " a build with `floor` alone encodes png and zstd; the others need `codecs`", " image codecs: .rgb (with .meta holding 'H W') or a PNG/JPEG file; audio: .f32 (raw mono float32)", " with .meta holding the sample rate; video: packed RGB frames with .meta 'N H W fps_num fps_den';", " text codecs: any file", "wai encode avc|hevc [-o out.wai] [--encoder auto|platform|va|gpu-driver|software] [--library ]", " [--device ] [--hardware yes|no] [--kbps ] [--size WxH] [--idr-every |", " --idr-plan ] [--es ] [--record --key ] [--meter [--rounds ]]", " (a build with `platform_encode`)" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "codec": { "type": "string", "description": "png, jpeg, avif, jxl, jxl-lossless, opus, flac, av1, av1-lossless, zstd, xz; or avc, hevc.", "x-cli": { "positional": true } }, "input": { "type": "string", "format": "path", "description": "The file to encode.", "x-cli": { "positional": true } }, "out": { "type": "string", "format": "path", "description": "The envelope (out.wai).", "x-cli": { "flag": "-o" } }, "quality": { "type": "integer", "description": "Quality, 1 to 100 (75).", "x-cli": { "flag": "-q" } } }, "required": [ "codec", "input" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": true, "needs": { "any": [ "floor", "codecs", "platform_encode" ] }, "names": { "cli": "wai media encode", "mcp": null, "c": "wai_media_encode", "rust": "wai::media::encode", "sdk": "wai.media.encode" } }, { "id": "media.decode", "summary": "Decode an envelope through SPEC §4's dispatch to raw samples, with a .meta file beside them", "cli": "wai decode", "aliases": [], "usage": [ "wai decode -o a build with `floor` decodes png, flac and zstd; `codecs` the rest" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "path": { "type": "string", "format": "path", "description": "A .wai envelope.", "x-cli": { "positional": true } }, "out": { "type": "string", "format": "path", "description": "The decoded samples.", "x-cli": { "flag": "-o" } } }, "required": [ "path", "out" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "any": [ "floor", "codecs" ] }, "names": { "cli": "wai media decode", "mcp": null, "c": "wai_media_decode", "rust": "wai::media::decode", "sdk": "wai.media.decode" } }, { "id": "media.generate", "summary": "Make a wai.generate.spectral picture natively and print its SHA-256, or write its instruction object", "cli": "wai generate", "aliases": [], "usage": [ "wai generate --model (--prompt --seed --steps | --instr ) --size WxH -o ", " make a wai.generate.spectral picture (RGB8) and print its SHA-256; --sizes WxH,... --write-instr", " writes the instruction object of form v0 (SPEC §5)" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "model": { "type": "string", "format": "path", "description": "The model file.", "x-cli": { "flag": "--model" } }, "prompt": { "type": "string", "description": "The prompt.", "x-cli": { "flag": "--prompt" } }, "seed": { "type": "integer", "description": "The seed.", "x-cli": { "flag": "--seed" } }, "steps": { "type": "integer", "description": "The steps.", "x-cli": { "flag": "--steps" } }, "instr": { "type": "string", "format": "path", "description": "An instruction object of form v0.", "x-cli": { "flag": "--instr" } }, "size": { "type": "string", "description": "WxH.", "x-cli": { "flag": "--size" } }, "out": { "type": "string", "format": "path", "description": "The picture, RGB8.", "x-cli": { "flag": "-o" } } }, "required": [ "model" ], "additionalProperties": false }, "output": { "type": "object", "description": "The picture's or instruction object's digests, as `wai generate --json` prints them" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "generate" ] }, "names": { "cli": "wai media generate", "mcp": null, "c": "wai_media_generate", "rust": "wai::media::generate", "sdk": "wai.media.generate" } }, { "id": "score.build", "summary": "A WSCR score from integer note fields", "cli": "wai score build", "aliases": [], "usage": [ "wai score build -o a WSCR from integer note fields" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "notes": { "type": "string", "format": "path", "description": "The note fields, JSON.", "x-cli": { "positional": true } }, "out": { "type": "string", "format": "path", "description": "The score.", "x-cli": { "flag": "-o" } } }, "required": [ "notes", "out" ], "additionalProperties": false }, "output": { "type": "object", "description": "The score's digests, as `wai score build|render --json` print them" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "score" ] }, "names": { "cli": "wai score build", "mcp": null, "c": "wai_score_build", "rust": "wai::score::build", "sdk": "wai.score.build" } }, { "id": "score.decode", "summary": "A score's reference mixdown and its digests (pcm_sha256, mixdown_blake3, score_hash)", "cli": "wai score render", "aliases": [], "usage": [ "wai score render [--pcm ] the reference mixdown and its digests" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "score": { "type": "string", "format": "path", "description": "A WSCR score.", "x-cli": { "positional": true } }, "pcm": { "type": "string", "format": "path", "description": "Where the mixdown is written.", "x-cli": { "flag": "--pcm" } } }, "required": [ "score" ], "additionalProperties": false }, "output": { "type": "object", "description": "The score's digests, as `wai score build|render --json` print them" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "score" ] }, "names": { "cli": "wai score decode", "mcp": null, "c": "wai_score_decode", "rust": "wai::score::decode", "sdk": "wai.score.decode" } }, { "id": "encoder.list", "summary": "What each encoder interface offers on this device, for AVC and HEVC", "cli": "wai encoders", "aliases": [], "usage": [ "wai encoders [--library ] what each encoder interface offers here" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "library": { "type": "string", "format": "path", "description": "A software encoder library.", "x-cli": { "flag": "--library" } } }, "required": [], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "platform_encode" ] }, "names": { "cli": "wai encoder list", "mcp": null, "c": "wai_encoder_list", "rust": "wai::encoder::list", "sdk": "wai.encoder.list" } }, { "id": "encoder.verify", "summary": "A signed encode record checked, against the stream and its source where given", "cli": "wai encode-record verify", "aliases": [], "usage": [ "wai encode-record verify [--stream ] [--source ]" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "record": { "type": "string", "format": "path", "description": "The signed record.", "x-cli": { "positional": true } }, "stream": { "type": "string", "format": "path", "description": "The elementary stream it names.", "x-cli": { "flag": "--stream" } }, "source": { "type": "string", "format": "path", "description": "The source it names.", "x-cli": { "flag": "--source" } } }, "required": [ "record" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "platform_encode" ] }, "names": { "cli": "wai encoder verify", "mcp": null, "c": "wai_encoder_verify", "rust": "wai::encoder::verify", "sdk": "wai.encoder.verify" } }, { "id": "package.build", "summary": "A package packed by the reference packager wai-pack from a policy, a source per component and a supplied floor, with its signed package receipt", "cli": "wai package build", "aliases": [], "usage": [ "wai package build --policy --out --key [--source =]... [--floor ]", " [--signer-id ] [--meter none|model:] [--packer ] [wai-pack pack's other flags]", " the reference packager's pack (extensions/packaging.md): the policy's components packed into , new or empty,", " with the package receipt (package.receipt.json); the packer is --packer, $WAI_PACK_BIN, wai-pack beside wai,", " or wai-pack on PATH" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "policy": { "type": "string", "format": "path", "description": "The packaging policy (extensions/packaging.md §3).", "x-cli": { "flag": "--policy" } }, "out": { "type": "string", "format": "path", "description": "A new or empty directory, written with the package.", "x-cli": { "flag": "--out" } }, "key": { "type": "string", "format": "path", "description": "The packager's signing key: a 32-byte seed, in hexadecimal.", "x-cli": { "flag": "--key" } }, "source": { "type": "array", "items": { "type": "string" }, "description": "A component's source, =; each component's own by default.", "x-cli": { "flag": "--source" } }, "floor": { "type": "string", "format": "path", "description": "A supplied floor's directory (floor/ beside the policy by default).", "x-cli": { "flag": "--floor" } }, "signer_id": { "type": "string", "description": "The receipt's signer id (the key's did:key by default).", "x-cli": { "flag": "--signer-id" } }, "meter": { "type": "string", "description": "none, or model:: the meter of the receipt's figure.", "x-cli": { "flag": "--meter" } }, "packer": { "type": "string", "format": "path", "description": "The packer's binary (wai-pack).", "x-cli": { "flag": "--packer" } } }, "required": [ "policy", "out", "key" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": true, "needs": null, "names": { "cli": "wai package build", "mcp": null, "c": "wai_package_build", "rust": "wai::package::build", "sdk": "wai.package.build" } }, { "id": "package.verify", "summary": "A package verified by the reference packager wai-pack: every reason it is refused, or its counts and pack digest", "cli": "wai package verify", "aliases": [], "usage": [ "wai package verify [--parent ] [--packer ] the reference packager's verify", " (extensions/packaging.md §9): the package's receipt, stage indexes, objects and floor; with --parent, a re-pack against", " the package its receipt names; exit 1 when refused" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "dir": { "type": "string", "format": "path", "description": "The package's directory.", "x-cli": { "positional": true } }, "parent": { "type": "string", "format": "path", "description": "The package a re-pack's receipt names.", "x-cli": { "flag": "--parent" } }, "packer": { "type": "string", "format": "path", "description": "The packer's binary (wai-pack).", "x-cli": { "flag": "--packer" } } }, "required": [ "dir" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai package verify", "mcp": null, "c": "wai_package_verify", "rust": "wai::package::verify", "sdk": "wai.package.verify" } }, { "id": "registry.list", "summary": "Every registered capability with its fidelity, licence class, replicate class and role, and whether this build decodes it", "cli": "wai capabilities", "aliases": [], "usage": [ "wai capabilities the registered capabilities, their tier, licence, replicate class and role" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": true, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": {}, "required": [], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai registry list", "mcp": "registry_list", "c": "wai_registry_list", "rust": "wai::registry::list", "sdk": "wai.registry.list" } }, { "id": "registry.export", "summary": "Write, or with --check compare, the registry's machine-readable export and the generated table of REGISTRY.md", "cli": "wai registry export", "aliases": [], "usage": [ "wai registry export [--root ] [--check] write (or compare) registry/capabilities.json, its", " schema, vocab/v2.* and the generated table of REGISTRY.md" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "maintainer", "stability": "stable", "input": { "type": "object", "properties": { "root": { "type": "string", "format": "path", "description": "The wai/ directory.", "x-cli": { "flag": "--root" } }, "check": { "type": "boolean", "description": "Compare, write nothing.", "x-cli": { "flag": "--check" } } }, "required": [], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai registry export", "mcp": null, "c": "wai_registry_export", "rust": "wai::registry::export", "sdk": "wai.registry.export" } }, { "id": "prior.list", "summary": "The listing of a parameter set (wai.prior.set) on stdout, and its pin on stderr", "cli": "wai prior-set", "aliases": [], "usage": [ "wai prior-set print the listing of a parameter set (wai.prior.set) and its pin" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "root": { "type": "string", "format": "path", "description": "The parameter set's directory.", "x-cli": { "positional": true } } }, "required": [ "root" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai prior list", "mcp": null, "c": "wai_prior_list", "rust": "wai::prior::list", "sdk": "wai.prior.list" } }, { "id": "stage.encode", "summary": "A refinement layer over a base and the layers below it, toward a target", "cli": "wai stage refine", "aliases": [], "usage": [ "wai stage refine --base [--on ]... --target --q N [--predictor identity|up2|rate:NUM/DEN]", " [--span F:C] [--out-dims D0,D1,D2] [--max-symbols N] [--table-per-unit] -o L.wai" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "base": { "type": "string", "format": "path", "description": "The base envelope.", "x-cli": { "flag": "--base" } }, "target": { "type": "string", "format": "path", "description": "The target samples.", "x-cli": { "flag": "--target" } }, "q": { "type": "integer", "description": "The quantiser.", "x-cli": { "flag": "--q" } }, "out": { "type": "string", "format": "path", "description": "The layer.", "x-cli": { "flag": "-o" } } }, "required": [ "base", "target", "q", "out" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "staged", "video_int", "audio_int", "splat_int" ] }, "names": { "cli": "wai stage encode", "mcp": null, "c": "wai_stage_encode", "rust": "wai::stage::encode", "sdk": "wai.stage.encode" } }, { "id": "stage.decode", "summary": "Envelopes taken in order: each layer offered, each base decoded and refined, with each report and the units", "cli": "wai stage apply", "aliases": [], "usage": [ "wai stage apply ... each layer offered, a base decoded (SPEC §4) and refined; the reports and units, or a JSON trace" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "envelopes": { "type": "array", "items": { "type": "string" }, "description": "The base, then its layers.", "x-cli": { "positional": true } } }, "required": [ "envelopes" ], "additionalProperties": false }, "output": { "description": "The trace of every stage reached, as `wai stage apply --json` prints it" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "staged", "video_int", "audio_int", "splat_int" ] }, "names": { "cli": "wai stage decode", "mcp": null, "c": "wai_stage_decode", "rust": "wai::stage::decode", "sdk": "wai.stage.decode" } }, { "id": "stage.build", "summary": "A wai.video.int_motion base of N frames of RGB8 (WIV1, keyframe 0, zero motion)", "cli": "wai stage base", "aliases": [], "usage": [ "wai stage base --frames --dims N,H,W --q Q -o base.wai" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "frames": { "type": "string", "format": "path", "description": "The frames, packed RGB8.", "x-cli": { "flag": "--frames" } }, "dims": { "type": "string", "description": "N,H,W.", "x-cli": { "flag": "--dims" } }, "q": { "type": "integer", "description": "The quantiser.", "x-cli": { "flag": "--q" } }, "out": { "type": "string", "format": "path", "description": "The base envelope.", "x-cli": { "flag": "-o" } } }, "required": [ "frames", "dims", "q", "out" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "staged", "video_int", "audio_int", "splat_int" ] }, "names": { "cli": "wai stage build", "mcp": null, "c": "wai_stage_build", "rust": "wai::stage::build", "sdk": "wai.stage.build" } }, { "id": "stage.inspect", "summary": "A refinement layer's refines, its WIR1 header and its declared cost", "cli": "wai stage inspect", "aliases": [], "usage": [ "wai stage inspect " ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "layer": { "type": "string", "format": "path", "description": "A layer envelope.", "x-cli": { "positional": true } } }, "required": [ "layer" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "staged", "video_int", "audio_int", "splat_int" ] }, "names": { "cli": "wai stage inspect", "mcp": null, "c": "wai_stage_inspect", "rust": "wai::stage::inspect", "sdk": "wai.stage.inspect" } }, { "id": "stage.wrap", "summary": "WAI1 envelopes packed into one WAI2, their manifests verbatim", "cli": "wai stage pack", "aliases": [], "usage": [ "wai stage pack ... -o x.wai" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "envelopes": { "type": "array", "items": { "type": "string" }, "description": "The base, then its layers.", "x-cli": { "positional": true } }, "out": { "type": "string", "format": "path", "description": "The WAI2 envelope.", "x-cli": { "flag": "-o" } } }, "required": [ "envelopes", "out" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "staged", "video_int", "audio_int", "splat_int" ] }, "names": { "cli": "wai stage wrap", "mcp": null, "c": "wai_stage_wrap", "rust": "wai::stage::wrap", "sdk": "wai.stage.wrap" } }, { "id": "stage.unwrap", "summary": "One component of a WAI2 envelope as its WAI1 envelope", "cli": "wai stage explode", "aliases": [], "usage": [ "wai stage explode [-o out.wai]" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "path": { "type": "string", "format": "path", "description": "A WAI2 envelope.", "x-cli": { "positional": true } }, "index": { "type": "integer", "description": "The component's index.", "x-cli": { "positional": true } }, "out": { "type": "string", "format": "path", "description": "The WAI1 envelope.", "x-cli": { "flag": "-o" } } }, "required": [ "path", "index" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "staged", "video_int", "audio_int", "splat_int" ] }, "names": { "cli": "wai stage unwrap", "mcp": null, "c": "wai_stage_unwrap", "rust": "wai::stage::unwrap", "sdk": "wai.stage.unwrap" } }, { "id": "http.export", "summary": "Envelopes named by their content hash, each with its head proof and entity tag, ready for an origin", "cli": "wai http publish", "aliases": [], "usage": [ "wai http publish ... --out " ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "envelopes": { "type": "array", "items": { "type": "string" }, "description": "The envelopes.", "x-cli": { "positional": true } }, "out": { "type": "string", "format": "path", "description": "The directory.", "x-cli": { "flag": "--out" } } }, "required": [ "envelopes", "out" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "http" ] }, "names": { "cli": "wai http export", "mcp": null, "c": "wai_http_export", "rust": "wai::http::export", "sdk": "wai.http.export" } }, { "id": "http.inspect", "summary": "The codecs parameter a sequence of envelopes advertises: its union and its floor", "cli": "wai http codecs", "aliases": [], "usage": [ "wai http codecs ..." ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "envelopes": { "type": "array", "items": { "type": "string" }, "description": "The envelopes.", "x-cli": { "positional": true } } }, "required": [ "envelopes" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "http" ] }, "names": { "cli": "wai http inspect", "mcp": null, "c": "wai_http_inspect", "rust": "wai::http::inspect", "sdk": "wai.http.inspect" } }, { "id": "http.start", "summary": "An origin on loopback serving a published directory with http-delivery's headers, ranges and If-Range", "cli": "wai http origin", "aliases": [], "usage": [ "wai http origin --root [--port P] [--delay-range FIRST-LAST:MS]" ], "placement": "local", "effect": "runs", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "root": { "type": "string", "format": "path", "description": "The published directory.", "x-cli": { "flag": "--root" } }, "port": { "type": "integer", "description": "The port on 127.0.0.1.", "x-cli": { "flag": "--port" } } }, "required": [ "root" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "http" ] }, "names": { "cli": "wai http start", "mcp": null, "c": "wai_http_start", "rust": "wai::http::start", "sdk": "wai.http.start" } }, { "id": "hls.build", "summary": "An HLS rendition of published objects", "cli": "wai http hls", "aliases": [], "usage": [ "wai http hls --objects --out [--master NAME]" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "objects": { "type": "string", "format": "path", "description": "The objects, JSON.", "x-cli": { "flag": "--objects" } }, "out": { "type": "string", "format": "path", "description": "The directory.", "x-cli": { "flag": "--out" } } }, "required": [ "objects", "out" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "http" ] }, "names": { "cli": "wai hls build", "mcp": null, "c": "wai_hls_build", "rust": "wai::hls::build", "sdk": "wai.hls.build" } }, { "id": "dash.build", "summary": "A DASH manifest of published objects", "cli": "wai http mpd", "aliases": [], "usage": [ "wai http mpd --objects --out [--period-id ID] [--set-id N]" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "objects": { "type": "string", "format": "path", "description": "The objects, JSON.", "x-cli": { "flag": "--objects" } }, "out": { "type": "string", "format": "path", "description": "The manifest.", "x-cli": { "flag": "--out" } } }, "required": [ "objects", "out" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "http" ] }, "names": { "cli": "wai dash build", "mcp": null, "c": "wai_dash_build", "rust": "wai::dash::build", "sdk": "wai.dash.build" } }, { "id": "playlist.lock", "summary": "A media playlist sealed with a signed manifest receipt", "cli": "wai http seal-playlist", "aliases": [], "usage": [ "wai http seal-playlist --key [--signer-id ID] [--content-id ID] [--parent ] [--out ]" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "playlist": { "type": "string", "format": "path", "description": "The playlist.", "x-cli": { "positional": true } }, "key": { "type": "string", "format": "path", "description": "The signing seed.", "x-cli": { "flag": "--key" } } }, "required": [ "playlist", "key" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": true, "needs": { "all": [ "http", "video_manifest" ] }, "names": { "cli": "wai playlist lock", "mcp": null, "c": "wai_playlist_lock", "rust": "wai::playlist::lock", "sdk": "wai.playlist.lock" } }, { "id": "playlist.verify", "summary": "A media playlist checked against its manifest receipt", "cli": "wai http check-playlist", "aliases": [], "usage": [ "wai http check-playlist --receipt [--parent ] [--classical ]" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "playlist": { "type": "string", "format": "path", "description": "The playlist.", "x-cli": { "positional": true } }, "receipt": { "type": "string", "format": "path", "description": "Its manifest receipt.", "x-cli": { "flag": "--receipt" } } }, "required": [ "playlist", "receipt" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "http", "video_manifest" ] }, "names": { "cli": "wai playlist verify", "mcp": null, "c": "wai_playlist_verify", "rust": "wai::playlist::verify", "sdk": "wai.playlist.verify" } }, { "id": "corpus.generate", "summary": "The HTTP conformance corpus: generated, verified, or its differential and fuzz cases written", "cli": "wai http vectors", "aliases": [], "usage": [ "wai http vectors gen|verify ", "wai http vectors diff|fuzz --seed S --count N --out F" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "maintainer", "stability": "preview", "input": { "type": "object", "properties": { "mode": { "type": "string", "description": "gen, verify, diff or fuzz.", "x-cli": { "positional": true } }, "dir": { "type": "string", "format": "path", "description": "The corpus directory.", "x-cli": { "positional": true } } }, "required": [ "mode", "dir" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "http" ] }, "names": { "cli": "wai corpus generate", "mcp": null, "c": "wai_corpus_generate", "rust": "wai::corpus::generate", "sdk": "wai.corpus.generate" } }, { "id": "http.load", "summary": "An object fetched by the byte-range procedure, repeatedly, and the record of each run", "cli": "wai http bench", "aliases": [], "usage": [ "wai http bench --url URL --runs N --advertise CAP [--advertise CAP]... --out F" ], "placement": "client", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "url": { "type": "string", "description": "The object's URL.", "x-cli": { "flag": "--url" } }, "runs": { "type": "integer", "description": "How many runs.", "x-cli": { "flag": "--runs" } }, "advertise": { "type": "array", "items": { "type": "string" }, "description": "A capability this sink advertises.", "x-cli": { "flag": "--advertise" } }, "out": { "type": "string", "format": "path", "description": "The record.", "x-cli": { "flag": "--out" } } }, "required": [ "url", "runs", "advertise", "out" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "http" ] }, "names": { "cli": "wai http load", "mcp": null, "c": "wai_http_load", "rust": "wai::http::load", "sdk": "wai.http.load" } }, { "id": "receipt.fetch", "summary": "An object's receipt index fetched over HTTP and checked, its signers confirmed under the origin's key log where named", "cli": "wai http receipts", "aliases": [], "usage": [ "wai http receipts --url URL [--advertise CAP]... [--held fetch|none] [--join] [--max-walk N] [--fetch-budget N]", " [--deadline-ms MS] [--key-origin https://HOST[:PORT] [--pin-key-log FILE | --test-plaintext-connect HOST:PORT]]" ], "placement": "client", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "url": { "type": "string", "description": "The object's URL.", "x-cli": { "flag": "--url" } } }, "required": [ "url" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "http", "receipt_claims" ] }, "names": { "cli": "wai receipt fetch", "mcp": null, "c": "wai_receipt_fetch", "rust": "wai::receipt::fetch", "sdk": "wai.receipt.fetch" } }, { "id": "compat.check", "summary": "What the working tree breaks against a git ref, by category (wire, record, api); a break passes once the CHANGELOG names it", "cli": "wai breaking", "aliases": [], "usage": [ "wai breaking --against [--category wire|record|api] [--only ,...] [--skip ,...]", " [--root ] [--target-dir ] [--all] exit 1 on a break the CHANGELOG does not acknowledge" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "against": { "type": "string", "description": "The git ref to compare with.", "x-cli": { "flag": "--against" } }, "category": { "type": "string", "description": "wire, record or api: the categories checked, cumulative (api).", "x-cli": { "flag": "--category" } }, "only": { "type": "string", "description": "Only these surfaces, comma-separated.", "x-cli": { "flag": "--only" } }, "skip": { "type": "string", "description": "Not these surfaces, comma-separated.", "x-cli": { "flag": "--skip" } }, "root": { "type": "string", "format": "path", "description": "The repository's root (.).", "x-cli": { "flag": "--root" } }, "target_dir": { "type": "string", "format": "path", "description": "Where the Rust API's description is built.", "x-cli": { "flag": "--target-dir" } }, "all": { "type": "boolean", "description": "List every finding, compatible ones too.", "x-cli": { "flag": "--all" } } }, "required": [ "against" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "against", "findings" ], "description": "Each finding's id, category, what changed and whether the CHANGELOG acknowledges it" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai compat check", "mcp": null, "c": "wai_compat_check", "rust": "wai::compat::check", "sdk": "wai.compat.check" } }, { "id": "conformance.run", "summary": "WAI's conformance corpus run against another implementation, through a command or an HTTP adapter, its result a signed record wai verify checks", "cli": "wai conform", "aliases": [], "usage": [ "wai conform --suite --impl [--key ] [--out ] [--root ]", " [--timeout ] [--name ] [--version ] [--all] [--yes] `wai conformance list` names", " the kinds and suites; a record that exists is replaced only with --yes (--confirm, deprecated, is the same)" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-a-file", "route": null, "doors": { "cli": true, "mcp": true, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "kind": { "type": "string", "description": "The kind of implementation (wai conformance list): a decoder, a verifier, an origin, a packager.", "x-cli": { "positional": true } }, "suite": { "type": "string", "description": "The suite (wai conformance list).", "x-cli": { "flag": "--suite" } }, "impl": { "type": "string", "description": "The implementation: a command with {in}/{out}/{corpus} placeholders, or a URL.", "x-cli": { "flag": "--impl" } }, "key": { "type": "string", "format": "path", "description": "The seed the record is signed with.", "x-cli": { "flag": "--key" } }, "out": { "type": "string", "format": "path", "description": "The record (.wai-conform.json).", "x-cli": { "flag": "--out" } }, "root": { "type": "string", "format": "path", "description": "The wai/ directory whose corpora are run.", "x-cli": { "flag": "--root" } }, "timeout": { "type": "integer", "description": "Seconds a case may take.", "x-cli": { "flag": "--timeout" } }, "name": { "type": "string", "description": "The implementation's name, for the record.", "x-cli": { "flag": "--name" } }, "version": { "type": "string", "description": "The implementation's version, for the record.", "x-cli": { "flag": "--version" } }, "all": { "type": "boolean", "description": "List every case, passed ones too.", "x-cli": { "flag": "--all" } } }, "required": [ "kind", "impl" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "conformant", "cases", "passed", "failed" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": true, "needs": { "all": [ "quickstart" ] }, "names": { "cli": "wai conformance run", "mcp": "conformance_run", "c": "wai_conformance_run", "rust": "wai::conformance::run", "sdk": "wai.conformance.run" } }, { "id": "conformance.list", "summary": "The kinds and suites wai conform runs, each suite's corpus and its cases", "cli": "wai conformance list", "aliases": [], "usage": [ "wai conformance list [--root ] (also wai conform --list)" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": true, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "root": { "type": "string", "format": "path", "description": "The wai/ directory whose corpora are listed.", "x-cli": { "flag": "--root" } } }, "required": [], "additionalProperties": false }, "output": { "type": "object", "required": [ "suites" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "quickstart" ] }, "names": { "cli": "wai conformance list", "mcp": "conformance_list", "c": "wai_conformance_list", "rust": "wai::conformance::list", "sdk": "wai.conformance.list" } }, { "id": "enrolment.create", "summary": "A node's enrolment signed with the organisation key, written to a file and, with --target, given to a fleet service", "cli": "wai enrolment create", "aliases": [], "usage": [ "wai enrolment create --role --key [--label L] [--from µs] [--until µs] [--out F]", " [--target URL] [--yes] a node's enrolment (WFE1), signed with the organisation key, written to F", " (.wfe without --target) and, with --target, given to the fleet service there; changing the service", " or replacing a file waits for --yes (--confirm, deprecated, is the same)" ], "placement": "client", "effect": "writes-target", "dry_run": true, "confirm": "when-changing-the-target-or-replacing-a-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "node": { "type": "string", "description": "The node's Ed25519 public key, 64 hexadecimal digits.", "x-cli": { "positional": true } }, "role": { "type": "string", "description": "relay, compositor, ingest, room, ledger or audit.", "x-cli": { "flag": "--role" } }, "key": { "type": "string", "format": "path", "description": "The organisation key's file: 32 bytes, or 64 hexadecimal digits.", "x-cli": { "flag": "--key" } }, "label": { "type": "string", "description": "The node's label, at most 64 bytes.", "x-cli": { "flag": "--label" } }, "from": { "type": "integer", "description": "The start of the span it holds, microseconds since 1970 (0).", "x-cli": { "flag": "--from" } }, "until": { "type": "integer", "description": "The end of that span, microseconds since 1970 (none).", "x-cli": { "flag": "--until" } }, "out": { "type": "string", "format": "path", "description": "The enrolment's file (.wfe when no --target is given).", "x-cli": { "flag": "--out" } }, "target": { "type": "string", "description": "A fleet service's http:// address, given the enrolment.", "x-cli": { "flag": "--target" } } }, "required": [ "node", "role", "key" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "node", "role", "organisation", "digest", "enrolment" ], "description": "The enrolment (WFE1, hexadecimal), its digest, and the file and service it went to" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": true, "needs": { "all": [ "fleet" ] }, "names": { "cli": "wai enrolment create", "mcp": null, "c": "wai_enrolment_create", "rust": "wai::enrolment::create", "sdk": "wai.enrolment.create" } }, { "id": "enrolment.list", "summary": "The nodes a fleet service holds enrolled, each with its role, label and how many records it gave", "cli": "wai enrolment list", "aliases": [], "usage": [ "wai enrolment list --target URL the nodes the fleet service at URL holds enrolled" ], "placement": "client", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "target": { "type": "string", "description": "The fleet service's http:// address.", "x-cli": { "flag": "--target" } } }, "required": [ "target" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "enrolments" ], "description": "Each node the fleet service holds enrolled: its key, role, label and records" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai enrolment list", "mcp": null, "c": "wai_enrolment_list", "rust": "wai::enrolment::list", "sdk": "wai.enrolment.list" } }, { "id": "report.create", "summary": "The fleet report of a period, signed by a fleet service over the enrolments and records it holds", "cli": "wai report create", "aliases": [], "usage": [ "wai report create --target URL --start µs --end µs [--yes] the fleet report of [start, end), signed by the", " fleet service at URL; it changes the service, so it waits for --yes (--confirm, deprecated, is the same)" ], "placement": "client", "effect": "writes-target", "dry_run": true, "confirm": "always", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "target": { "type": "string", "description": "The fleet service's http:// address.", "x-cli": { "flag": "--target" } }, "start": { "type": "integer", "description": "The period's start, microseconds since 1970.", "x-cli": { "flag": "--start" } }, "end": { "type": "integer", "description": "The period's end, after its start.", "x-cli": { "flag": "--end" } } }, "required": [ "target", "start", "end" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "report", "outcome" ], "description": "The report's digest and its outcome as extensions/fleet.md §7.3 states it" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": true, "needs": null, "names": { "cli": "wai report create", "mcp": null, "c": "wai_report_create", "rust": "wai::report::create", "sdk": "wai.report.create" } }, { "id": "report.export", "summary": "A fleet report's bundle fetched from a fleet service, its report recomputed here, then written to a file", "cli": "wai report export", "aliases": [], "usage": [ "wai report export --target URL [--out F] [--yes] the report's bundle from the fleet service at URL,", " recomputed by this build and written to F (.wai-fleet.json) for `wai verify`; replacing a file", " waits for --yes (--confirm, deprecated, is the same)" ], "placement": "client", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-a-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "digest": { "type": "string", "description": "The report's digest, 64 hexadecimal digits.", "x-cli": { "positional": true } }, "target": { "type": "string", "description": "The fleet service's http:// address.", "x-cli": { "flag": "--target" } }, "out": { "type": "string", "format": "path", "description": "The bundle's file (.wai-fleet.json).", "x-cli": { "flag": "--out" } } }, "required": [ "digest", "target" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "file", "outcome" ], "description": "The bundle's file and its outcome, recomputed here" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": true, "needs": { "all": [ "fleet" ] }, "names": { "cli": "wai report export", "mcp": null, "c": "wai_report_export", "rust": "wai::report::export", "sdk": "wai.report.export" } }, { "id": "route.verify", "summary": "A route record checked offline against its request, price book and routing policy, and against its hops' OER/2 receipts where given", "cli": "wai route verify", "aliases": [], "usage": [ "wai route verify a verification document (extensions/route-record.md §7.1): the record's outcome", " (§7.3) as JSON, recomputed from the request, the price book and the policy; exit 1 when it is refused" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "document": { "type": "string", "format": "path", "description": "The verification document: the request, price book, policy and record, and the hops' receipts.", "x-cli": { "positional": true } } }, "required": [ "document" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "outcome" ], "description": "The outcome of extensions/route-record.md §7.3: accept with the record's digest, the served and billed hops, the deadline, the order, the decision, the removals and the unmetered hops; or refuse with the reason and where" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "route_record" ] }, "names": { "cli": "wai route verify", "mcp": null, "c": "wai_route_verify", "rust": "wai::route::verify", "sdk": "wai.route.verify" } }, { "id": "channel.import", "summary": "A linear channel's feeds (an XMLTV schedule, Media RSS catalogues or the JSON form, and a Media Playlist's SCTE-35 date ranges) imported into its signed receipt, its signed lineup and its breaks' cues", "cli": "wai channel import", "aliases": [], "usage": [ "wai channel import --channel ID (--xmltv F [--mrss F]... | --mrss F... | --feed F) [--playlist F] --key K", " [--mrss-owner O]... [--owner O] [--signer-id S] [--id-system N] [--xmltv-channel X] [--start-ms T] [--artwork DIR]", " [--window-start T --window-end T] [--parent HEX] [--out-dir D] [--yes] the receipt (channel.json), the lineup", " (lineup.wlu) and the cues (cues.json), written to D (.); a refusal's code is its reason; replacing a file waits", " for --yes (--confirm, deprecated, is the same)" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-a-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "channel": { "type": "string", "description": "The channel id.", "x-cli": { "flag": "--channel" } }, "xmltv": { "type": "string", "format": "path", "description": "An XMLTV document: the schedule.", "x-cli": { "flag": "--xmltv" } }, "mrss": { "type": "array", "items": { "type": "string" }, "description": "A Media RSS document: a catalogue. Repeated.", "x-cli": { "flag": "--mrss" } }, "mrss_owner": { "type": "array", "items": { "type": "string" }, "description": "The rights holder of each --mrss document's items, in their order: none, or one each.", "x-cli": { "flag": "--mrss-owner" } }, "feed": { "type": "string", "format": "path", "description": "The JSON form of a schedule, its catalogue and its breaks.", "x-cli": { "flag": "--feed" } }, "playlist": { "type": "string", "format": "path", "description": "The channel's HLS Media Playlist, whose SCTE-35 date ranges are its breaks.", "x-cli": { "flag": "--playlist" } }, "key": { "type": "string", "format": "path", "description": "The operator's key file: 32 bytes, or 64 hexadecimal digits.", "x-cli": { "flag": "--key" } }, "owner": { "type": "string", "description": "The rights holder of every asset no other input gives one.", "x-cli": { "flag": "--owner" } }, "signer_id": { "type": "string", "description": "The receipt's signer id (the operator key's did:key).", "x-cli": { "flag": "--signer-id" } }, "id_system": { "type": "string", "description": "The XMLTV episode-num system that names a programme's asset (wai-asset-id).", "x-cli": { "flag": "--id-system" } }, "xmltv_channel": { "type": "string", "description": "The XMLTV channel id whose programmes are read (the channel id).", "x-cli": { "flag": "--xmltv-channel" } }, "start_ms": { "type": "integer", "description": "Where a schedule of Media RSS items alone begins, milliseconds since 1970.", "x-cli": { "flag": "--start-ms" } }, "artwork": { "type": "string", "format": "path", "description": "The directory holding the artwork files the feeds' icons and thumbnails name.", "x-cli": { "flag": "--artwork" } }, "window_start": { "type": "integer", "description": "The receipt's window's start (the schedule's first start).", "x-cli": { "flag": "--window-start" } }, "window_end": { "type": "integer", "description": "The receipt's window's end (the schedule's last end).", "x-cli": { "flag": "--window-end" } }, "parent": { "type": "string", "description": "The receipt hash of the window before this one, 64 hexadecimal digits.", "x-cli": { "flag": "--parent" } }, "out_dir": { "type": "string", "format": "path", "description": "Where channel.json, lineup.wlu and cues.json are written (.).", "x-cli": { "flag": "--out-dir" } } }, "required": [ "channel", "key" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "channel", "receipt", "receipt_hash", "schedule_root", "lineup", "lineup_digest", "cues" ], "description": "The files written (the receipt, the lineup, the cues), the receipt's identity and schedule root, the lineup's digest, and their counts" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": true, "needs": { "all": [ "channel_lineup" ] }, "names": { "cli": "wai channel import", "mcp": null, "c": "wai_channel_import", "rust": "wai::channel::import", "sdk": "wai.channel.import" } }, { "id": "channel.guide", "summary": "A channel's guide, an XMLTV document or a now/next document, rendered from its receipt and its lineup and naming both", "cli": "wai channel guide", "aliases": [], "usage": [ "wai channel guide --receipt R --lineup L [--from T --to T | --now-next --at T] [--out F] [--yes] the XMLTV guide", " of a range (the whole schedule), or the now/next document of an instant, written to F (guide.xml, now-next.json);", " replacing a file waits for --yes (--confirm, deprecated, is the same)" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-a-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "receipt": { "type": "string", "format": "path", "description": "The channel receipt, in its JSON carriage.", "x-cli": { "flag": "--receipt" } }, "lineup": { "type": "string", "format": "path", "description": "The lineup's file.", "x-cli": { "flag": "--lineup" } }, "from": { "type": "integer", "description": "The range's start, milliseconds since 1970 (the schedule's first start).", "x-cli": { "flag": "--from" } }, "to": { "type": "integer", "description": "The range's end (the schedule's last end).", "x-cli": { "flag": "--to" } }, "now_next": { "type": "boolean", "description": "The now/next document of --at instead.", "x-cli": { "flag": "--now-next" } }, "at": { "type": "integer", "description": "The instant of a now/next document, milliseconds since 1970.", "x-cli": { "flag": "--at" } }, "out": { "type": "string", "format": "path", "description": "The guide's file (guide.xml, or now-next.json).", "x-cli": { "flag": "--out" } } }, "required": [ "receipt", "lineup" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "file", "format", "schedule_root", "lineup" ], "description": "The guide's file and format (xmltv or now-next), the sources it names, and its range or instant" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "channel_lineup" ] }, "names": { "cli": "wai channel guide", "mcp": null, "c": "wai_channel_guide", "rust": "wai::channel::guide", "sdk": "wai.channel.guide" } }, { "id": "channel.verify", "summary": "A channel's receipt, its lineup and a guide verified together: the guide recomputed from the two and compared, each programme with whether it aired", "cli": "wai channel verify", "aliases": [], "usage": [ "wai channel verify --receipt R --lineup L [--guide G] the receipt, the lineup and the guide checked together;", " exit 1 with the reason when one does not verify" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "receipt": { "type": "string", "format": "path", "description": "The channel receipt, in its JSON carriage.", "x-cli": { "flag": "--receipt" } }, "lineup": { "type": "string", "format": "path", "description": "The lineup's file.", "x-cli": { "flag": "--lineup" } }, "guide": { "type": "string", "format": "path", "description": "An XMLTV guide or a now/next document.", "x-cli": { "flag": "--guide" } } }, "required": [ "receipt", "lineup" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "verdict", "part", "receipt", "lineup", "guide", "entry" ], "description": "What extensions/channel-lineup.md §8.3 states: the verdict and the part it is about, the receipt's identity, the lineup's digest, and the guide's programmes, each with whether it aired" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "channel_lineup" ] }, "names": { "cli": "wai channel verify", "mcp": null, "c": "wai_channel_verify", "rust": "wai::channel::verify", "sdk": "wai.channel.verify" } }, { "id": "mcp.start", "summary": "WAI's operations as tools for a coding agent: a Model Context Protocol server on standard input and output, in toolsets", "cli": "wai mcp", "aliases": [], "usage": [ "wai mcp [--toolset core,dev,app] [--read-only] [--project DIR] [--spec-root DIR] [--room-bin BIN]", " serves until standard input closes; --dry-run names the tools it would serve and serves nothing" ], "placement": "local", "effect": "runs", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "toolset": { "type": "string", "description": "The toolsets to offer, comma-separated (core when none is named).", "x-cli": { "flag": "--toolset" } }, "read_only": { "type": "boolean", "description": "Offer only the tools that read or run a verifier.", "x-cli": { "flag": "--read-only" } }, "project": { "type": "string", "format": "path", "description": "The directory the server may write in (the current one).", "x-cli": { "flag": "--project" } }, "spec_root": { "type": "string", "format": "path", "description": "The wai/ directory whose text and corpora the tools read.", "x-cli": { "flag": "--spec-root" } }, "room_bin": { "type": "string", "format": "path", "description": "The room service the development room runs.", "x-cli": { "flag": "--room-bin" } } }, "required": [], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": { "description": "One JSON-RPC 2.0 message per line, the Model Context Protocol" }, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "mcp" ] }, "names": { "cli": "wai mcp start", "mcp": null, "c": "wai_mcp_start", "rust": "wai::mcp::start", "sdk": "wai.mcp.start" } }, { "id": "agent.setup", "summary": "A project made ready for coding agents: AGENTS.md, an import of it in a CLAUDE.md already there, and wai mcp registered in its MCP configuration", "cli": "wai setup-agent", "aliases": [], "usage": [ "wai setup-agent [--dir D] [--all] [--only FILE,...] [--toolset core,dev,app] [--command PROGRAM]", " a file that exists changes only once confirmed (--yes, or yes at a terminal); --dry-run shows each diff" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-a-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "dir": { "type": "string", "format": "path", "description": "The project directory (the current one).", "x-cli": { "flag": "--dir" } }, "all": { "type": "boolean", "description": "Write every agent's configuration file, not only those whose directory is there.", "x-cli": { "flag": "--all" } }, "only": { "type": "string", "description": "Only these files, comma-separated.", "x-cli": { "flag": "--only" } }, "toolset": { "type": "string", "description": "The toolsets the registered server offers.", "x-cli": { "flag": "--toolset" } }, "command": { "type": "string", "description": "The program the registration runs (wai).", "x-cli": { "flag": "--command" } } }, "required": [], "additionalProperties": false }, "output": { "type": "object", "required": [ "project", "dry_run", "files" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai agent setup", "mcp": null, "c": "wai_agent_setup", "rust": "wai::agent::setup", "sdk": "wai.agent.setup" } }, { "id": "app.guide", "summary": "The line language and every WAI widget, as a model writing a WAI app is told them", "cli": "wai app guide", "aliases": [], "usage": [ "wai app guide what a model writing an app made with Create is told" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": true, "http": false }, "toolset": "app", "stability": "preview", "input": { "type": "object", "properties": {}, "required": [], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "app" ] }, "names": { "cli": "wai app guide", "mcp": "app_guide", "c": "wai_app_guide", "rust": "wai::app::guide", "sdk": "wai.app.guide" } }, { "id": "app.check", "summary": "An app program checked against the WAI registry and WAI's rules, every error with its line and reason code; in a project, its room and runtime too", "cli": "wai app check", "aliases": [], "usage": [ "wai app check [ | ] exit 1 when something does not hold, each failure named" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": true, "http": false }, "toolset": "app", "stability": "preview", "input": { "type": "object", "properties": { "program": { "type": "string", "format": "path", "description": "A project directory or a program (.).", "x-cli": { "positional": true } } }, "required": [], "additionalProperties": false }, "output": { "type": "object", "required": [ "program", "errors", "failures", "checked" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "app" ] }, "names": { "cli": "wai app check", "mcp": "app_check", "c": "wai_app_check", "rust": "wai::app::check", "sdk": "wai.app.check" } }, { "id": "app.export", "summary": "An app made with Create written as a project: the program, wai.json naming its room, the page and its runtime, a README, AGENTS.md and the licence", "cli": "wai app export", "aliases": [], "usage": [ "wai app export [--runtime DIR] the same as wai create --from " ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": true, "http": false }, "toolset": "app", "stability": "preview", "input": { "type": "object", "properties": { "program": { "type": "string", "format": "path", "description": "The program made with Create.", "x-cli": { "positional": true } }, "dir": { "type": "string", "format": "path", "description": "A directory that does not exist or is empty.", "x-cli": { "positional": true } }, "runtime": { "type": "string", "format": "path", "description": "A Create runtime ($WAI_APP_RUNTIME, or share/wai/app beside wai).", "x-cli": { "flag": "--runtime" } } }, "required": [ "program", "dir" ], "additionalProperties": false }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "app" ] }, "names": { "cli": "wai app export", "mcp": "app_export", "c": "wai_app_export", "rust": "wai::app::export", "sdk": "wai.app.export" } }, { "id": "app.stream", "summary": "A program streamed into the person's open Create page through the bridge wai mcp runs on loopback", "cli": null, "aliases": [], "usage": [ "wai (wai mcp --toolset app: app_stream)" ], "placement": "local", "effect": "runs", "dry_run": false, "confirm": null, "route": null, "doors": { "cli": false, "mcp": true, "http": false }, "toolset": "app", "stability": "preview", "input": { "type": "object", "properties": { "program": { "type": "string", "description": "The program's text." }, "chunk": { "type": "integer", "description": "Characters a chunk (24)." }, "pace_ms": { "type": "integer", "description": "Milliseconds between chunks (30)." } }, "required": [ "program" ], "additionalProperties": false }, "output": { "description": "The tool's structured result" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "app" ] }, "names": { "cli": null, "mcp": "app_stream", "c": "wai_app_stream", "rust": "wai::app::stream", "sdk": "wai.app.stream" } }, { "id": "registry.show", "summary": "One capability's registry entry, whether this build decodes it, its role, and the specification lines that name it", "cli": null, "aliases": [], "usage": [ "wai (wai mcp: registry_show)" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": null, "route": null, "doors": { "cli": false, "mcp": true, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "capability": { "type": "string", "description": "A capability string, e.g. wai.image.avif." } }, "required": [ "capability" ], "additionalProperties": false }, "output": { "description": "The tool's structured result" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": "registry_show", "c": "wai_registry_show", "rust": "wai::registry::show", "sdk": "wai.registry.show" } }, { "id": "docs.search", "summary": "Lines of the specification and its extensions holding every word of a query, each with its file, line and section", "cli": null, "aliases": [], "usage": [ "wai (wai mcp: docs_search)" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": null, "route": null, "doors": { "cli": false, "mcp": true, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "query": { "type": "string", "description": "Words that must all appear on a line." }, "limit": { "type": "integer", "description": "At most this many hits (20)." } }, "required": [ "query" ], "additionalProperties": false }, "output": { "description": "The tool's structured result" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": "docs_search", "c": "wai_docs_search", "rust": "wai::docs::search", "sdk": "wai.docs.search" } }, { "id": "dev.stop", "summary": "The development relay and room service a wai mcp server started, stopped", "cli": null, "aliases": [], "usage": [ "wai (wai mcp: dev_stop)" ], "placement": "local", "effect": "runs", "dry_run": false, "confirm": null, "route": null, "doors": { "cli": false, "mcp": true, "http": false }, "toolset": "dev", "stability": "stable", "input": { "type": "object", "properties": {}, "required": [], "additionalProperties": false }, "output": { "description": "The tool's structured result" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": "dev_stop", "c": "wai_dev_stop", "rust": "wai::dev::stop", "sdk": "wai.dev.stop" } }, { "id": "room.join", "summary": "A test principal enters the development room with its grant, publishes its tracks, and is seen joined by the room's clock", "cli": null, "aliases": [], "usage": [ "wai (wai mcp: room_join)" ], "placement": "client", "effect": "writes-target", "dry_run": false, "confirm": null, "route": null, "doors": { "cli": false, "mcp": true, "http": false }, "toolset": "dev", "stability": "stable", "input": { "type": "object", "properties": { "target": { "type": "string", "description": "local: the development room on this machine." }, "principal": { "type": "string", "description": "A test principal granted the publisher role." }, "objects": { "type": "integer", "description": "Objects on each track (1)." } }, "required": [ "principal" ], "additionalProperties": false }, "output": { "description": "The tool's structured result" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": "room_join", "c": "wai_room_join", "rust": "wai::room::join", "sdk": "wai.room.join" } }, { "id": "room.leave", "summary": "A test principal's session in the development room closed, and its leave seen by the room's clock", "cli": null, "aliases": [], "usage": [ "wai (wai mcp: room_leave)" ], "placement": "client", "effect": "writes-target", "dry_run": false, "confirm": null, "route": null, "doors": { "cli": false, "mcp": true, "http": false }, "toolset": "dev", "stability": "stable", "input": { "type": "object", "properties": { "target": { "type": "string", "description": "local: the development room on this machine." }, "principal": { "type": "string", "description": "The test principal's name." } }, "required": [ "principal" ], "additionalProperties": false }, "output": { "description": "The tool's structured result" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": "room_leave", "c": "wai_room_leave", "rust": "wai::room::leave", "sdk": "wai.room.leave" } }, { "id": "session.show", "summary": "The development room's session as a verifier is given it: descriptor, grants, key-log head and the clock's event chain", "cli": null, "aliases": [], "usage": [ "wai (wai mcp: session_show)" ], "placement": "client", "effect": "reads", "dry_run": false, "confirm": null, "route": null, "doors": { "cli": false, "mcp": true, "http": false }, "toolset": "dev", "stability": "stable", "input": { "type": "object", "properties": { "target": { "type": "string", "description": "local: the development room on this machine." } }, "required": [], "additionalProperties": false }, "output": { "description": "The tool's structured result" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": "session_show", "c": "wai_session_show", "rust": "wai::session::show", "sdk": "wai.session.show" } }, { "id": "service.show", "summary": "The service's health", "cli": null, "aliases": [], "usage": [ "wai GET / (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_service_show", "rust": "wai::service::show", "sdk": "wai.service.show" } }, { "id": "service.check", "summary": "The service's health", "cli": null, "aliases": [], "usage": [ "wai GET /health (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/health" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1health/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_service_check", "rust": "wai::service::check", "sdk": "wai.service.check" } }, { "id": "room.show", "summary": "The current room", "cli": null, "aliases": [], "usage": [ "wai GET /room (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/room" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1room/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_room_show", "rust": "wai::room::show", "sdk": "wai.room.show" } }, { "id": "room.grant", "summary": "A grant for a key", "cli": null, "aliases": [], "usage": [ "wai POST /grant (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/grant" }, "doors": { "cli": false, "mcp": true, "http": true }, "toolset": "dev", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1grant/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": "room_grant", "c": "wai_room_grant", "rust": "wai::room::grant", "sdk": "wai.room.grant" } }, { "id": "admission.show", "summary": "The room's admission receipt so far", "cli": null, "aliases": [], "usage": [ "wai GET /age/receipt (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/age/receipt" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1age~1receipt/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_admission_show", "rust": "wai::admission::show", "sdk": "wai.admission.show" } }, { "id": "mls.tail", "summary": "The room's log of MLS messages", "cli": null, "aliases": [], "usage": [ "wai GET /mls (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/mls" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1mls/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_mls_tail", "rust": "wai::mls::tail", "sdk": "wai.mls.tail" } }, { "id": "mls.import", "summary": "A KeyPackage for a granted principal's Add", "cli": null, "aliases": [], "usage": [ "wai POST /mls/key-package (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/mls/key-package" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1mls~1key-package/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_mls_import", "rust": "wai::mls::import", "sdk": "wai.mls.import" } }, { "id": "mls.update", "summary": "A GroupInfo, or a commit and its Welcome", "cli": null, "aliases": [], "usage": [ "wai POST /mls/post (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/mls/post" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1mls~1post/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_mls_update", "rust": "wai::mls::update", "sdk": "wai.mls.update" } }, { "id": "performance.list", "summary": "The clock's log of objects", "cli": null, "aliases": [], "usage": [ "wai GET /co/objects (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/co/objects" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1co~1objects/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_performance_list", "rust": "wai::performance::list", "sdk": "wai.performance.list" } }, { "id": "performance.show", "summary": "The room's co-performance as the clock holds it", "cli": null, "aliases": [], "usage": [ "wai GET /co/state (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/co/state" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1co~1state/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_performance_show", "rust": "wai::performance::show", "sdk": "wai.performance.show" } }, { "id": "schedule.create", "summary": "A turn schedule the clock signs", "cli": null, "aliases": [], "usage": [ "wai POST /co/schedule (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/co/schedule" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1co~1schedule/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_schedule_create", "rust": "wai::schedule::create", "sdk": "wai.schedule.create" } }, { "id": "handover.create", "summary": "A handover the clock signs", "cli": null, "aliases": [], "usage": [ "wai POST /co/handover (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/co/handover" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1co~1handover/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_handover_create", "rust": "wai::handover::create", "sdk": "wai.handover.create" } }, { "id": "window.create", "summary": "A selection window the clock signs", "cli": null, "aliases": [], "usage": [ "wai POST /co/window (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/co/window" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1co~1window/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_window_create", "rust": "wai::window::create", "sdk": "wai.window.create" } }, { "id": "fidelity.create", "summary": "A fidelity statement now", "cli": null, "aliases": [], "usage": [ "wai POST /co/fidelity (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/co/fidelity" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1co~1fidelity/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_fidelity_create", "rust": "wai::fidelity::create", "sdk": "wai.fidelity.create" } }, { "id": "time.show", "summary": "The service's clock", "cli": null, "aliases": [], "usage": [ "wai GET /watch/time (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/watch/time" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1watch~1time/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_time_show", "rust": "wai::time::show", "sdk": "wai.time.show" } }, { "id": "source.fetch", "summary": "The watch room's source, whole", "cli": null, "aliases": [], "usage": [ "wai GET /watch/source (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/watch/source" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1watch~1source/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_source_fetch", "rust": "wai::source::fetch", "sdk": "wai.source.fetch" } }, { "id": "watch.setup", "summary": "A challenge for a join's proof", "cli": null, "aliases": [], "usage": [ "wai GET /watch/challenge (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/watch/challenge" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1watch~1challenge/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_watch_setup", "rust": "wai::watch::setup", "sdk": "wai.watch.setup" } }, { "id": "watch.tail", "summary": "The watch room's log", "cli": null, "aliases": [], "usage": [ "wai GET /watch (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/watch" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1watch/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_watch_tail", "rust": "wai::watch::tail", "sdk": "wai.watch.tail" } }, { "id": "watch.show", "summary": "The room as a co-watch verifier is given it", "cli": null, "aliases": [], "usage": [ "wai GET /watch/room (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/watch/room" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1watch~1room/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_watch_show", "rust": "wai::watch::show", "sdk": "wai.watch.show" } }, { "id": "watch.join", "summary": "A viewer enters by a proof of its key", "cli": null, "aliases": [], "usage": [ "wai POST /watch/join (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/watch/join" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1watch~1join/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_watch_join", "rust": "wai::watch::join", "sdk": "wai.watch.join" } }, { "id": "watch.update", "summary": "A viewer's events, checked and carried in order", "cli": null, "aliases": [], "usage": [ "wai POST /watch/post (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/watch/post" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1watch~1post/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_watch_update", "rust": "wai::watch::update", "sdk": "wai.watch.update" } }, { "id": "control.grant", "summary": "The host hands control over", "cli": null, "aliases": [], "usage": [ "wai POST /remote/control (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/remote/control" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1remote~1control/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_control_grant", "rust": "wai::control::grant", "sdk": "wai.control.grant" } }, { "id": "remote.show", "summary": "The session as the clock holds it", "cli": null, "aliases": [], "usage": [ "wai GET /remote/room (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/remote/room" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1remote~1room/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_remote_show", "rust": "wai::remote::show", "sdk": "wai.remote.show" } }, { "id": "remote.verify", "summary": "That session verified", "cli": null, "aliases": [], "usage": [ "wai GET /remote/state (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/remote/state" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1remote~1state/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_remote_verify", "rust": "wai::remote::verify", "sdk": "wai.remote.verify" } }, { "id": "conversation.show", "summary": "The conversation", "cli": null, "aliases": [], "usage": [ "wai GET /msg (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/msg" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_conversation_show", "rust": "wai::conversation::show", "sdk": "wai.conversation.show" } }, { "id": "conversation.setup", "summary": "A challenge for a proof", "cli": null, "aliases": [], "usage": [ "wai GET /msg/challenge (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/msg/challenge" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1challenge/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_conversation_setup", "rust": "wai::conversation::setup", "sdk": "wai.conversation.setup" } }, { "id": "conversation.join", "summary": "A key that proves itself is admitted", "cli": null, "aliases": [], "usage": [ "wai POST /msg/join (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/msg/join" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1join/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_conversation_join", "rust": "wai::conversation::join", "sdk": "wai.conversation.join" } }, { "id": "conversation.tail", "summary": "The log as it is owed to the caller", "cli": null, "aliases": [], "usage": [ "wai GET /msg/log (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/msg/log" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1log/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_conversation_tail", "rust": "wai::conversation::tail", "sdk": "wai.conversation.tail" } }, { "id": "conversation.import", "summary": "A member's KeyPackage", "cli": null, "aliases": [], "usage": [ "wai POST /msg/key-package (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/msg/key-package" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1key-package/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_conversation_import", "rust": "wai::conversation::import", "sdk": "wai.conversation.import" } }, { "id": "conversation.update", "summary": "A GroupInfo, or a commit and its Welcome", "cli": null, "aliases": [], "usage": [ "wai POST /msg/mls (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/msg/mls" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1mls/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_conversation_update", "rust": "wai::conversation::update", "sdk": "wai.conversation.update" } }, { "id": "message.create", "summary": "A message", "cli": null, "aliases": [], "usage": [ "wai POST /msg/post (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/msg/post" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1post/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_message_create", "rust": "wai::message::create", "sdk": "wai.message.create" } }, { "id": "acknowledgement.create", "summary": "An acknowledgement", "cli": null, "aliases": [], "usage": [ "wai POST /msg/ack (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/msg/ack" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1ack/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_acknowledgement_create", "rust": "wai::acknowledgement::create", "sdk": "wai.acknowledgement.create" } }, { "id": "conversation.leave", "summary": "The caller leaves", "cli": null, "aliases": [], "usage": [ "wai POST /msg/leave (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/msg/leave" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1leave/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_conversation_leave", "rust": "wai::conversation::leave", "sdk": "wai.conversation.leave" } }, { "id": "member.delete", "summary": "The owner removes a member", "cli": null, "aliases": [], "usage": [ "wai POST /msg/remove (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/msg/remove" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1remove/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_member_delete", "rust": "wai::member::delete", "sdk": "wai.member.delete" } }, { "id": "call.setup", "summary": "A challenge for a proof", "cli": null, "aliases": [], "usage": [ "wai GET /call/challenge (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/call/challenge" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1call~1challenge/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_call_setup", "rust": "wai::call::setup", "sdk": "wai.call.setup" } }, { "id": "call.create", "summary": "Place a call", "cli": null, "aliases": [], "usage": [ "wai POST /call/place (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/call/place" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1call~1place/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_call_create", "rust": "wai::call::create", "sdk": "wai.call.create" } }, { "id": "call.invite", "summary": "Ring invitees", "cli": null, "aliases": [], "usage": [ "wai POST /call/ring (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/call/ring" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1call~1ring/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_call_invite", "rust": "wai::call::invite", "sdk": "wai.call.invite" } }, { "id": "inbox.show", "summary": "The caller's inbox", "cli": null, "aliases": [], "usage": [ "wai GET /inbox (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/inbox" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1inbox/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_inbox_show", "rust": "wai::inbox::show", "sdk": "wai.inbox.show" } }, { "id": "answer.create", "summary": "Accept, decline or cancel", "cli": null, "aliases": [], "usage": [ "wai POST /call/answer (the room service)" ], "placement": "service", "effect": "writes-target", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "POST", "path": "/call/answer" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1call~1answer/post" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_answer_create", "rust": "wai::answer::create", "sdk": "wai.answer.create" } }, { "id": "call.show", "summary": "The current call", "cli": null, "aliases": [], "usage": [ "wai GET /call (the room service)" ], "placement": "service", "effect": "reads", "dry_run": false, "confirm": null, "route": { "service": "wai-room", "method": "GET", "path": "/call" }, "doors": { "cli": false, "mcp": false, "http": true }, "toolset": "core", "stability": "preview", "input": { "$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1call/get" }, "output": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": null, "mcp": null, "c": "wai_call_show", "rust": "wai::call::show", "sdk": "wai.call.show" } }, { "id": "contract.create", "summary": "A channel's share contract from its terms, signed with the operator key; each owner countersigns it", "cli": "wai contract create", "aliases": [], "usage": [ "wai contract create --key [--out F] [--yes] the share contract (WRC1) of the terms, signed", " with the operator key, every countersignature still to come, written to F (.wrc); each owner adds", " its own with `wai contract accept`; replacing a file waits for --yes (--confirm, deprecated, is the same)" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-a-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "terms": { "type": "string", "format": "path", "description": "The terms: start, end, currency, channel, channel_signer, rule, between, carriers, owners, splits and assets.", "x-cli": { "positional": true } }, "key": { "type": "string", "format": "path", "description": "The operator key's file: 32 bytes, or 64 hexadecimal digits.", "x-cli": { "flag": "--key" } }, "out": { "type": "string", "format": "path", "description": "The contract's file (.wrc).", "x-cli": { "flag": "--out" } } }, "required": [ "terms", "key" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "digest", "operator", "channel", "owners", "in_force", "contract", "file" ], "description": "The share contract (WRC1, hexadecimal), its digest, each owner and whether it has countersigned, and the file it went to" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": true, "needs": { "all": [ "revenue_share" ] }, "names": { "cli": "wai contract create", "mcp": null, "c": "wai_contract_create", "rust": "wai::contract::create", "sdk": "wai.contract.create" } }, { "id": "contract.update", "summary": "An owner's countersignature added to a share contract, after its rules and the operator's signature are checked", "cli": "wai contract accept", "aliases": [], "usage": [ "wai contract accept --key [--out F] [--yes] the owner's countersignature added to the contract,", " written to F (the contract's own file when F is not given); replacing a file waits for --yes (--confirm,", " deprecated, is the same)" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-a-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "contract": { "type": "string", "format": "path", "description": "The contract's file (WRC1).", "x-cli": { "positional": true } }, "key": { "type": "string", "format": "path", "description": "The owner key's file: 32 bytes, or 64 hexadecimal digits.", "x-cli": { "flag": "--key" } }, "out": { "type": "string", "format": "path", "description": "Where the countersigned contract goes (the contract's own file).", "x-cli": { "flag": "--out" } } }, "required": [ "contract", "key" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "digest", "operator", "channel", "owners", "in_force", "contract", "file" ], "description": "The share contract (WRC1, hexadecimal), its digest, each owner and whether it has countersigned, and the file it went to" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": true, "needs": { "all": [ "revenue_share" ] }, "names": { "cli": "wai contract update", "mcp": null, "c": "wai_contract_update", "rust": "wai::contract::update", "sdk": "wai.contract.update" } }, { "id": "statement.create", "summary": "A party's revenue-share statement for a period, recomputed from the ledger's invoices and the channel's program-as-run, signed with the operator key", "cli": "wai statement create", "aliases": [], "usage": [ "wai statement create --party --start µs --end µs --key [--out F] [--yes] the statement", " (WRS1) of the party for [start, end), computed from a verification document without its statement (the", " contract, other contracts, runs and ledger documents), signed with the operator key and written with its", " document to F (.wai-share.json) for `wai statement verify`; replacing a file waits for --yes" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-a-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "inputs": { "type": "string", "format": "path", "description": "A verification document without its statement: contract, contracts, runs and ledgers.", "x-cli": { "positional": true } }, "party": { "type": "string", "description": "The party's key, 64 hexadecimal digits: the operator or an owner.", "x-cli": { "flag": "--party" } }, "start": { "type": "integer", "description": "The period's start, microseconds since 1970.", "x-cli": { "flag": "--start" } }, "end": { "type": "integer", "description": "The period's end, after its start.", "x-cli": { "flag": "--end" } }, "key": { "type": "string", "format": "path", "description": "The operator key's file: 32 bytes, or 64 hexadecimal digits.", "x-cli": { "flag": "--key" } }, "out": { "type": "string", "format": "path", "description": "The verification document's file (.wai-share.json).", "x-cli": { "flag": "--out" } } }, "required": [ "inputs", "party", "start", "end", "key" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "file", "statement", "outcome" ], "description": "The statement (WRS1, hexadecimal), the file its verification document went to, and its outcome, recomputed here" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": true, "needs": { "all": [ "revenue_share" ] }, "names": { "cli": "wai statement create", "mcp": null, "c": "wai_statement_create", "rust": "wai::statement::create", "sdk": "wai.statement.create" } }, { "id": "statement.verify", "summary": "A revenue-share statement's verification document checked: every line recomputed from the public records, or the reason it is refused", "cli": "wai statement verify", "aliases": [], "usage": [ "wai statement verify the outcome of a statement's verification document: each line, each split's", " division and each impression's attribution, recomputed; exit 1 with the reason on a refusal" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "document": { "type": "string", "format": "path", "description": "The verification document: contract, contracts, statement, runs and ledgers.", "x-cli": { "positional": true } } }, "required": [ "document" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "outcome", "statement", "contract", "party", "role", "lines", "total" ], "description": "An accepted statement's outcome (revenue-share §8.3): its lines, each split's division, every impression attributed, and the total" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "revenue_share" ] }, "names": { "cli": "wai statement verify", "mcp": null, "c": "wai_statement_verify", "rust": "wai::statement::verify", "sdk": "wai.statement.verify" } }, { "id": "opportunity.create", "summary": "A party's opportunity report for a period: the ad breaks a channel's signed cues and program-as-run prove in the programmes it shares in, signed with the issuer key", "cli": "wai opportunity create", "aliases": [], "usage": [ "wai opportunity create --party --start µs --end µs --key [--out F] [--yes] the report", " (WOR1) of the party for [start, end), computed from a verification document without its report (the", " contract, other contracts, runs and rooms), signed with the issuer key and written with its document to F", " (.wai-opportunity.json) for `wai opportunity verify`; replacing a file waits for --yes" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-a-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "inputs": { "type": "string", "format": "path", "description": "A verification document without its report: contract, contracts, runs and rooms.", "x-cli": { "positional": true } }, "party": { "type": "string", "description": "The party's key, 64 hexadecimal digits: the operator or an owner.", "x-cli": { "flag": "--party" } }, "start": { "type": "integer", "description": "The period's start, microseconds since 1970.", "x-cli": { "flag": "--start" } }, "end": { "type": "integer", "description": "The period's end, after its start.", "x-cli": { "flag": "--end" } }, "key": { "type": "string", "format": "path", "description": "The issuer key's file: 32 bytes, or 64 hexadecimal digits.", "x-cli": { "flag": "--key" } }, "out": { "type": "string", "format": "path", "description": "The verification document's file (.wai-opportunity.json).", "x-cli": { "flag": "--out" } } }, "required": [ "inputs", "party", "start", "end", "key" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "file", "report", "outcome" ], "description": "The opportunity report (WOR1, hexadecimal), the file its verification document went to, and its outcome, recomputed here" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": true, "needs": { "all": [ "opportunity_report" ] }, "names": { "cli": "wai opportunity create", "mcp": null, "c": "wai_opportunity_create", "rust": "wai::opportunity::create", "sdk": "wai.opportunity.create" } }, { "id": "opportunity.verify", "summary": "An opportunity report's or a statement check's verification document checked: every break, line and flag recomputed from the records, or the reason it is refused", "cli": "wai opportunity verify", "aliases": [], "usage": [ "wai opportunity verify the outcome of a report's or a check's verification document: each break", " attributed, each line and flag recomputed; exit 1 with the reason on a refusal" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "document": { "type": "string", "format": "path", "description": "The verification document: a report's (contract, contracts, report, runs, rooms) or a check's (report, reported, statement, check).", "x-cli": { "positional": true } } }, "required": [ "document" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "outcome" ], "description": "An accepted report's outcome (opportunity-report §8.3: every break attributed, each line and the totals) or an accepted check's (§11.3: each line's opportunities, reported and signed figures and flags)" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": { "all": [ "opportunity_report" ] }, "names": { "cli": "wai opportunity verify", "mcp": null, "c": "wai_opportunity_verify", "rust": "wai::opportunity::verify", "sdk": "wai.opportunity.verify" } }, { "id": "statement.check", "summary": "A platform's reported statement checked against an opportunity report and, when given, the operator's signed statement, signed with the issuer key", "cli": "wai statement check", "aliases": [], "usage": [ "wai statement check [--statement ] [--floor ppm] [--ceiling ppm] --key [--out F] [--yes]", " the check (WCK1) of a reported statement (JSON, or CSV for a file named .csv) beside a report's verification", " document and a signed statement's, at the bounds given (500000 and 2000000 when not), signed with the issuer", " key and written with its document to F (.wai-check.json); replacing a file waits for --yes" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-a-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "preview", "input": { "type": "object", "properties": { "report": { "type": "string", "format": "path", "description": "A report's verification document, with its report.", "x-cli": { "positional": true } }, "reported": { "type": "string", "format": "path", "description": "The reported statement: JSON, or CSV for a file named .csv.", "x-cli": { "positional": true } }, "statement": { "type": "string", "format": "path", "description": "A signed revenue-share statement's verification document of the same party and period.", "x-cli": { "flag": "--statement" } }, "floor": { "type": "integer", "description": "The lower bound, in millionths of the period's rate (500000).", "x-cli": { "flag": "--floor" } }, "ceiling": { "type": "integer", "description": "The upper bound, in millionths of the period's rate (2000000).", "x-cli": { "flag": "--ceiling" } }, "key": { "type": "string", "format": "path", "description": "The issuer key's file: 32 bytes, or 64 hexadecimal digits.", "x-cli": { "flag": "--key" } }, "out": { "type": "string", "format": "path", "description": "The verification document's file (.wai-check.json).", "x-cli": { "flag": "--out" } } }, "required": [ "report", "reported", "key" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "file", "check", "outcome" ], "description": "The statement check (WCK1, hexadecimal), the file its verification document went to, and its outcome, recomputed here" }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": true, "needs": { "all": [ "opportunity_report" ] }, "names": { "cli": "wai statement check", "mcp": null, "c": "wai_statement_check", "rust": "wai::statement::check", "sdk": "wai.statement.check" } }, { "id": "ops.list", "summary": "Every operation of this catalogue: its id, command line, effect and whether this build holds it", "cli": "wai ops list", "aliases": [], "usage": [ "wai ops list every operation, its id and command line" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": {}, "required": [], "additionalProperties": false }, "output": { "type": "array", "items": { "type": "object", "required": [ "id", "summary", "cli", "effect", "placement", "toolset", "stability", "available" ] } }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai ops list", "mcp": null, "c": "wai_ops_list", "rust": "wai::ops::list", "sdk": "wai.ops.list" } }, { "id": "ops.search", "summary": "The operations that match a task, ranked, offline: up to five", "cli": "wai ops search", "aliases": [], "usage": [ "wai ops search \"\" up to five operations that match, ranked, offline" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "task": { "type": "string", "description": "What you want to do, in words.", "x-cli": { "positional": true } } }, "required": [ "task" ], "additionalProperties": false }, "output": { "type": "array", "maxItems": 5, "items": { "type": "object", "required": [ "id", "summary", "cli", "score" ], "properties": { "id": { "type": "string" }, "summary": { "type": "string" }, "cli": { "type": [ "string", "null" ] }, "score": { "type": "integer" } } } }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai ops search", "mcp": null, "c": "wai_ops_search", "rust": "wai::ops::search", "sdk": "wai.ops.search" } }, { "id": "ops.show", "summary": "One operation's entry: its input and output schemas, effect, placement and command line", "cli": "wai ops show", "aliases": [ "wai ops schema" ], "usage": [ "wai ops show one operation's entry, as JSON (also wai ops schema)" ], "placement": "local", "effect": "reads", "dry_run": false, "confirm": "never", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "id": { "type": "string", "description": "An operation id, noun.verb.", "x-cli": { "positional": true } } }, "required": [ "id" ], "additionalProperties": false }, "output": { "type": "object", "required": [ "id", "summary", "input", "output", "effect", "placement" ] }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai ops show", "mcp": null, "c": "wai_ops_show", "rust": "wai::ops::show", "sdk": "wai.ops.show" } }, { "id": "ops.export", "summary": "The catalogue as JSON (wai.ops/1), what other tools and CI read; --check compares a file with it", "cli": "wai ops export", "aliases": [], "usage": [ "wai ops export [--out FILE | --check FILE] the catalogue as JSON, to stdout, to FILE, or compared with FILE" ], "placement": "local", "effect": "writes-project", "dry_run": true, "confirm": "when-replacing-an-unnamed-file", "route": null, "doors": { "cli": true, "mcp": false, "http": false }, "toolset": "core", "stability": "stable", "input": { "type": "object", "properties": { "out": { "type": "string", "format": "path", "description": "Write the export here.", "x-cli": { "flag": "--out" } }, "check": { "type": "string", "format": "path", "description": "Compare this file with the export; exit 1 when they differ.", "x-cli": { "flag": "--check" } } }, "required": [], "additionalProperties": false }, "output": { "type": "object", "required": [ "format", "toolchain", "envelope", "operations" ], "properties": { "format": { "const": "wai.ops/1" } } }, "stream": null, "since": "0.3.0", "deprecated": null, "receipt": false, "needs": null, "names": { "cli": "wai ops export", "mcp": null, "c": "wai_ops_export", "rust": "wai::ops::export", "sdk": "wai.ops.export" } } ] }