RTBlint
Validates OpenRTB bid requests and bid responses against versioned IAB spec snapshots.
A bid request with a moved field or a stale enum does not throw an error. It just loses the auction, and nobody on either side gets told why.
What it does about it
Catch the malformed payload in CI, against the exact spec revision your partner is running, before it costs a day of integration calls.
Findings are structured, not prose. Every one carries a stable rule id you can suppress, track, or cite in a ticket, a severity, the exact location in the payload, and guidance on the fix. The same verdict comes back whether you called the CLI, the library, the browser build, or the MCP server.
Preprint, ResearchGate, July 2026. 417 normative sentences extracted from OpenRTB 2.6-202606 and 3.0, screened to 288 conformance statements and hand-coded into four enforceability classes.
Coverage
- Coverage. OpenRTB 2.0, 2.1, 2.2, 2.3, 2.3.1, 2.4, 2.5, and eight dated 2.6 snapshots
- Checks. Malformed JSON, missing required fields, unknown and deprecated fields, moved paths, type mismatches, documented enum values
- Version aware. Rules resolve against the snapshot you name, so 2.6-202505 and 2.6-202606 grade differently
- Engine. Rust core, compiled to native, WASM, and a hosted MCP endpoint
Calling it from an agent
RTBlint exposes 3 tools over the Model Context Protocol, hosted over HTTP with no install and no account. See the MCP overview for wiring it into Claude Code, Cursor, or your own agent loop.
Use it without installing anything
RTBlint runs in the browser at rtblint.org, against the same engine as the CLI. No account and no key.
Where it fits
RTBlint grades one crossing in the delivery chain. The other two cover the crossings on either side of it: VASTlint and Pixellint. Same output contract, same license, so a team can adopt one and add the others without relearning anything.