Skip to main content

POST /api/traces/spans

Accepts ToolCallSpan objects from the LangSight Python SDK.
curl -X POST http://localhost:8000/api/traces/spans \
  -H "Content-Type: application/json" \
  -d '[{
    "server_name": "postgres-mcp",
    "tool_name": "query",
    "started_at": "2026-03-17T12:00:00Z",
    "ended_at": "2026-03-17T12:00:00.042Z",
    "latency_ms": 42.0,
    "status": "success",
    "trace_id": "trace-abc123",
    "agent_name": "support-agent",
    "session_id": "sess-xyz"
  }]'
Response: {"accepted": 1} with HTTP 202.

ToolCallSpan fields

FieldTypeRequiredDescription
server_namestringMCP server name
tool_namestringTool that was called
started_atISO datetimeWhen call began
ended_atISO datetimeWhen call completed
latency_msfloatDuration in milliseconds
statussuccess|error|timeoutOutcome
errorstringError message if status ≠ success
span_idstringUUID (auto-generated if omitted)
trace_idstringGroups spans into a trace/conversation
agent_namestringAgent that made the call
session_idstringApplication-level session ID

POST /api/traces/otlp

Accepts standard OTLP/JSON trace data from any OpenTelemetry-instrumented framework.
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:8000/api/traces/otlp
LangSight extracts MCP tool call spans by matching:
  • Span names matching mcp.*
  • Attribute gen_ai.tool.name (GenAI semantic conventions)
  • Attribute mcp.server.name + mcp.tool.name
Non-MCP spans are ignored.