Agent Manifest
The manifest declares your agent's identity, what data it uses, how it is triggered, and what operations it exposes. The platform uses it for routing, storage resolution, and marketplace discovery.
Core fields
- name, description, version — Identity and semantics.
- capabilities — Scopes used for routing and delegation; the agent only runs when the delegation includes these.
- publisher_slug — Marketplace publisher identifier; ties agent-defined kinds to
agent.<publisher_slug>.*namespace.
resources.consumes / produces
Declare which kinds the agent reads and writes. The platform uses this for capability matching, policy resolution, and documentation. Use dot-separated kind names (e.g. core.meeting.transcript, agent.socratic.interview.session).
See Resources & Kinds forctx.resources.load / save and kind namespaces.
state.kind
Optional. The kind used for this agent's persistent state (e.g. interview Q&A, ticket state). Convention: agent.<publisher_slug>.<name>.state. Durable state is stored in the Resource Graph; session memory holds only hot pointers.
on[] — Event triggers
List of event types (and optional source) that wake this agent. Example: event: 'billing.invoice.paid', source: 'connector:stripe'. Supports wildcards (e.g. billing.*).
muscles[]
Optional. List of muscle dependencies by id andversion. The runtime ensures these muscles are available before the agent is run.
operations[]
Discoverable operations (Wave 8.2): name, description, paramsSchema, resultKind. Used by the CLI and marketplace so builders and AI can discover "what this agent can do and how."
Full example
import { handler } from '@human/agent-sdk';
export default handler({ name: 'interview-runner', description: 'Runs structured interviews and persists Q&A by session', version: '1.0.0', capabilities: ['interview/run', 'document/generate'],
// Marketplace & namespace: who publishes this agent publisher_slug: 'socratic',
// What kinds this agent reads and writes (Resource Graph) resources: { consumes: [ { kind: 'core.meeting.transcript' }, { kind: 'core.calendar.event' }, ], produces: [ { kind: 'agent.socratic.interview.session' }, { kind: 'core.meeting.notes' }, ], },
// Persistent state kind (convention: agent.<publisher_slug>.<name>.state) state: { kind: 'agent.socratic.interview.state', },
// Event triggers: wake when matching events arrive (Wave 4) on: [ { event: 'meeting.transcript.ready', source: 'connector:zoom' }, { event: 'calendar.event.created' }, ],
// Muscle dependencies (Wave 7.5) muscles: [ { id: 'summarize', version: '1.x' }, { id: 'extract-actions', version: '1.x' }, ],
// Discoverable operations for CLI and marketplace (Wave 8.2) operations: [ { name: 'run_interview', description: 'Start a new interview session', paramsSchema: { template_id: { type: 'string', required: true }, subject_did: { type: 'string', required: true }, }, resultKind: 'agent.socratic.interview.session', }, ],
execute: async (ctx, input) => { // ... },});Minimal example
handler({ name: 'my-agent', version: '1.0.0', execute: async (ctx, input) => ({ result: input }),});See also
- Resources & Kinds — load/save and schema helpers.
- Connector kind support — how connectors declare kind patterns.