Skip to content
OpenSmartRoute

Open Capability Manifest (OCM) v1

The OCM specification and JSON Schema for describing routable capabilities.

spec/ocm/README.md

A vendor-neutral, machine-readable description of one routable capability – an LLM, agent, skill, persona, tool, workflow, human queue or destination – so that catalogues can be published, validated and consumed by any router or gateway, not only OpenSmartRoute.

  • Schema: capability.schema.json (JSON Schema 2020-12)
  • Reference validator / converter: opensmartroute.ocm (osr validate path/)
  • A targets.yaml entry with an ocm: "1" field is a manifest; load_targets accepts mixed files, a single manifest, or a directory of capability.yaml files.
ocm: "1"
id: acme/support-agent
kind: agent
description: Handles orders, refunds and account issues via internal tools.
capabilities: { domains: [customer_support], actions: [action, qa], supports_tools: true }
constraints: { data_boundary: private, regions: [eu], pii_allowed: true }
cost: { usd_per_call: 0.02 }
latency_ms: { p50: 1500, p95: 4000 }
endpoints:
  - { protocol: a2a, url: https://agents.acme.com/support }
  - { protocol: http, url: https://eu.agents.acme.com/support, region: eu }
examples: ["I want a refund for order #12345, it arrived damaged."]
quality_prior: 0.8

Field notes#

FieldMeaning
idStable, lowercase; namespaced with / (publisher/name).
kindllm · agent · skill · persona · tool · workflow · human · destination.
capabilitiesWhat it can do; max_complexity/min_complexity in [0, 1].
constraintsWhere it may run: regions, data_boundary, pii_allowed, tenants.
costusd_per_call for agents/workflows/tools/humans, usd_per_1k_tokens for models; energy and carbon optional.
latency_msA number or {p50, p90, p95, p99}; routers use p50 for scoring.
endpointsHow to call it. http and a2a bind to executors directly (bind_endpoint); mcp/queue are wired by the operator. A region on an endpoint lets the router pick the in-region one.
examplesRepresentative prompts (fuel the similarity strategy and the eval dataset).
quality_priorPrior quality belief before feedback (leaderboard score, past win rate).
primaryfalse for plan-slot-only capabilities (a persona layered on a model).

Versioning#

ocm is a major version string. Additive fields ship under the same major; breaking changes bump it. Unknown top-level fields are rejected so typos surface at osr validate time – extension data belongs under metadata.