Codex writes better fixes when it sees production. Praxen Inc. hands it the logs, traces and recent changes.
Signs you in, connects your stack and registers the MCP server in Codex.
> why is checkout returning 502s since this morning?
praxen · searchcheckout errors, recent deploys
praxen · runToolqueryLogs · checkout-edge 5xx, last 6h
praxen · searchcheckout-edge deploys and config changes
The 502s started at 09:14, two minutes after deploy 9f3c2a1 cut the hd-prod Hyperdrive pool from 50 connections to 5. Requests queue for a connection and time out at the edge.
Fix: put max_connections back to 50 in wrangler.jsonc. Want me to make the change?
Critical latency degradation in checkout-edge worker · issue already open in Praxen Inc.
Every tool you use, from Codex. Praxen Inc. sits between Codex and your stack.
Connect your clouds, observability, code and chat once. Codex gets three tools: searchTools finds the right one for the question, runTool calls it, and runCode chains several in one go. One sign-in covers every provider, and a tool's schema loads only when Codex uses it.
Code mode. Codex writes the program, Praxen Inc. runs it.
Calling tools one at a time fills Codex's context with raw results: tens of kilobytes of metrics, thousands of log lines, each step waiting on the model. With runCode, Codex writes a short program that calls every tool it needs. It runs in Praxen Inc.'s sandbox, and only the answer comes back.
deployHistory → 12 deploys
queryMetrics → 41 kB of series
queryMetrics → another 41 kB
queryLogs → 3,000 lines
… and a model turn between each
Every raw result lands in the context window before Codex can think about it.
// Which deploy slowed checkout-edge? const deploys = await tools.deployHistory({ service: "checkout-edge", hours: 24 }); const { points } = await tools.queryMetrics({ service: "checkout-edge", metric: "latency.p99", hours: 24, }); const median = (xs) => xs.sort((a, b) => a - b)[xs.length >> 1] ?? 0; const p99 = (t, side) => median(points.filter((p) => (side < 0 ? p.t < t : p.t > t)).map((p) => p.v)); // Score every deploy by the p99 shift across its timestamp. const [worst] = deploys .map((d) => ({ ...d, shift: p99(d.at, 1) / p99(d.at, -1) })) .sort((a, b) => b.shift - a.shift); // Pull the error logs right after the suspect deploy. const errors = await tools.queryLogs({ service: "checkout-edge", level: "error", after: worst.at, limit: 5, }); return { deploy: worst.sha, shift: worst.shift, errors };
One call. The raw data stays in the sandbox and Codex reads the answer.
Ask Codex about production. It answers from what's actually running.
> Why is checkout returning 502s?
Codex queries logs and traces across every provider you connect, and finds when it started.
> What changed before the latency spike?
Deploys and config changes come back with when they landed and what they touched.
> Who calls this endpoint before I change it?
The context graph and real request logs show every caller, so a schema change doesn't break one you forgot.
> Look at the issue Praxen Inc. opened this morning.
Codex reads the investigation and its evidence, then starts on the fix with you.
Prefer to add it by hand?
Already have a Praxen Inc. account? Register the MCP server in Codex directly, then ask it a question you'd normally open five dashboards for.
Add an entry in ~/.codex/config.toml under [mcp_servers.praxen] (bridge with npx mcp-remote if the build lacks streamable HTTP), pointing at https://mcp.getpraxen.app/mcp.
Guides for Codex
- Guide How to use Codex CLI: install, AGENTS.md, MCP and exec How to use Codex CLI: install it, sign in, write an AGENTS.md, set permissions, resume sessions, script it with codex exec and add MCP servers.
- Guide How to add MCP servers to Cursor How to add MCP servers to Cursor: project and global mcp.json files, remote and local servers, OAuth sign-in, secrets from env vars and tool approvals.
- Guide How to add MCP servers to GitHub Copilot in VS Code How to add MCP servers to GitHub Copilot in VS Code: workspace and user mcp.json, HTTP and stdio servers, MCP: Add Server and confirming tool calls.
- Guide How to use Claude Code: a practical guide How to use Claude Code: install it, write a CLAUDE.md, pick a permission mode, steer it mid-task, script it with -p and connect it to your tools with MCP.
- Guide How to use OpenCode: install, plan and build, MCP How to use OpenCode: install it, connect a provider, write an AGENTS.md with /init, switch between Plan and Build, undo changes and add MCP servers.
- Guide How to use the Pi coding agent How to use the Pi coding agent: install it, sign in with /login, pick a model, branch sessions with /tree and /fork, compact context and script it with -p.
Frequently asked questions
How does Codex authenticate?
Codex signs in over OAuth in a browser the first time it calls the server. For CI and headless machines, create an API key under Settings > Coding agents and add http_headers = { "x-api-key" = "YOUR_API_KEY" }.
Can Codex change my infrastructure through Praxen Inc.?
Not unless you opt in. Write tools stay hidden until your credential carries the write scope, and every write is screened before it runs.
What can Codex actually query?
Everything Praxen Inc. knows: logs, metrics and traces across every connected provider, the context graph, deploys and recent changes, and the full REST API.
Do I need the Praxen Inc. CLI too?
No, the MCP server is a complete surface on its own. Install the CLI and praxen setup also registers that server in every coding agent it detects.