The unopinionated agent observatory.
See every run of every agent you ship: each model call, tool call and retrieval, with its prompt, its answer and its cost. Any framework, any language, any model provider. Nothing to adopt.
Hosted free with every feature, or one open-source binary on your own machine.
- TS Vercel AI SDK POST /api/chat Vercel AI SDK · TS
- TS Vercel AI SDK gpt-4.1-mini Vercel AI SDK · TS
- TS Vercel AI SDK search_orders Vercel AI SDK · TS
- Go OpenTelemetry GET /orders/{id} OpenTelemetry · Go
- Py LlamaIndex vector.query LlamaIndex · Py
- Py LangChain refund_agent LangChain · Py
- Py Anthropic SDK claude-sonnet-4 Anthropic SDK · Py
- Py LangChain issue_refund LangChain · Py
Works with what you already run.
mcpd receives OpenTelemetry and reads both the OpenTelemetry and the OpenInference conventions for model calls, so the instrumentation that already exists for your stack works as it is. Your agent keeps its framework, and you keep your code.
Point any OpenTelemetry exporter at mcpd
export OTEL_EXPORTER_OTLP_ENDPOINT=https://api.mcpd.sh
export OTEL_EXPORTER_OTLP_PROTOCOL=http/json Or add an SDK: TypeScript · Python · Rust · Go · Kotlin · Elixir
Agent frameworks
- LangChain
- LangGraph
- LlamaIndex
- CrewAI
- Vercel AI SDK
- OpenAI Agents SDK
- Pydantic AI
- AutoGen
- Semantic Kernel
- Haystack
- DSPy
- Your own loop
Model providers
- OpenAI
- Anthropic
- Google Gemini
- Mistral
- Azure OpenAI
- Groq
- Ollama
- vLLM
Every step, with the evidence.
A run is a tree of model calls, tool calls and retrievals. Open any step to read the exact prompt and answer, the tokens it used and what it cost. Search finds a run by what the model said, and every log line links back to the step that wrote it.
- A waterfall of every run, on one clock
- The full conversation, tool calls included
- Cost per run, per model and per project
- Logs, metrics and traces joined by trace id
- support_agent 2.86s
- gpt-4.1-mini 910ms
- lookup_order 420ms
- orders.get 300ms
- gpt-4.1-mini 1.38s
- claude-sonnet-4 612k tok · $2.31
- gpt-4.1-mini 1.9M tok · $0.84
- text-embedding-3-small 2.0M tok · $0.04
- 14:02:07.118 INFO request received path=/api/chat
- 14:02:08.004 INFO lookup_order order_id=4471
- 14:02:08.211 WARN carrier api slow, retrying attempt=2
- 14:02:08.392 INFO order status=shipped eta=Thu
- 14:02:09.977 INFO answered tokens=1,310 cost=$0.00071
Each line links to the span that wrote it.
Workflows that survive a crash.
Write the steps in your own code, in any of six languages. mcpd holds the run between them: retries, timers, and waits for an event that may take a week. If a worker dies mid-step, another one picks the step up.
- classify task completed
- draft agent attempt 2
- approval wait_event completed
- send task completed
Journal
- 00:00 Run started
- 00:03 classify completed
- 00:04 draft claimed by worker-a
- 00:07 worker-a stopped mid-step
- 00:10 Lease on draft expired
- 00:10 draft claimed by worker-b, attempt 2
- 00:14 draft completed
- 00:15 Waiting for approval, no process alive
- 00:21 Event approval arrived
- 00:24 send completed
- 00:24 Run completed
Your code runs every step
The daemon never sees a model, a prompt or a credential. Workers claim one step at a time.
Waits hold no process
A sleep or a wait for approval holds the run with no process alive, through a deploy or a week.
Every run is a trace
Each step is a span with its input, output and cost, so search and scoring work on runs too.
- error_rate > 5% resolved
- latency_p95 > 4 s ok
- cost > $5 / h ok
- score_mean no_tool_loop < 0.9 ok
Know when quality slips.
Score every run with thirteen built-in scorers or with a model as the judge. Turn production runs into datasets and compare experiments. Monitors watch error rate, latency, cost and scores, and call your webhook when one of them moves.
Run it anywhere.
One binary with the storage and the interface built in. SQLite on a laptop, Postgres or ClickHouse for a team, Docker or Kubernetes in production. No telemetry and no licence server.
Hosted
Free at mcpd.sh with every feature included. Sign up and send your first trace.
Your laptop
One process and one SQLite file. Nothing else to install.
Docker
One container, one volume, one port.
Kubernetes
A Helm chart, with Postgres or ClickHouse behind it and keys per project.
Run your own
git clone https://github.com/mcpd/mcpd && cd mcpd && make build && ./target/release/mcpd demo Your first trace in five minutes.
Sign up free, or run it on your own machine. The same product either way.