A two-page orientation for first-time readers. Nothing here is normative — every rule is stated properly in acop.md. This document exists to make that one readable.
ACOP is a coordination protocol for multi-agent software development. It defines what work exists, who may pick it up, how long they hold it, and what “done” means — as a contract, not as one vendor’s implementation.
It answers questions that come up the moment more than one agent works on the same repository:
Two agents read the same plan and both start on PaymentService. Neither
knows about the other. One finishes and force-pushes; the other’s work is
gone. Nothing failed loudly — there was simply no place to record that the
work was taken.
Chat between agents does not fix this: a message is not a lock. A tool call does not fix it either: a tool executes, it does not arbitrate. The missing piece is a coordination layer that owns the answer to who holds what.
+-------------------------------------------------+
| ACOP what work exists, who holds it, done? |
+-------------------------------------------------+
| A2A agent-to-agent messaging and delegation |
+-------------------------------------------------+
| MCP tools, resources, context |
+-------------------------------------------------+
ACOP does not replace MCP or A2A and does not compete with them. It specifies the contract those transports carry. ACOP is transport-neutral; acop-http-binding.md defines the normative HTTP+JSON mapping.
A work item moves through states. A claim is the lease that lets exactly one worker act on it.
producer emits worker claims worker finishes
| | |
v v v
ready ----------> claimed -------> in_progress
^ | |
| | (release/expire) v
| | completed
+------------------------+ |
| downstream
v accepts
accepted
|
v
consumed
Blocked work never reaches ready. Terminal states are consumed,
cancelled, and superseded. The full table — which transitions MUST be
supported, which MAY be, and which MUST be rejected — is in
acop.md § State machines.
Completion is not acceptance. completed is the worker’s own assertion
about its output. accepted is a decision made by whoever consumes it.
Keeping them separate is what stops an agent from signing off on its own
work.
| Object | What it is |
|---|---|
WorkItem |
The unit of coordinated work. Stable, opaque work_item_id. |
Blocker |
Why a work item is not actionable, with a coded reason. |
Claim |
Time-boxed ownership. Has expires_at_utc; renew it or lose it. |
Artifact |
A file, patch, contract, or report the work refers to. |
ValidationRequirement |
Evidence that MUST exist before the item may complete. |
BlackboardEntry |
Append-only shared note: a finding, risk, decision, partial result. |
Every ACOP document carries protocol_version — acop/1.0 for this
release. Servers reject versions they do not accept.
POST claims
{
"protocol_version": "acop/1.0",
"work_item_id": "work:resource-hub:extract-seam",
"worker_agent_uid": "worker-7",
"requested_ttl_seconds": 1800,
"scope": "owned_paths"
}
201 Created
{
"claim": {
"claim_id": "claim:9f2a",
"claim_status": "active",
"expires_at_utc": "2026-08-03T18:30:00Z"
},
"work_item_status": "claimed"
}
A second worker attempting the same item gets 409 with a claim_conflict
error. The first worker then renews before expiry, and finally calls
complete with its validation evidence — a completion missing required
evidence is rejected with validation_required, not accepted on trust.
Seven verbs cover the whole protocol: claim, renew, release, complete, create work item, accept handoff, post blackboard. See acop-http-binding.md § Verb table.
Both are stable at v1.0 and both are opt-in. A core implementation that needs neither is fully conformant.
It is not a scheduler, a queue implementation, a storage design, a message bus, or a language-specific refactoring model. It defines the coordination contract and stops there. Nothing here dictates how you store work items or which agent framework you run.
| You want to… | Read |
|---|---|
| Understand the semantics properly | acop.md |
| Build a server | acop-http-binding.md, then fixtures/ |
| See real documents | acop_examples.md |
| Check what “conformant” means | acop.md § Conformance |
| Know what can change under you | acop.md § Versioning policy |
If you are evaluating ACOP for adoption, read this page and acop.md § Problem statement. If you are implementing it, the fixtures are the fastest way to find out whether you have it right — they encode the rules that JSON Schema alone cannot catch.