Contribution kind: capability. Ingestion: biome-host parser (CapabilityParser).

A capability is the only way an agent reaches a side effect. Contributing one declares WHAT it is; the platform decides who may call it. Two authoring paths produce the identical wire payload and reach the identical endpoint, so the choice is purely ergonomic:

  1. Contribution file — contributions/<slug>.capability.contribution.json with { "kind": "capability", "manifest": { … } }, or the equivalent xema.contributions.inline[] entry. No codegen step.
  2. Decorator — annotate a service provider method with the full @XemaCapability option set and opt the service into the boot-time registration scanner. A partial descriptor is skipped, never silently defaulted.

Provenance (biome.id / biome.version) is NOT a field below — the ingestion pipeline stamps it from the discovering biome's manifest. Authors never declare it inline.

manifest

FieldTypeRequiredNotes
refstringyespattern /^[a-z][a-z0-9-]*:[a-z][a-z0-9-]*(\.[a-z][a-z0-9-]*)*@\d+$/
titlestringyesmax 200 chars
summarystringyesmax 1000 chars
sideEffectsstringyesmax 1000 chars
inputSchemamap<string, unknown (free-form JSON)>yes—
outputSchemamap<string, unknown (free-form JSON)>yes—
riskTierenumyesone of: low, medium, high, critical
requiresApprovalbooleanyes—
examplesmap<string, unknown (free-form JSON)>[]nomax 20 entries
externalServiceRefstringnomax 200 chars
defaultCredentialBindingRefstringnomax 200 chars
outputClassificationenumnoone of: public, internal, confidential, secret, regulated
authorityEffectenumnoone of: none, expanding
reachenumnoone of: owner, integration, platform
effectClassenumnoone of: read, write, admin
trustedContextProjectionobject — see trustedContextProjectionno—
requiredBindingsarray of objects — see requiredBindings[]nomax 20 entries
safeForAgentsbooleanno—
humanBaselineobject (discriminated on kind) — see humanBaseline (kind: "explicit-only"), humanBaseline (kind: "org-role"), humanBaseline (kind: "org-administrators")no—
delegableliteral trueno—
instanceGradeobject — see instanceGradeno—
descriptorKindenumnoone of: invocable, authority
callerConstraintenumnoone of: workflow-step

trustedContextProjection

FieldTypeRequiredNotes
schemaVersionliteral 1yes—
profileenumyesone of: critical-operation-v1
deliveryliteral "server-envelope"yes—

requiredBindings[]

FieldTypeRequiredNotes
roleKeyobject — see requiredBindings[].roleKeyyes—
ownerKindenumyesone of: system, org, project, app, session, biome, user
remedyCapabilityRefstringnopattern /^[a-z][a-z0-9-]*:[a-z][a-z0-9-]*(\.[a-z][a-z0-9-]*)*@\d+$/

humanBaseline (kind: "explicit-only")

FieldTypeRequiredNotes
kindliteral "explicit-only"yes—

humanBaseline (kind: "org-role")

FieldTypeRequiredNotes
kindliteral "org-role"yes—
minimumOrgRoleenumyesone of: org_owner, org_admin, org_member
environmentsenum[]yesentries one of: system, org, project, app, session, sandbox, public, store-review, trusted-dev
dimensionsmap<string, string[]>no—

humanBaseline (kind: "org-administrators")

FieldTypeRequiredNotes
kindliteral "org-administrators"yes—
environmentsenum[]yesentries one of: system, org, project, app, session, sandbox, public, store-review, trusted-dev
dimensionsmap<string, string[]>no—

instanceGrade

FieldTypeRequiredNotes
resourceTypestringyespattern /^[a-z][a-z0-9-]*_[a-z][a-z0-9_]*$/
relationstringyespattern /^[a-z][a-z0-9_]*$/
environmentsenum[]yesentries one of: system, org, project, app, session, sandbox, public, store-review, trusted-dev

requiredBindings[].roleKey

FieldTypeRequiredNotes
resourceKindstringyespattern /^[a-z][a-z0-9-]{0,62}$/u
rolestringyespattern /^[a-z][a-z0-9-]{0,62}$/u
qualifierstringnopattern /^[a-z][a-z0-9-]{0,62}$/u

Publish-time envelope

The parser and the decorator scanner both validate the manifest above plus the invocation half, as one CapabilitySyncManifest. WHAT the capability is and HOW it is invoked are split across kernel subpaths to keep the subpath graph acyclic; they are recomposed here:

  • invocation — optional.

An optional invocation is not a soft default. A capability must be reachable by exactly one of: a declared invocation binding, an org-level provider binding, or a live runner. A ref with none of the three fails fast at the capability router rather than degrading.