Skip to main content
Every recording becomes one canonical trace (messages with roles, tool calls paired with their results, tool definitions). Detection is structural: the shape of the records decides, not a framework name. Send what your framework or tracing tool exports; JSON, JSON lines and arrays are read. Library transpilers:
  • aisdk.model: framework: Vercel AI SDK model messages
  • aisdk.steps: framework: Vercel AI SDK steps
  • aisdk.ui: framework: Vercel AI SDK UI messages
  • aisdk.v4: framework: Vercel AI SDK v4
  • anthropic.messages: provider chat: Anthropic messages
  • canonical: ours: the canonical trace, one JSON object per line
  • google.adk: provider chat: Google ADK
  • langchain: framework: LangChain messages
  • langfuse: observability: Langfuse traces, observations and generations
  • legacyCanonical: ours: the previous system’s snake_case shape
  • openai.agents: provider chat: OpenAI Agents (Responses items)
  • openai.chat: provider chat: OpenAI chat completions, with the legacy function_call
  • otel.genai: observability: OpenTelemetry GenAI spans, three attribute flavours
  • pydanticAi: framework: pydantic-ai model request and response parts
  • telemetry: workflow: per-turn telemetry
  • temporal: workflow: Temporal histories (the first payload of each activity)
  • threadExport: workflow: a thread export timeline
An unknown shape is accepted and marked pending: the format discovery agent writes a transpiler for it, previews the reading for review, and the traces are re-read. The raw upload is always kept. The canonical shape (one object per trace): { traceId, domain, messages: [{ role, content, toolCalls? }], toolDefinitions?, meta? }. Roles: system, user, assistant, tool. A tool call has a callId, a name and arguments; the tool message that answers it carries the same callId. This page is also the MCP resource an IDE agent reads; generated by pnpm docs:generate.