A structured capability profile for AI agents, platforms, tools, and models. SC-006 AAIF defines how to run a portable agent. SC-013 AREG defines how to discover one in a registry. ACPM defines what it offers — a machine-readable document declaring capabilities, trust posture, cost structure, SLA, and delegation rules in a form registries and orchestrators can compare directly.
Every agent, platform, tool, and model vendor describes its capabilities differently — in marketing pages, free-text docs, or ad hoc JSON. There is no canonical, comparable, machine-readable way to ask "does this support MCP tool calls?", "what's its trust level?", "what does it cost per run?", or "can I delegate to it?" Registries and orchestrators end up writing bespoke per-vendor parsers, and capability matching, trust gating, and cost/SLA comparison are done by hand or not at all.
A single, vendor-neutral capability profile that any agent, platform, tool, or model can publish:
{
"sc_standard": "SC-014",
"sc_version": "1.0.0",
"profile_id": "...",
"subject": { "subject_type": "agent", "name": "...", "vendor": "...", "sc_refs": [...] },
"capabilities": [
{ "id": "tool.mcp", "support": "native" },
{ "id": "memory.vector", "support": "emulated" }
],
"tools": [...],
"models": [...],
"memory": [...],
"trust": { "level": "verified", "attestation": {...}, "sandbox": {...} },
"cost_profile": { "pricing_model": "usage_based", "unit_cost": { "per": "run", "amount": 0.04 } },
"sla": { "uptime_pct": 99.5, "support_tier": "standard" },
"delegation_rules": [...],
"compliance": { "data_residency": ["EU"], "pii_handling": "redact" },
"provenance": { "authored_by": "...", "license": "CC-BY-4.0" }
}Capability ids use the same dot-namespaced vocabulary as SC-006 AAIF's required_capabilities[] (tool.mcp, memory.vector, orchestration.parallel, ...), so an AAIF agent's requirements and an ACPM profile's offerings can be matched directly. ACPM profiles are referenced from SC-013 AREG registry entries and SC-006 AAIF agents via sc_refs[].
ACPM is a brand-new, proposed standard with zero implementations and zero adopters. It has not been used in production anywhere. The schema and examples validate cleanly today, but nothing yet generates, consumes, or enforces an ACPM profile in a real system. If you adopt it early, you are shaping the spec, not following an established one — say so, and we'll credit you as a founding adopter in ADOPTERS.md.
ACPM does not replace SC-006 (AAIF) or SC-013 AREG; it sits alongside them as the capability/trust/cost layer that both can reference.
- Cite it.
CITATION.cff+ a placeholder Zenodo DOI. - Self-certify conformance. Pick a level from the table below and check your profile against it; see CONFORMANCE.md. The self-certification report format is planned, not yet shipped — see CONFORMANCE.md for what exists today versus what's still on paper.
- Report issues safely. SECURITY.md defines the threat model (mostly: nothing here is cryptographically enforced) and disclosure process.
- Extend without forking. The
^x-namespace and_commentroot key (mirrored from SC-006) let tools attach metadata without breaking strict validation.
| Role | Benefit |
|---|---|
| Registries & marketplaces (e.g. SC-013 AREG) | List agents/platforms/tools/models with comparable, structured capability and cost data instead of free-text claims |
| Orchestrators | Match an AAIF agent's required_capabilities[] against ACPM profiles before dispatch; gate by trust.level |
| Procurement / FinOps | Compare cost_profile and sla across vendors on a like-for-like basis |
| Security & compliance teams | Check trust.attestation, compliance.data_residency, and compliance.pii_handling before approving a subject for use |
| Platform builders | Publish one profile instead of restating capabilities in docs, sales decks, and support tickets |
| File | Description |
|---|---|
| SPECIFICATION.md | Full specification: terminology (RFC 2119), object model, field dictionary, trust/cost/SLA/delegation model, conformance levels, mapping to prior art, references |
| ABSTRACT.md | Structured abstract for registry submission, IETF I-D, and citation |
| CONFORMANCE.md | Conformance levels and the (planned) self-certification report format |
| SECURITY.md | Threat model and vulnerability disclosure policy |
| CITATION.cff | Citation metadata (GitHub "Cite this repository" + Zenodo DOI) |
| CHANGELOG.md | Version history |
| ADOPTERS.md | Self-service adopter registry |
| schema/profile.schema.json | JSON Schema (draft 2020-12) — capability profile document (sc_version 1.0.0) |
| context.jsonld | JSON-LD context mapping all ACPM terms to URIs (schema.org, Dublin Core, ACPM vocab) |
| examples/invoice-chaser-profile.json | Agent profile: the SC-006 "Invoice Chaser" agent, trust verified, usage-based cost |
| examples/langgraph-platform-profile.json | Platform profile: a LangGraph-style runtime, broad capabilities, trust attested |
| examples/gpt4o-model-profile.json | Model profile: GPT-4o, text+image+tool_use, usage-based per-1k-token cost |
| draft-schemacommons-acpm-00.xml | IETF Internet-Draft (xml2rfc v3) |
python tools/validate.pyimport json, jsonschema
schema = json.load(open("schema/profile.schema.json"))
agent_profile = json.load(open("examples/invoice-chaser-profile.json"))
platform_profile = json.load(open("examples/langgraph-platform-profile.json"))
jsonschema.validate(agent_profile, schema)
jsonschema.validate(platform_profile, schema)
# Capability matching: does the platform support everything the agent needs?
needed = {c["id"] for c in agent_profile.get("capabilities", []) if c["support"] != "none"}
offered = {c["id"] for c in platform_profile.get("capabilities", []) if c["support"] in ("native", "emulated")}
missing = needed - offered
print("unsupported:", missing or "none — compatible")
# Trust gating
trust_order = ["untrusted", "sandboxed", "verified", "attested", "enterprise"]
ok = trust_order.index(platform_profile["trust"]["level"]) >= trust_order.index("verified")
print("platform meets minimum trust:", ok)| Level | Requirements |
|---|---|
| Basic | Valid schema; subject present |
| Tooled | Basic + capabilities[] non-empty |
| Trusted | Tooled + trust.level ∈ {verified, attested, enterprise} |
| Priced | Trusted + cost_profile present |
| Enterprise | Priced + sla + compliance + provenance.signature present |
See SPECIFICATION.md §I for the full normative definitions.
| Standard | What it adds |
|---|---|
| AAIF — SC-006 | Agent definition: how to describe and run a portable agent |
| AREG — SC-013 | Agent registry: how to publish and discover agents |
Licensed CC BY 4.0 — part of Schema Commons.