Login
Proposal B: participants call typed tools
Login

In this proposal, nobody writes the core's JSON blocks by hand. People and agents act only by calling tools, and the tools write every artifact. A person reaches a tool as a form on OCX's web page or as a command; an agent reaches the same tool over MCP, the protocol AI agents use to call tools.

B1. A tool

Each tool has a name and a typed input. Its input is checked against its type before anything happens; input that does not fit is refused, saying which field is wrong. Every tool also takes dry_run: it then says what it would do and changes nothing. Every tool answers in one shape, on every way in:

{"tool": "audit", "dry_run": false, "log": [{"op": "add_tag", "changes": true}], "result": {}, "stopped": null}

log is each operation performed, in order (in a dry run, the ones it would perform); result is the tool's output, when it ran to the end; stopped says why it stopped, when it did. Who may call a tool is decided by the caller's login, the same on every way in.

Justified by: Clarity (one answer shape), Demonstrability (the log shows what was done; a dry run shows it first), Ax1, Loose Coupling (the web page, the command line and MCP are interchangeable ways in).

B2. The tools

Tool Input What it does Who
create runner (claude or codex, default claude); instructions (text); wake (list of {"on": "post"} or {"on": "check-in", "branch": NAME}, default [{"on": "post"}]); hears (list of logins, default any with admin or setup); network (true or false, default true); wall, cpu (spans), memory (amount), processes (number), each optional makes the agent's login, writes the record (E3) as a new thread, and starts the agent; its result is the record's hash admin or setup
post to (a post's hash); text replies to that post, in its thread anyone who may post
audit checkin (a hash); verdict (pass or fail); note (text) adds the audited tag (E6), refusing your own check-in anyone who may check in
stop record (a record's hash) ends the agent's run; the node writes the response (E4) with outcome stopped admin or setup
queue none what waits on you: check-ins without your verdict, and posts in your threads since your last anyone
status none who and where you are: your login, its capabilities, the repository, the host anyone

Nothing else is a tool. An agent finds this list, with each input's type, by asking its MCP server for its tools.

The hook's table (E7) stays as the core gives it: a tool, never the hook, starts or stops an agent.

B3. Talking

Posts are plain text, written with post. Nobody needs to follow a notation; what a post is, a report or a question, is for its reader to judge.

Justified by: Parsimony (no notation to learn), tolerance of lower reasoning (only post's two fields to get right).