# Conformance

> The rules a conforming server keeps, and the fixtures to test it with.

Source: https://agentprocess.io/docs/servers/conformance/

A server conforms when it keeps the five rules of the [specification](https://agentprocess.io/docs/spec/specification/) §6, offers the required tools with the contracts in [tool contracts](https://agentprocess.io/docs/spec/tools/), refuses what §2 says to refuse, and reports what it offers in `describe`.

## Fixtures

Each fixture is a folder with one `PROCESS.md`. The first ten were written by independent reviewers ([research](https://agentprocess.io/docs/research/)) and use the core only. A conforming server publishes all ten. The last two exercise the profiles; a server publishes each one only if it offers that profile.

| Process | What it exercises |
|---|---|
| [blog-publication](https://github.com/agentprocess/agentprocess/blob/main/conformance/fixtures/blog-publication/PROCESS.md) | `wait_until` on an input date, approval with `on_reject` |
| [contract-review](https://github.com/agentprocess/agentprocess/blob/main/conformance/fixtures/contract-review/PROCESS.md) | A person task, two approvals, a `person` path, file evidence |
| [customer-offboarding](https://github.com/agentprocess/agentprocess/blob/main/conformance/fixtures/customer-offboarding/PROCESS.md) | Route lists, `wait_until`, `wait_for` with `timeout` |
| [employee-onboarding](https://github.com/agentprocess/agentprocess/blob/main/conformance/fixtures/employee-onboarding/PROCESS.md) | `person` paths, approval with `on_reject` |
| [expense-reimbursement](https://github.com/agentprocess/agentprocess/blob/main/conformance/fixtures/expense-reimbursement/PROCESS.md) | `initiator`, a `person` path, file evidence |
| [incident-postmortem](https://github.com/agentprocess/agentprocess/blob/main/conformance/fixtures/incident-postmortem/PROCESS.md) | `person` paths, repeated rework through `on_reject` |
| [invoice-approval](https://github.com/agentprocess/agentprocess/blob/main/conformance/fixtures/invoice-approval/PROCESS.md) | A route list, a `person` path |
| [major-incident-response](https://github.com/agentprocess/agentprocess/blob/main/conformance/fixtures/major-incident-response/PROCESS.md) | Simultaneous work attempted in core only: the case that led to `parallel` |
| [supplier-rfp](https://github.com/agentprocess/agentprocess/blob/main/conformance/fixtures/supplier-rfp/PROCESS.md) | File evidence, approval with `on_reject` |
| [support-escalation](https://github.com/agentprocess/agentprocess/blob/main/conformance/fixtures/support-escalation/PROCESS.md) | A route list, approval with `on_reject` |
| [major-incident](https://github.com/agentprocess/agentprocess/blob/main/conformance/fixtures/major-incident/PROCESS.md) | The `parallel` profile: fork, join, a `person` path |
| [vendor-check](https://github.com/agentprocess/agentprocess/blob/main/conformance/fixtures/vendor-check/PROCESS.md) | The `check` profile on a route list with file evidence; `requires` |

## Running it

Today the suite runs inside the reference server's own tests, which publish every fixture and replay the review traces over a real MCP client. A portable runner that takes any server's URL and a token is planned; until it exists, an implementer can use the fixtures and the traces in the review documents to test by hand.
