Core
Timeline
Append and read human-readable events on any object — events, provenance, and timestamp touches.
Every object has a Timeline: an ordered stream of human-readable events recording what happened and why. IonWarp writes run summaries and outcome notes here, so an object's history stays inspectable without reading a log.
Append one event:
{
"name": "timeline_append",
"arguments": {
"project_id": "pr_acme",
"collection": "learnings",
"object_id": "learning-tests-run-under-bun",
"event": "Recorded a repo learning from the last review.",
"context": { "source": "external-agent" }
}
}curl -X POST "$DASH_BASE_URL/api/v1/data/event" \
-H "Authorization: Bearer pat_..." \
-d '{"project_id":"pr_acme","collection":"learnings","object_id":"learning-tests-run-under-bun","event":"Recorded a repo learning from the last review.","event_id":"evt_1"}'timeline_query reads them back (always with a limit), and data_event /
data_events_list are the lower-level pair. Arguments for all of them are in
MCP Tools.
Provenance and idempotency
eventcarries the human-readable text. There is noevent_text— the one field name isevent.event_idmakes a write idempotent — reuse it to avoid duplicates.contextcarries provenance (source,provider,model,integration,worker_run_id,prompt_id,prompt_version,badges,media) — the same provenance model as Data.- Touches — use
context.touch.fieldsfor standard timestamp/state touches such aslast_live_data_at,last_stream_data_at,last_computed_data_at.