The standard is a public document anyone can read, adopt, and improve.
The hosted MCP is a subscription service that streams that standard to your
agents as versioned tools and resources.
Same vocabulary, three workflows: Navigator for new features,
Investigator for defects, Sentinel for assurance —
loaded by whichever harness your engineers already use: Cursor, Claude Code, Windsurf, or anything that speaks
MCP. The MCP carries context and workflows. It does
not replace your AUTH, gateways, tests, or CI.
New to the term? Agentic engineering is the discipline this standard serves — written for engineers who already know how software should be built.
What it looks like in your editor
Your agent works as usual. When the task needs governance, it calls AADM and follows what comes back.
Illustration of a live editor agent session with four scenarios, selectable with the Previous and Next
buttons in the header. First, a developer reports a checkout error; the agent calls AADM, which holds the
fix until the failure is reproduced, classifies the root cause from evidence, requires one test, and marks
the release ready with one residual risk logged. Second, a five-hour integration suite shows about ninety
failures; AADM sorts them into four clusters, forbids raising timeouts, requires a trace of one hung test,
which reveals a lock leak in the test harness, and a targeted rerun clears sixty-one timeouts. The agent
then isolates the llm-gateway cluster, AADM holds until an isolated run separates suite-order pollution
from a real break, two one-file fixes land, and the cluster is proven green. Third, a team inherits a
vibe-coded app with two schemas and no tests; AADM routes it to assurance, hands over the map contract
without scanning the repo, the agent walks one user journey and submits the map, three findings come back
with controls and owners, and the agent says plainly that source reading found the bugs while AADM named
the map and gave the meeting a shared agenda and stop rules, in fifteen minutes instead of the three weeks
a formal audit would take. Fourth, apply tools fail validation after the person confirms; AADM checks the
exact declarations the model sees, finds required subjectRef and outcome-ref fields typed as empty
objects and an optional frameworkLayerIds the server actually requires, plus writers with no
idempotency key; the agent aligns the offered JSON Schema with the contract so Zod and Pydantic accept
the same shape, names keyFrom on each writer, and ships with a residual that generate_picture is
keyed on the turn only.
Live session
aadm
You · agentic engineer Checkout returns 500 for some EU customers since this morning's deploy. Can you fix it?
ThinkingThought for 2s
This is a defect, so I'll route it through AADM before touching code.
AADMdebug_defect Working
Investigator · Recon
Halt before fix. Root cause not classified yet.
Next action: reproduce one failing request and capture the stack line.
Not allowed yet: timeout bumps, retries, multi-file edits.
L13 LogicAUTH-11
Ran curl POST /checkout (country=IE) → 500
Read src/services/TaxService.ts L70–95
Reproduced. Stack: TaxService.ts:88, vatRate is undefined for “IE”.
AADMdebug_defect Working
Evidence accepted · Diagnose
Classified: missing rate in the tax table. The deploy only exposed it.
Proof required: one IE checkout test, failing first, then passing.
Classified1 file · 1 test
Edited config/tax-rates.ts +1 line
Ran npm test checkout.ie ✗ → ✓
IE rate added. The new test failed first, now passes. One file changed.
You · agentic engineer Nice. Safe to ship?
ThinkingThought for 1s
AADMpredone_review Working
Ready with residual
Ship the IE fix.
Residual: other EU rates unverified. Logged as a follow-up, not hidden.
Shipped. Follow-up opened to verify the remaining EU rates.
You · agentic engineer Integration suite has been running 5h 14m. ~55 files with failures, 80–96 failing tests, 67 look like timeouts at 30s/60s/180s. Plus hard errors in llm-gateway and signal ingest. Where do I even start?
ThinkingThought for 3s
That much red is rarely one cause. Routing to AADM before I touch timeouts or tests.
AADMtriage_bug Working
Investigator · Triage
Not one bug. Four clusters.
67 timeouts: the worker used 7 min of CPU in 5 h. Tests are waiting, not spinning.
Hard errors: llm-gateway (undefined adapter response), signal ingest (FK after row gone), unique index.
Ran grep -l DrizzleQueryError → 6 files, all SELECT … FOR UPDATE or forge_audit_log inserts
Timeouts cluster on L3, Edge and lock tests. The hard errors fail fast, in under 2 seconds.
AADMdebug_defect Working
Halt · No timeout inflation
Forbidden right now: raising timeouts, re-running the full suite, touching 55 files.
Proof required for one timed-out test: last successful DB call and the exact wait that hung.
Single next action: run edge-asset-production-routes-approval-occ alone with query tracing.
L13 LogicAUTH-241 test · traced
Ran vitest edge-asset-production-routes-approval-occ --trace → 4 failed · waiting on SELECT … FOR UPDATE for 180s
Found it. Every timed-out test waits on a row lock held by a transaction another worker never commits. The suite isn't slow; it's deadlocked.
You · agentic engineer And the hard errors?
ThinkingThought for 2s
AADMclassify_bug Working
Classified · 2 defects, 1 hygiene
Lock leak in the test harness: one defect behind all 67 timeouts.
llm-gateway: embed adapter returns undefined on its error path. Second defect, separate change.
Unique-index and FK failures: fixtures run out of order. Test hygiene, not product bugs.
ClassifiedTargeted rerun, not full CI
Edited test/harness/db.ts +3 lines (release lock on teardown)
Ran vitest --changed ✓ 61 passed · 12 min, not 5 h
Harness fix released the locks: 61 timeouts gone in one targeted run. No timeout was raised. llm-gateway is next, as its own change.
Starting with the llm-gateway cluster: it already has stack frames and fails in 2 seconds. I'll classify it with AADM, then fix and prove one cluster at a time.
The stack points at overlay adapters returning undefined. Looks like isolate:false: a first-bound provider mock skips the overlay table, so complete, stream and embed all return undefined.
AADMdebug_defect Working
Hold · Not yet classified
Plausible, not proven. Suite-order pollution and a standalone break look identical from here.
Single next action: run llm-gateway.integration.test.ts alone.
Forbidden right now: changing the registry before the isolated run.
UNCLASSIFIED1 file · isolated
Ran vitest run llm-gateway.integration.test.ts (isolated) → 1 failed | 7 passed · 6.39s
Isolated run: the four contract tests pass, so the suite failures are first-bind pollution. The one remaining fail is the embed-dimension boot check.
AADMdebug_defect Working
Classified · 2 fixes, 1 file each
Root cause: isolate:false first-binds a leftover vendor mock that never consults the provider overlay.
Fix 1: the registry consults the overlay table before any first-bound adapter.
Fix 2: feed the real column dimension through the db mock so the boot check cannot skip.
Cluster 2 is proven. Next is the unique-index cluster: reproduce it in isolation, then classify before changing anything.
You · agentic engineer We inherited an app a contractor vibe-coded. Hundreds of services, two schemas, no tests. Leadership wants to know if we keep building on it. Where do we even start?
Tell me what you want to do with it. Ship it as is, harden it, or decide whether to rebuild?
You · agentic engineer Decide. We have one architecture meeting next week.
ThinkingThought for 2s
I'll start with AADM's repo-mapping path: route the work, pull the map contract, then collect evidence from this repo.
AADMroute_lane Working
Lane · assurance
The question is prove what exists, not build or fix. Sentinel.
208 files import the leftover schema. An inventory, not a rewrite list → Navigator, later.
AUTH-32AUTH-34do not open schema
Honest version: AADM did not find these. Reading the source did. AADM named the map, linted the plan, and gave the room a shared agenda. The hard part was never the bugs; it is telling live product from leftover code so nobody boils the ocean.
AADMinterrogate_plan Working
Plan holds · 2 stop rules
First slice: tenant header, then admin gate. One owner, proof of done per fix.
Out of scope for wave 1: schema migration, RAG, the leftover route tree.
Stop rule: a fix that touches more than the four trust files goes back to the room.
T1 → T2stop rules5–8 pages, one picture
For the meeting: one diagram, a three-row risk register with file and line, the inventory counted but not scheduled, and a first-slice RFC. Ninety minutes in the room.
You · agentic engineer How long would that have taken us without this?
About three weeks: a week of orientation for whoever is new to the repo, then one to two weeks of audit and sign-off paper. This thread took fifteen minutes. 120 working hours to a quarter of one, roughly 480×, for the same three findings.
You · agentic engineer apply_initiative keeps coming back VALIDATION_FAILED after I confirm. Check the agentic tools — nouns, verbs, the Zod the model sees. And it has to work for a FastAPI/Pydantic host, not just our parsers.
ThinkingThought for 3s
I won't guess the shape. I'll dump the exact declarations the model gets, then run them through AADM before I touch a writer.
There's the defect. The declaration invites a guess. The person confirms. Then TransformationSubjectRefSchema refuses it. And frameworkLayerIds: the apply handler requires at least one layer, but the tool told the model it was optional.
AADMdebug_defect Working
Classified · declaration drift
Root cause: what the declaration offers is not what the contract accepts.
Fix the offered shape — kind + id on subjectRef, source + the matching ids on an outcome ref, frameworkLayerIds required and enumerated.
Name keyFrom on every writer. Dispatch already claims turnKey:toolId; the manifest just never said so.
Edited tools.mjs + tool-manifest.mjs (writers must name keyFrom)
Ran agent-tool-declaration.test + tool-manifest.test ✓ a filled subjectRef parses · a write without keyFrom fails the canon
The model is now shown the shape the server will accept. Zod and Pydantic read the same JSON Schema. A retried turn is one write, because the dispatch claim is on the manifest.
You · agentic engineer And generate_picture?
ThinkingThought for 1s
AADMpredone_review Working
Ready with residual
Ship the apply_* declaration fix.
Residual: generate_picture draws anew on every call. Idempotency is the dispatch claim only — same brief twice is two images. Logged, not hidden.
Shipped the apply family. Picture stays keyed on the turn, not the brief. That's honest.
Ask the agent…
Replica of a real session in Cursor or Claude Code. Highlighted turns are AADM at work — use ‹ › to switch scenarios.
Three workflows. Equal weight.
Every coding task is one of three things. AADM gives each its own lane — so the agent picks the right workflow for the
question being asked, not whichever instinct fires first.
I
Navigator
Delivery · building something new
Turn a vague feature ask into layer-aware slices — with authorization, ownership, and acceptance criteria baked in before any code is written.
What you get
Scope work across UDALI layers so ownership is clear before the first commit
Map AUTH controls and acceptance criteria into the plan, not after the fact
Gate readiness with structured checklists instead of ad-hoc review threads
II
Investigator
Defects · something is broken
Find what's actually wrong before changing anything. Path A recon classifies the failure; Path B diagnosis is gated until proof crosses the router.
What you get
Evidence-first recon: classify the failure before proposing any code change
Structured Path A / Path B flow prevents speculative rewrites and scope creep
Guardrails block timeout inflation, premature fixes, and multi-file drift
III
Sentinel
Assurance · proving it's aligned
Show — in language an auditor or compliance lead accepts — that the controls you say you have are actually in place across every seam.
What you get
Trace AUTH controls, UDALI placement, and evidence across every seam
Vertical and horizontal audit programs so releases are defensible, not vibes
Findings hand off to Investigator or Navigator when action is needed
What it deliberately does not do
01Run business logic or mutate your database
02Issue compliance certificates or legal verdicts
03Replace code review, CI, or server-side authorization
04Store long-lived secrets — credentials are your deployment concern
When you'd use it
Connect the MCP in your IDE so the agent loads the same standard every session — UDALI placement, AUTH
references, build intent, troubleshooter discipline — instead of improvising from random doc snippets.
Any MCP-capable IDE works. Cursor and Claude Code are the most common; Windsurf, Cline, and others connect the
same way over Streamable HTTP.
Three pieces. Each does one job.
A read-only standard-context server for AI coding tools: AADM definitions, UDALI/AUTH doctrine, prompts, and structured
tools so agents plan, route, and troubleshoot the AADM way — without running your product or enforcing security in
production.
01 Source of truth
Your app repo
Real code, authorization enforcement, tests, CI, evidence. This is where “done” is actually proven.
02 Governance context
The hosted MCP
Teaches and structures agent behavior against the AADM standard — workflows, doctrine, gates. Does not run your product.
03 Open document
Public standard
Human-readable templates, definitions, and education in the aadm-standard repo. Free to read, free to adopt.
The MCP does not replace your application. It does not scan your repo for pass/fail compliance. It gives agents
consistent framing and checklists — your apps and CI still prove enforcement. For the fuller picture of how these
pieces relate to the harness, the agent, and the person accountable for the result, see
agentic engineering.
Transport is HTTP Streamable MCP at
/mcp (plus
/health for liveness). Connect from any MCP client with your org's
URL and auth.
What engineers get out of it on a normal day.
01
Slice a feature into layer-aware work items
Ordered vertical slices with UDALI placement, AUTH tags, and acceptance criteria per slice.
02
Scope attestation dimensions per slice
Declare vertical depth and horizontal seams so the agent knows what to check, not guess.
03
Get required seam tiers back
Know exactly which boundaries need proof before release — not “tests pass and we hope.”
04
Route defects through evidence-gated investigation
Classify before fixing. No speculative rewrites, no premature code changes.
05
Prove alignment before release with structured audit programs
Bind evidence per seam so releases are defensible, not vibes.
Quick MCP reference for engineers.
The hosted service speaks Streamable HTTP:
POST with
Accept: application/json, text/event-stream. A browser
GET to the MCP path without that header often returns
406 — expected.
npx aadm-init-repo --minimal scaffolds .aadm/config.json in your app repo.
Init guide →
Optional — the hosted MCP works standalone without a repo config.
Subscription covers the running service, updates, and subscriber guides — see https://aadm.io/mcp
.
Open standard. Hosted bridge.
One living standard, visible to everyone who ships with you.
The text stays public so your org, partners, and community can discuss changes, propose updates, and stay on
the same page — like any mature open project.
Pay for uptime and evolution, not a zip file.
Hosted MCP is a separate subscription so the endpoint your agents call stays online, versioned, and maintained.
You get operational continuity instead of self-hosting a moving target.
Your production AUTH, gateways, tests, and CI stay authoritative. MCP is how agents load the standard's
context and workflows predictably.
What you get
A
Open standard
Always readable, adoptable, and improvable in public. No paywall on the definitions.
B
Hosted MCP
Versioned tools and resources for subscribers' agents. Someone ships fixes and keeps the service
current.
▸ Two paths · one rail
Read it in public.
Run it in production.
The standard is free to read and lives in public. When your agents need versioned context they can load on every
turn, connect the hosted MCP.