Skip to content

Quickstart

DCP — the Development Coordination Protocol — is a small, vendor-neutral wire format for project-coordination events. Every message is a thin DcpMessage envelope carrying exactly one Event. The event describes what changed: a task completed, a decision recorded, a finding raised.

  • Node 18 or later (or any environment with a JSON Schema 2020-12 validator)
  • Nothing else: the schemas are published at https://schemas.devcopro.org/v1/ and worked example messages are on this site under Examples.

Fetch the schemas and validate any example with a stock JSON Schema validator (Ajv shown here):

Terminal window
npm install ajv ajv-formats
curl -sO https://schemas.devcopro.org/v1/dcp-message.schema.json
curl -sO https://schemas.devcopro.org/v1/event.schema.json
# save a message from /examples/ as message.json, then:
node -e '
const Ajv = require("ajv/dist/2020"); const addFormats = require("ajv-formats");
const fs = require("fs");
const ajv = new Ajv({ strict: false }); addFormats(ajv);
ajv.addSchema(JSON.parse(fs.readFileSync("event.schema.json")));
const validate = ajv.compile(JSON.parse(fs.readFileSync("dcp-message.schema.json")));
const msg = JSON.parse(fs.readFileSync("message.json"));
const schemaOk = validate(msg);
const typeOk = msg.message_type === `${msg.body.entity_type}.${msg.body.verb}`;
console.log(schemaOk && typeOk ? "PASS" : "FAIL", validate.errors ?? (typeOk ? "" : "message_type mismatch"));
'

Note the second check: conformance requires the cross-field rule message_type === entity_type.verb in addition to schema validation — plain JSON Schema cannot express it (see Validation Errors). Depending on your schema set-up you may also need the four common/ sub-schemas from the same host; consumers SHOULD cache schemas rather than fetch them live in production.

Every valid DCP message has this shape:

{
"dcp_version": "1.0",
"message_id": "msg_01HZ0ABCDEF",
"message_type": "task.completed",
"issued_at": "2026-07-01T12:30:00Z",
"body": {
"event_id": "evt_01HZ0XYZ",
"entity_type": "task",
"verb": "completed",
"entity_id": "task_schema_validation",
"attributed_to": "agent-builder",
"delta": {
"status": { "from": "in_progress", "to": "completed" }
}
}
}
  • dcp_version — always "1.0" for this revision of the spec.
  • message_typeentity_type.verb in dot notation. Tells consumers what to expect in the body without parsing it.
  • body — one Event. Must contain at least one of entity, delta, or refs.

Both schemas are published at their permanent canonical URLs:

  • https://schemas.devcopro.org/v1/dcp-message.schema.json
  • https://schemas.devcopro.org/v1/event.schema.json

They use JSON Schema 2020-12. Any compliant validator (AJV, jsonschema, etc.) can consume them directly.

The repository ships a language-neutral corpus of accept/reject test cases (25 cases as of 2026-07-03) that any implementation, in any language, can run to self-certify — see the conformance definition in the specification (§11). The corpus travels with the source repository (conformance/); the failure modes it covers are documented on Validation Errors.