It is not a skill, and not a capability flag
These three sit close together and do different jobs. Mixing them up is the usual mistake.
A skill shapes how the agent works. A capability says what class of work it takes. A use case is
an entry point someone else can call.
Declaring one
Use cases live in the worker’sagent-spec.yaml, and the agent advertises them itself — there is
nothing to register separately.
A malformed spec is rejected when you author it rather than at run time, and the same definition is
the wire format — there is no second place for it to drift.
Use cases travel inside the agent card, so changing them registers as a new generation of the agent.
There is nothing separate to publish.
Every agent already has two
Both are advertised automatically, so a freshly deployed agent always has a safe command you can run to prove it works.
Declaring your own
connectivity_check or sample_run keeps your definition instead.
Calling one
Every agent is served as its own MCP server, so a client can connect to that one agent:invoke— starts a run. It is typed from the agent’s own input schema when it has one, and otherwise takes free text. It also accepts ause_casefield, so callinginvokewithuse_case: "triage_build"reaches exactly the same path as callingtriage_builddirectly.get_run— checks a run thatinvokestarted. Given a run id it reads the current state; give it a wait and it blocks for up to 45 seconds instead of returning immediately.
Next steps
Build from scratch
Where
agent-spec.yaml lives, and the rest of what it declares.Skills
The know-how an agent reads, as opposed to an entry point it offers.
MCP server
The platform’s own MCP surface, distinct from an agent’s.
Deploy an agent
Getting to the point where there is something to call.