Docs / Concepts
Capability
A capability is the named unit of work that CHP makes discoverable, governable, invokable, and auditable.
Plain English
A capability is something a person, agent, product, service, process, or organization can do through a host.
Why it exists
Callers need to understand the ability they are using before they bind a workflow, policy, or agent plan to it.
Formal definition
A capability is a stable, versioned, invokable unit exposed by a host with declared metadata, policy, lifecycle, inputs, outputs, and evidence behavior.
Concrete example
Ground the concept before the schema.
schedule_technician is a capability because it names a specific hosted ability, declares policy, and returns a concrete result.
Finds an available qualified technician and reserves a service window.
Policy boundary
Approval requiredmanager_approval
A manager must approve technician scheduling before the host returns a confirmed appointment.
Invocation trace
- 01 Actor
Planning Agent
- 02 Capability
schedule_technician
- 03 Host
ServiceOpsHost
- 04 Policy
manager_approval
- 05 Context
job_context
- 06 Result
Confirmed Appointment
{ "id": "service-ops-host", "version": "0.1.0", "protocol_version": "0.1", "kind": "service", "capabilities": [{ "id": "schedule_technician", "version": "1.0.0", "description": "Finds an available qualified technician and reserves a service window.", "status": "experimental", "modes": ["sync"], "emits": ["execution_started", "execution_completed", "execution_denied"], "policy": { "risk_tier": "high", "auth_required": true, "approval_required": true, "allowed_actors": ["agent://planning-assistant"] }, "metadata": { "required_permissions": ["service:dispatch"], "lifecycle": "invokable" } }], "evidence": { "store": "local-append-only", "append_only": true }}Relationships
Where this sits in the protocol.
Each concept should explain its neighbors so implementation teams can preserve the boundary across manifests, invocation, evidence, and tests.
A host owns the capability lifecycle and manifest entry.
A registry or manifest makes the capability discoverable before invocation.
Policy determines whether the capability may execute for a caller.
Visual model
- 01Caller discovers schedule_technician.
- 02Host validates the requested version and policy.
- 03Invocation produces Confirmed Appointment or a structured denial.
Implementation notes
- Use stable capability IDs that describe the ability, not the transport endpoint.
- Publish version and availability before callers invoke the capability.
- Return structured outcomes for unavailable, denied, and failed executions.
Common mistakes
- Treating a raw function name as the public protocol contract.
- Hiding lifecycle or permission state until after the invocation starts.
- Changing payload semantics without changing the capability version.
Related concepts