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.
What you need
Section titled “What you need”- 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.
Validate your first message
Section titled “Validate your first message”Fetch the schemas and validate any example with a stock JSON Schema validator (Ajv shown here):
npm install ajv ajv-formatscurl -sO https://schemas.devcopro.org/v1/dcp-message.schema.jsoncurl -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.
The envelope
Section titled “The envelope”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_type—entity_type.verbin dot notation. Tells consumers what to expect in the body without parsing it.body— oneEvent. Must contain at least one ofentity,delta, orrefs.
Schemas
Section titled “Schemas”Both schemas are published at their permanent canonical URLs:
https://schemas.devcopro.org/v1/dcp-message.schema.jsonhttps://schemas.devcopro.org/v1/event.schema.json
They use JSON Schema 2020-12. Any compliant validator (AJV, jsonschema, etc.) can consume them directly.
Conformance corpus
Section titled “Conformance corpus”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.
Next steps
Section titled “Next steps”- Read Carries No Trust to understand the protocol’s security model.
- See the Event Schema Reference for every field in the
bodyobject. - Browse the worked examples covering all eight entity types.