Skip to main content

Timeline

timeline_query queries a unified, chronological event timeline spanning session, breakpoint, exception, module, thread, and process-output events — one call to answer "what happened, and in what order?" instead of correlating separate breakpoint hits, output captures, and module loads by hand.

When to Use​

Use timeline_query when you need cross-cutting, chronological visibility into a debugging session — for example, to see whether stdout output happened before or after a given breakpoint hit, or to see every event on one specific thread. Events are held in an in-memory ring buffer (capacity 10,000, oldest evicted first) for the duration of the session.

Typical flow: (debugging session runs, generating events) → timeline_query (optionally filtered by event type / thread, paginated via fromEventId)

Tools​

timeline_query​

Query the unified debugging timeline.

Requires: No session needed — queries the in-memory timeline, which persists for the process lifetime (including after the debugged process has exited, until the server restarts)

When to use: You want debug events in chronological order across multiple sources in one call — session start/end, breakpoint and tracepoint hits, first-chance and user-unhandled exceptions, module loads, thread start/exit, and stdout/stderr writes.

Parameters:

NameTypeRequiredDescription
eventTypesstringNoJSON array of event type names to include, e.g. ["breakpoint_hit","exception_first_chance"]. Null/empty returns all types.
threadIdintegerNoFilter to events from this thread ID only. Null returns events from all threads.
fromEventIdintegerNoReturn only events with eventId >= this value — a cursor for pagination. Use the last eventId from a previous response to page forward.
maxEventsintegerNoMaximum number of events to return (default: 200, max: 1000)

Supported event type names: session_started, breakpoint_hit, tracepoint_hit, exception_first_chance, exception_user_unhandled, module_loaded, thread_started, thread_exited, stdout_written, stderr_written, session_ended.

Example:

{
"eventTypes": "[\"breakpoint_hit\",\"stdout_written\"]",
"maxEvents": 100
}

Response:

{
"success": true,
"events": [
{
"eventId": 1,
"timestamp": "2024-01-15T10:30:45.123Z",
"eventType": 1,
"payload": {},
"threadId": 5
}
],
"totalEvents": 42,
"eventsDropped": 0
}

eventType is currently emitted as the underlying enum's raw integer ordinal (not the string name shown in the parameter description above), and payload is currently always {} — both are pre-existing characterized behaviors of this tool, not something to rely on changing without a version bump. Use eventId order and threadId/timestamp for correlation today.

Real-world use case: An AI agent debugging an intermittent race condition calls timeline_query filtered to a specific threadId to see the exact interleaving of breakpoint hits and output writes on that thread, without manually cross-referencing separate breakpoint and process-output logs.