TapEvent schema.
Core fields
| Field | Type | Description |
|---|---|---|
event_id | string | Unique ID (evt_<hex>) |
parent_event_id | string? | Links child tool_call events to parent llm_request |
project_id | string | API key / project identifier |
session_id | string | Session grouping ID (ses_<hex>) |
user_id | string? | User identifier (from init()) |
type | string | "tool_call", "llm_request", or "mcp_lifecycle" |
tool_name | string | Tool or model name |
model | string? | LLM model name |
timestamp | number | Unix epoch seconds |
Request and response fields
| Field | Type | Description |
|---|---|---|
inputs | object? | Tool arguments or request parameters |
output | object? | Tool result or response summary |
error | string? | Error message if the call failed |
latency_ms | number? | Wall-clock time in milliseconds |
source | string | Origin: "anthropic", "openai", "mcp_sdk", "composio_sdk", "http_intercept", "mcp_proxy", "mcp_server" |
LLM-specific fields
| Field | Type | Description |
|---|---|---|
system_prompt | string? | System prompt (LLM requests only) |
request_messages | array? | Serialized conversation history |
response_content | array? | Serialized response blocks |
thinking | array? | Thinking/reasoning blocks |
token_usage | object? | Token counts (input, output, cache, reasoning) |
stop_reason | string? | Why the LLM stopped ("end_turn", "tool_use", etc.) |
AARM fields
These fields are only present when cryptographic receipts are enabled.| Field | Type | Description |
|---|---|---|
context_hash | string? | AARM hash chain value |
output_hash | string? | SHA-256 of canonical output |
signature | object? | AARM Ed25519 signature |