Module unit
The agent's door: OAuth 2.1 and MCP, the write law, served doctrine, the budget-capped work queue.
Overview · Modules · Addi Agent Surface
What it is
The agent surface is where Addi stops being a feature and becomes a principal. There is no in-app chat. Instead, the operator's own Claude connects to the platform over MCP through an OAuth 2.1 + PKCE authorization surface built into the backend: dynamic client registration, RS256 tokens, scoped access, and consent and audit recorded as schema, not as log lines. Once connected, the agent reads and writes through the same module boundaries a human user does.
We built it this way because the alternative, an embedded chatbot, makes the agent a guest in the product. A guest gets a curated window and a support burden. A principal gets an identity, a scope, a consent record, and accountability. Vetting question for the skeptical reader: an agent with write access? Yes, and the reason it is safe is the write law, not a gate. Machine writes land freely into empty or machine-sourced fields and never over a human-confirmed value; anything that would collide becomes a proposal a human accepts or declines. Agents get the door, never the tables.
Autonomous work flows through one queue: one connection, one token, work bounded by budget caps, and failed jobs retried rather than silently lost. The job kinds are a small set of autonomous analysis and recommendation tasks; the roster is held at Tier 2. The agent's operating doctrine is served from the platform itself at session start, so the doctrine it runs on is always the one we currently serve, and agent output passes a mechanical house-style gate at the write door before it lands anywhere a person will read it.
The questions it answers
For the operator: can my own AI work my pipeline without me babysitting it, and can I see everything it did and undo anything it got wrong? What has it been asked to do, what did it claim, what did it propose, and what did I confirm?
For the investor evaluating us: how does an autonomous agent touch production data without becoming the largest risk surface in the product? Our answer is identity, provenance, budgets, and traceability, and this unit is where each is enforced.
Scope and boundaries
The unit owns the authorization surface, the consent and audit record, the work queue, the wake-up budget and record, and the served doctrine. It does not own any business data. Every read goes through another module's public API; every write goes through that module's one write door, under the write law, with tenant identity independently re-verified on every tool call. When a module is disabled for a tenant, the agent's writes into it refuse like anyone else's, because feature off means dead server-side.
Not a chatbot, and not a chat feature of any kind. Not a bypass lane: there are no agent-only tables, no privileged queries, no side doors. Not an autopilot for the pipeline: the agent recommends and a human decides; the only automatic mover anywhere in the product is the buy-box rejection, and that belongs to another unit. Not a tool catalog document.
Withheld by design Tier 2 Tier 3
The catalog internals, scopes topology, and prompt and skill contents are held at Tier 2 and Tier 3.The contract
Responsibilities, the write door, events, guarantees, and refusals. No fields, no schemas, no payloads; those are held at Tier 2.
The door admits a small set of business-named commands covering the grant and revocation of agent access, the working of the queue, and the proposal path.
The proposal path is the part the write law forces into existence: when an agent write would land on a human-confirmed value, it arrives here as a proposal instead of a write, and a human's acceptance elsewhere stamps the result human-confirmed. Business writes themselves (an outlook onto a deal, an assist into underwriting) are not this unit's business; they pass through the owning module's own door under the same law.
Withheld by design Tier 2
The roster and the shapes are held at Tier 2.Events carry identity plus the business fact, never a data dump. The unit announces the facts of its own domain: that access changed hands, that queued work ran or failed, and that a proposal was made and later decided.
Withheld by design Tier 2
The event roster is held at Tier 2.What done means
Done is an operator connecting their own Claude over MCP, granting scoped access with a recorded consent, and watching the agent claim work, do it, and land its results under the write law, with every step attributable and every write reversible. Done includes the failure paths: a job that dies is retried, a colliding write becomes a proposal, and a revoked grant ends access cleanly. A demo that only shows the happy path is not done here, because this unit's whole argument is what happens when things go wrong.
Per our method, every one of these load-bearing rules exists as code, a validator, a typed contract, a server-side check, or a failing test, never as prose discipline. The writer of the unit is never its auditor; verification is independent and adversarial.
Withheld by design Tier 2 Tier 3
The tool catalog internals, scopes topology, wake cadence, and prompt and skill contents are withheld here by design; the catalog and scopes are held at Tier 2, and the doctrine and prompt contents at Tier 3.Where it connects