Bid · IAB Tech Labv0.5.0

RTBlint

Validates OpenRTB bid requests and bid responses against versioned IAB spec snapshots.

What actually goes wrong

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.

Published research
How Machine-Checkable Is OpenRTB?: Classifying the Normative Content of the Protocol That Clears Real-Time Advertising

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.

validate_bid_requestvalidate_bid_responselist_openrtb_versions

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.