Frequently Asked Questions
UTCD (Universal Tool Capability Descriptor) is a YAML-based specification that lets AI tools describe their capabilities, constraints, and trustworthiness in a machine-readable format.
- Tool developers — Describe your tool's capabilities
- AI agent developers — Make informed tool selection decisions
- Enterprises — Enforce governance policies on AI tool usage
- Platform builders — Build tool marketplaces and registries
Yes. UTCD is open source under the MIT License. No permission required to implement.
No. UTCD is pre-execution only. It describes tools; it never runs them.
| UTCD | MCP |
|---|---|
| Describes what a tool IS | Describes how to CALL a tool |
| Static YAML file | Runtime protocol |
| Pre-execution reasoning | Execution transport |
They're complementary, not competing.
YAML. Files should be named utcd.yaml or *.utcd.yaml.
UTCD supports graceful degradation. Missing profiles are treated as "unknown" rather than failures. Agents can still reason over core metadata.
UTCD uses plural discovery (like DNS):
- Shipped with tool (MUST) — In the repo/package
- Well-known URL (SHOULD) —
/.well-known/utcd.yaml - Reference in manifest (MAY) — Pointer in package.json
- Registry (NEVER REQUIRED) — Optional convenience
No, and there never will be. Registries may exist as convenience, but UTCD does not require or endorse any central authority.
- Create a
utcd.yamlfile in your project root - Fill in the core fields (identity, capability, constraints, connection)
- Optionally add profiles (security, privacy, cost)
- Validate with
python -m utcd.validator your-file.yaml
from utcd import UTCDAgent, Policy
agent = UTCDAgent(policy=Policy.standard())
agent.load_tools_from_directory("./tools")
decision = agent.select_best(domain="data-processing")No one. UTCD is an open standard with no central authority.
The core schema is frozen after v1. Only profiles can evolve.
Community-driven. Propose a profile, provide a reference implementation, gather feedback, and it becomes adopted through usage — not decree.
OpenAPI describes how to call an API (endpoints, parameters). UTCD describes what a tool is (capabilities, safety, trust). Different purposes.
YAML is more human-readable and supports comments. UTCD files are meant to be authored by humans and read by machines.
Model Cards describe ML models. UTCD describes tools. Same philosophy, different domain.
Absolutely. The spec is open; what you build on top is yours.
No. UTCD is free to implement, forever.