Free tool · #3
OTel GenAI Trace Validator
Check an OpenTelemetry span against the gen_ai.* semantic conventions — what conforms, what is missing, what is deprecated.
Result — chat gpt-4o
3/3 required · 2 deprecated · 6/7 recommended
gen_ai.usage.output_tokensCompletion tokens — required to compute output cost.gen_ai.systemRenamed to the provider namespace. Usegen_ai.provider.nameinstead.openaigen_ai.usage.completion_tokensThe old name predates the stable usage namespace. Usegen_ai.usage.output_tokensinstead.340gen_ai.operation.nameThe operation performed — sets what the span means (chat, embeddings, …).chatgen_ai.provider.nameWhich provider served the call — needed to attribute cost and latency.openaigen_ai.request.max_tokensThe requested output-token cap.1024gen_ai.request.modelThe requested model. Without it, a trace cannot be priced.gpt-4ogen_ai.request.temperatureSampling temperature.0.7gen_ai.response.finish_reasonsWhy generation stopped — an array of strings.[stop]gen_ai.response.idThe provider response id, for correlation.chatcmpl-abc123gen_ai.response.modelThe model that actually served the request (can differ from the requested one).gpt-4o-2026-05-01gen_ai.usage.input_tokensPrompt tokens — required to compute input cost.1200
Modernized attributes (deprecated names replaced)
{
"gen_ai.operation.name": "chat",
"gen_ai.provider.name": "openai",
"gen_ai.request.model": "gpt-4o",
"gen_ai.request.temperature": 0.7,
"gen_ai.request.max_tokens": 1024,
"gen_ai.response.model": "gpt-4o-2026-05-01",
"gen_ai.response.id": "chatcmpl-abc123",
"gen_ai.response.finish_reasons": [
"stop"
],
"gen_ai.usage.input_tokens": 1200,
"gen_ai.usage.output_tokens": 340
}Use this tool from code — or hand it to your agentagent prompt · REST · MCP
Hand this tool to your coding agent
Paste into Claude Code, Cursor, Codex, or any agent. It learns to call this tool over REST or MCP, reaches for it when you ask, and keeps our sourced/pending labels honest.
You can use telemeter.ai's free "OTel GenAI Trace Validator" — a keyless, read-only tool (no signup), available as an HTTP API and an MCP tool. What it does: Check an OpenTelemetry span against the gen_ai.* semantic conventions — what conforms, what is missing, what is deprecated.
Whenever I ask you something this tool answers, call it and use its result instead of estimating yourself.
REST:
curl -sX POST https://telemeter.ai/api/tools/otel-validator -H 'content-type: application/json' -d '{"trace":{"name":"chat gpt-4o","kind":"SPAN_KIND_CLIENT","attributes":{"gen_ai.operation.name":"chat","gen_ai.provider.name":"openai","gen_ai.request.model":"gpt-4o","gen_ai.response.model":"gpt-4o-2026-05-01","gen_ai.usage.input_tokens":1200,"gen_ai.usage.output_tokens":340,"gen_ai.response.finish_reasons":["stop"]}}}'
MCP: the telemeter MCP server at https://telemeter.ai/mcp exposes this as the tool "otel-validator" — call it with tools/call.
The response is JSON: { status, data, summary, provenance }. "provenance" carries the source and the date the figure was verified. If status is "pending" or "stale", tell me the value isn't currently verified rather than presenting it as fact.Or call it directly. This tool runs behind one handler with three front doors — this page, a REST endpoint, and an MCP tool. Same result, read-only, no key. The example below is a request that works.
curl -sX POST https://telemeter.ai/api/tools/otel-validator \
-H 'content-type: application/json' \
-d '{"trace":{"name":"chat gpt-4o","kind":"SPAN_KIND_CLIENT","attributes":{"gen_ai.operation.name":"chat","gen_ai.provider.name":"openai","gen_ai.request.model":"gpt-4o","gen_ai.response.model":"gpt-4o-2026-05-01","gen_ai.usage.input_tokens":1200,"gen_ai.usage.output_tokens":340,"gen_ai.response.finish_reasons":["stop"]}}}'curl -sX POST https://telemeter.ai/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"otel-validator","arguments":{"trace":{"name":"chat gpt-4o","kind":"SPAN_KIND_CLIENT","attributes":{"gen_ai.operation.name":"chat","gen_ai.provider.name":"openai","gen_ai.request.model":"gpt-4o","gen_ai.response.model":"gpt-4o-2026-05-01","gen_ai.usage.input_tokens":1200,"gen_ai.usage.output_tokens":340,"gen_ai.response.finish_reasons":["stop"]}}}}}'{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"trace": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "array",
"items": {}
}
]
}
},
"required": [
"trace"
],
"additionalProperties": false
}Want this across your whole stack?
Telemeter tracks real cost, latency, and quality on every production agent run.
https://telemeter.ai/tools/otel-validatorNo account, nothing sent anywhere — your trace is parsed and validated entirely in your browser. Data notice →