The Conformance Specification defines three obligation layers: Universal, Protocol, and Specialism. This page explains what happens inside the Specialism layer: how a specialism manifest resolves to a set of graded scenarios, and how per-scenario capability gates can narrow or expand that set.Documentation Index
Fetch the complete documentation index at: https://docs.adcontextprotocol.org/llms.txt
Use this file to discover all available pages before exploring further.
From declaration to graded scenarios
When your agent declares a specialism inget_adcp_capabilities, the runner:
- Fetches the specialism manifest at
/compliance/{version}/specialisms/{id}/. - Reads the manifest’s
requires_scenarioslist — an ordered set of scenario IDs the runner must grade. - For each scenario, checks whether the scenario declares a
requires_capabilitygate. - If a gate is present, reads the named path from your
get_adcp_capabilitiesresponse to decide whether to run or skip the scenario.
Specialism manifests
Each specialism’srequires_scenarios field lists the scenarios the runner will grade. Example — the sales-guaranteed manifest declares eight required scenarios:
sales-guaranteed agent. The eighth — proposal_finalize — carries a capability gate.
Capability gates
A scenario can declare arequires_capability block. The runner reads the named path from your get_adcp_capabilities response and checks it against the expected value. If the check fails (the capability is absent or false), the scenario is skipped — the skip block will appear in runner output with reason: not_applicable — and does not contribute to steps_failed.
get_adcp_capabilities response at run time — the same call the runner makes during the universal capability_discovery storyboard.
Schema status.
requires_capability is not yet defined in storyboard-schema.yaml — runners recognise it (the TS SDK reads and enforces the block) but scenario-authoring tooling that validates against the storyboard schema will flag it as an unknown field today. Adding it to the schema is tracked separately; until then, treat requires_capability as a stable runner-level extension that the schema lints will catch up to.Worked example
Scenario: Priya’s StreamHaus platform claimssales-guaranteed and declares media_buy.supports_proposals: true.
requires_scenarios run, including proposal_finalize. Priya’s platform is graded on the full proposal lifecycle — brief with proposals, refine, finalize, and accept via create_media_buy.
Scenario: StreamHaus Direct is an auction-based PG platform — no proposal abstraction. It claims
sales-guaranteed and declares media_buy.supports_proposals: false.
proposal_finalize is skipped. The skip block in runner output is the authoritative signal:
skip block is present, the step was not graded and does not count against steps_failed. The skip.detail string identifies the specific cause (capability gate, missing specialism declaration, or missing tool).
Absent = false. The
supports_proposals field has "default": false in the capabilities schema. Omitting it from your response is equivalent to declaring false — the runner skips capability-gated proposal scenarios. Declare true explicitly to opt in to grading.Grading verdicts at a glance
| Outcome | skip.reason | Meaning |
|---|---|---|
| Scenario passed | — (no skip block) | All validations passed; passed: true at the step level |
| Scenario failed | — (no skip block) | One or more required validations failed; see validations[] for the failing field and json_pointer |
| Scenario skipped | not_applicable | Step was not run. Check skip.detail to distinguish: capability gate evaluated false, specialism not declared, or prerequisite not met |
| Required tool missing | missing_tool | Agent declared the specialism but did not expose a tool listed in required_tools |
steps_failed. Skipped steps (skip block present) do not contribute to that counter. The skip.detail field is the human-readable string that names the specific skip cause.
Where each piece lives
| Artifact | URL path | Source |
|---|---|---|
| Specialism manifest | /compliance/{version}/specialisms/{id}/ | static/compliance/source/specialisms/{id}/index.yaml |
| Scenario YAML | /compliance/{version}/protocols/{protocol}/scenarios/{name}/ | static/compliance/source/protocols/{protocol}/scenarios/{name}.yaml |
| Universal storyboards | /compliance/{version}/universal/ | static/compliance/source/universal/ |
| Capabilities schema | /schemas/v3/protocol/get-adcp-capabilities-response.json | static/schemas/source/protocol/get-adcp-capabilities-response.json |
static/compliance/source/universal/runner-output-contract.yaml.
Related
- Conformance Specification — the three-layer obligation model and the normative storyboard index
- Compliance Catalog — full taxonomy of protocols, specialisms, and universal storyboards
- Validate Your Agent — running the suite locally with
@adcp/client