Event Types
All 11 event types in the Agent Observability Protocol (AOP) v1.0 taxonomy, grouped by tier.
Every AOP event shares a common envelope (spec, session_id, agent_id, sequence, timestamp, type) and carries a tier-specific payload.
Event lifecycle
Tier 1 — Lifecycle
Report the agent's existence and operational status. Every conforming agent must emit at least session.started and session.ended.
session.started
Emitted once at the beginning of a session.
payload: {
goal?: string // The agent's primary objective
agent_version?: string // Semantic version of the agent
metadata?: object // Arbitrary key-value context
}session.heartbeat
Periodic signal indicating the agent is still alive. Useful for detecting hangs or crashes.
payload: {
status: 'running' | 'idle' | 'waiting'
metadata?: object
}session.ended
Emitted once when the session terminates, whether by success, failure, or cancellation.
payload: {
outcome: 'completed' | 'failed' | 'cancelled' | 'timeout'
outcome_summary?: string
error_message?: string
metadata?: object
}Tier 2 — Cognition
Capture the agent's internal reasoning. These events explain why the agent acts, not just what it does.
cognition.thought
A free-form reasoning step — the agent thinking out loud.
payload: {
content: string // The thought text
confidence?: 'high' | 'medium' | 'low' // Self-assessed confidence
metadata?: object
}cognition.goal
Records when the agent sets, updates, or completes a sub-goal.
payload: {
goal: string
status: 'set' | 'in_progress' | 'completed' | 'abandoned'
parent_goal?: string
metadata?: object
}cognition.decision
Captures a deliberate choice between alternatives.
payload: {
decision: string // What was decided
alternatives?: string[] // Options that were considered
reasoning?: string // Why this alternative was chosen
metadata?: object
}cognition.uncertainty
Signals that the agent is unsure about something — useful for flagging moments that may need human review.
payload: {
content: string // What the agent is uncertain about
confidence?: 'high' | 'medium' | 'low' // How uncertain
metadata?: object
}Tier 3 — Operations
Record the agent's actions in the external world — tool invocations, API calls, memory access, and spawning child agents.
operation.tool_start
Marks the beginning of a tool invocation. Pair with tool_end using tool_call_id.
payload: {
tool_name: string // Name of the tool being called
tool_call_id: string // Unique ID to correlate with tool_end
input?: object // Arguments passed to the tool
metadata?: object
}operation.tool_end
Marks the completion of a tool invocation.
payload: {
tool_name: string
tool_call_id: string
success: boolean
result_summary?: string
duration_ms?: number
metadata?: object
}operation.agent_spawn
Records the creation of a child agent session, linking parent and child in the session tree.
payload: {
child_session_id: string
child_agent_id: string
goal?: string // The child agent's objective
metadata?: object
}operation.memory
Tracks reads and writes to the agent's memory or knowledge store.
payload: {
operation: 'read' | 'write' | 'delete'
key?: string
summary?: string
metadata?: object
}operation.external_call
Records an outbound HTTP or API call that is not a tool invocation.
payload: {
method: string // HTTP method
url: string // Target URL
status_code?: number
duration_ms?: number
metadata?: object
}Related
- Protocol specification — envelope format and design principles
- Transport — how events are delivered to the collector
- SDK reference — typed methods for emitting each event