For AI agents
The independent verifier coding agents like Codex, Claude Code, and Cursor call before shipping an API change: a deterministic verdict over the CLI or MCP.
Coding agents like Codex, Claude Code, and Cursor change APIs faster than anyone can review by hand. An agent cannot trust its own grade: the check has to come from outside the generation loop. Dino is that check. The agent builds, Dino verifies the running API and returns a deterministic verdict, and the agent branches on it with no human in the middle.
How an agent calls Dino
Two interfaces, same verdict. The CLI needs no account: run dino scan --format json against any endpoint, read the verdict on stdout and the branch signal from $?. The MCP server is the hosted path: typed tools plus history, gates, and comparison.
dino scan --endpoint https://your-api.com/graphql --fail-on-high --format json --quietAn agent reads three surfaces, in the order it acts on them:
- Exit code (branch):
0clean ·2usage ·3policy gate failed ·4transient ·5config ·6partial ·70crash. Branch on$?with no parsing. See exit codes. - JSON verdict (understand):
--format jsonemitsScanResultV1on stdout (core.health.verdict, findings, coverage); stdout stays pure, so it pipes tojq. See JSON output. - Error envelope (recover): on exit
2/4/5/70, the last stderr line is{"error":{"kind","message","retryable","exitCode"}}.retryablesays retry (transient) or stop (permanent). See error envelopes.
Is the change safe to ship?
dino scan --fail-on-high exits 3 when any HIGH or CRITICAL finding exists and 0 when clean, enough to decide continue-or-stop. Over MCP, get_agent_readiness returns status: ready | partial | not_ready | degraded with a per-dimension breakdown, so the agent knows what to fix first.
Connect over MCP
Add @dino-hq/mcp-server to your MCP client with a DINO_API_KEY (a dino_k_live_… tenant key). It runs over stdio and scopes every call to that tenant.
{
"mcpServers": {
"dino": {
"command": "npx",
"args": ["-y", "@dino-hq/mcp-server"],
"env": { "DINO_API_KEY": "dino_k_live_..." }
}
}
}The core loop: run_scan (non-blocking) → poll get_scan_result → get_findings / get_agent_readiness → decide. compare_scans diffs two runs and evaluate_quality_gate checks a configured gate. Read-only tools work for any caller; write and admin tools need an OAuth (owner/admin) login.