Verify Capability
Overview
Check that a human or agent is eligible for a capability (via LCEF evidence) — or discover who holds matching skills — before routing work or minting authority. Verification is evidence-backed, not self-asserted.
Why Verify Capabilities?
Think of it like: Checking a medical license before surgery — credentials, not claims.
How Capability Checks Work
HUMΛN ships three related surfaces (none named HumanOS.CapabilityGraph.verifyCapability):
client.evidence.getEligibility(did) → derived capability IDs from verified evidencePOST /v1/capabilities/query with required skills — find holdersclient.passport.grants.list — inspect/revoke authority you grantedEvidence (LCEF) ──► eligibility snapshot ──► eligible_capability_ids
│
└──► capabilities/query (skills, min_weight) ──► matching holdersSDK Examples
REST API Example
GET /v1/evidence/eligibility?passport_did=did:human:alice-smith
Authorization: Bearer POST /v1/capabilities/query
Authorization: Bearer
Content-Type: application/json{
"skills": ["ai_safety_evaluation"],
"min_weight": 0.7,
"limit": 10
}
Verify before route
import { HumanClient, humanCall } from '@human/sdk';const client = new HumanClient({
delegationToken: process.env.HUMAN_DELEGATION_TOKEN!,
});
const did = 'did:human:alice-smith';
const cap = 'ai_safety_evaluation';
const elig = await client.evidence.getEligibility(did);
if (!elig.eligible_capability_ids.includes(cap)) {
throw new Error(Not eligible for ${cap});
}
// Route via HumanOS (capability-first) or invoke a specific agent
await humanCall(
client,
{
task_id: crypto.randomUUID(),
task_type: 'safety_review',
required_capabilities: [cap],
},
{ delegation: process.env.HUMAN_DELEGATION_TOKEN! },
);
Do not call a fantasy HumanOS.Passport.delegate() after verify — mint with POST /v1/passports/:id/delegate or human delegation mint (see Delegate Access).
Portfolio deep-dive
const portfolio = await client.evidence.getPortfolio('did:human:alice-smith');
console.log(portfolio.by_class, portfolio.by_outcome);Security Considerations
DO
Check eligibility (or query) before high-stakes routing
Require min_weight appropriate to risk
Ingest evidence via client.evidence.ingest — capabilities are earned
DON'T
Do not invent HumanOS.CapabilityGraph.verifyCapability / verifyOffline / verifyBatch
Treat capabilities/query as a substitute for delegation scope checks
Skip evidence freshness for regulated work
Next Steps
See Also
client.evidence.getEligibility / getPortfolio (packages/sdk/src/evidence.ts)POST /v1/capabilities/query (required skills)