Capability declaration
@kindgi/specs/capability.schema.json, schema version 1.1.0.
An agent's model requirements as declarative constraints. The model router matches capabilities against registered providers, respecting per-tenant policy. defineCapability validates a declaration against this schema; a declaration that no registered provider satisfies fails at routing time with capability-unsatisfiable.
kind(string): Resource kind this capability requests. Open string:exampleslists the well-known kinds, and adapters can declare their own. Absent meansllm-inference. The router only considers providers whosecapabilityKindequals it (a provider that declares none counts asllm-inference). Added in schema-version 1.1.0.needs(array of Requirement, required)prefer(array of Preference): Soft preferences: the router picks the highest-scoring model that also satisfies all 'needs'.budget(Budget): Per-invocation budget. Declarative: carried with the declaration but not enforced by the runtime (per-turn spend is capped by the agent'sbudget.maxCostUsd).
Definitions
Section titled “Definitions”Requirement
Section titled “Requirement”Type: FeatureRequirement or ContextRequirement or CostRequirement or RegionRequirement or LatencyRequirement or ProviderRequirement or ModelRequirement
FeatureRequirement
Section titled “FeatureRequirement”feature("structured-output"|"vision"|"audio-input"|"audio-output"|"tool-use"|"parallel-tool-use"|"thinking"|"long-context"|"code-execution"|"web-search"|"file-search"|"streaming"|"batch", required)
ContextRequirement
Section titled “ContextRequirement”contextWindow(object, required)op(">="|">"|"="|"<="|"<", required)value(integer, required)
CostRequirement
Section titled “CostRequirement”costPerCall(object, required)op(">="|">"|"="|"<="|"<", required)usd(number, required)
RegionRequirement
Section titled “RegionRequirement”region(string, required): Geographic region constraint (e.g. 'eu-only', 'us-only', 'us-gov'). Enforced by the router against each provider's declared region; a tenant policy'sregionAllowcan constrain it further.
LatencyRequirement
Section titled “LatencyRequirement”p95LatencyMs(object, required)op("<="|"<", required)value(integer, required)
ProviderRequirement
Section titled “ProviderRequirement”Hard constraint on allowed providers (allowlist) or disallowed providers (denylist). Tenant policy can narrow the set further.
providers(object, required)allow(array of string)deny(array of string)
ModelRequirement
Section titled “ModelRequirement”Hard constraint on allowed models (allowlist) or disallowed models (denylist), matched against each provider's model names (ModelInfo.name). Can be combined with a providers requirement. Tenant policy can narrow the set further. Added in schema-version 1.1.0.
models(object, required)allow(array of string)deny(array of string)
Preference
Section titled “Preference”feature(string, required): A capability feature or a soft attribute (e.g. 'lower-cost', 'lower-latency', 'higher-accuracy').weight(number, required)
Budget
Section titled “Budget”maxCostUsd(number)maxTokens(integer)maxDurationMs(integer)