Skip to main content
Glama

validate_bid_request

Read-onlyIdempotent

Validate an OpenRTB 2.x bid request JSON payload against a tracked spec version. Returns structured issues with rule ids, severities, and JSON paths.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "payload": "<payload>"
    },
    "name": "validate_bid_request"
  }
}

Input Schema

NameRequiredDescriptionDefault
dialectNoJSON dialect the payload is written in. spec-json (default) types flag fields such as imp.secure, regs.coppa and pmp.private_auction as integers, the way the OpenRTB specification does. proto-json follows the IAB OpenRTB protobuf schema, which declares 28 of those fields bool, so true/false is correct there and an integer is the error. Use proto-json for anything that came off a gRPC bidstream integration.
payloadYesThe OpenRTB bid request as a raw JSON string.
profileNoPublished vendor constraints on top of the selected spec. Choose the matching traffic direction. spec is the default. xandr targets Microsoft Monetize bidder traffic; magnite targets DV+ xAPI. Buyer, supplier and SDK profiles have distinct contracts. Optional extension fields remain optional unless the source explicitly requires them. A direction without a verified contract applies canonical checks and returns a scope warning.
versionNoOpenRTB version id to validate against (default 2.6-202606). One of: 2.0, 2.1, 2.2, 2.3, 2.3.1, 2.4, 2.5, 2.6-202204, 2.6-202210, 2.6-202211, 2.6-202303, 2.6-202309, 2.6-202402, 2.6-202409, 2.6-202501, 2.6-202505, 2.6-202606, 3.0
sample_kindNoLabel test-generated payloads as synthetic in validation telemetry.

Output Schema

NameRequiredDescriptionDefault
validYesTrue when the payload has zero spec errors.
issuesYes
dialectNo
profileNo
versionYes
payload_typeYes
cross_validatedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / sample_kind
      Added value: +{
      +  "description": "Label test-generated payloads as synthetic in validation telemetry.",
      +  "enum": [
      +    "submitted",
      +    "synthetic"
      +  ],
      +  "type": "string"
      +}
  2. Changed3 schema fields changed
    • changedInput schema / properties / profile / description
      Previous value: -"Exchange profile applied on top of the spec. spec (default) is the specification only. google-ab is Google Authorized Buyers OpenRTB: at=3 (FIXED_PRICE) is a valid auction type, and each Imp must carry ext.billing_id. prebid-server is Prebid Server /openrtb2/auction: each Imp must name a bidder or stored request, and wseat/bseat are refused. xandr is Microsoft Monetize outgoing requests: ext.appnexus.seller_member_id and video.ext.appnexus.context. magnite is Magnite xAPI identity fields: imp.ext.rp.zone_id, site/app ext.rp.site_id, publisher.ext.rp.account_id."New value: +"Published vendor constraints on top of the selected spec. Choose the matching traffic direction. spec is the default. xandr targets Microsoft Monetize bidder traffic; magnite targets DV+ xAPI. Buyer, supplier and SDK profiles have distinct contracts. Optional extension fields remain optional unless the source explicitly requires them. A direction without a verified contract applies canonical checks and returns a scope warning."
    • changedInput schema / properties / profile / enum
      Previous value: -[
      -  "spec",
      -  "google-ab",
      -  "prebid-server",
      -  "xandr",
      -  "magnite"
      -]New value: +[
      +  "spec",
      +  "google-ab",
      +  "prebid-server",
      +  "xandr",
      +  "magnite",
      +  "dv360",
      +  "index-exchange",
      +  "index-exchange-seller",
      +  "unity",
      +  "vungle",
      +  "bidswitch",
      +  "bidswitch-supplier",
      +  "inmobi",
      +  "inmobi-supplier",
      +  "mobilefuse",
      +  "mobilefuse-sdk",
      +  "applovin-alx",
      +  "commerce-grid",
      +  "digital-turbine",
      +  "sovrn",
      +  "equativ",
      +  "equativ-supplier",
      +  "triplelift-supplier",
      +  "adform-handler",
      +  "yandex-sdk-bidding",
      +  "pubmatic-openwrap",
      +  "pubmatic-openwrap-ctv"
      +]
    • changedOutput schema / properties / profile / enum
      Previous value: -[
      -  "spec",
      -  "google-ab",
      -  "prebid-server",
      -  "xandr",
      -  "magnite"
      -]New value: +[
      +  "spec",
      +  "google-ab",
      +  "prebid-server",
      +  "xandr",
      +  "magnite",
      +  "dv360",
      +  "index-exchange",
      +  "index-exchange-seller",
      +  "unity",
      +  "vungle",
      +  "bidswitch",
      +  "bidswitch-supplier",
      +  "inmobi",
      +  "inmobi-supplier",
      +  "mobilefuse",
      +  "mobilefuse-sdk",
      +  "applovin-alx",
      +  "commerce-grid",
      +  "digital-turbine",
      +  "sovrn",
      +  "equativ",
      +  "equativ-supplier",
      +  "triplelift-supplier",
      +  "adform-handler",
      +  "yandex-sdk-bidding",
      +  "pubmatic-openwrap",
      +  "pubmatic-openwrap-ctv"
      +]
  3. Changed3 schema fields changed
    • changedInput schema / properties / profile / description
      Previous value: -"Exchange profile applied on top of the spec. spec (default) is the specification only. google-ab is Google Authorized Buyers OpenRTB: at=3 (FIXED_PRICE) is a valid auction type, and each Imp must carry ext.billing_id. prebid-server is Prebid Server /openrtb2/auction: each Imp must name a bidder or stored request, and wseat/bseat are refused."New value: +"Exchange profile applied on top of the spec. spec (default) is the specification only. google-ab is Google Authorized Buyers OpenRTB: at=3 (FIXED_PRICE) is a valid auction type, and each Imp must carry ext.billing_id. prebid-server is Prebid Server /openrtb2/auction: each Imp must name a bidder or stored request, and wseat/bseat are refused. xandr is Microsoft Monetize outgoing requests: ext.appnexus.seller_member_id and video.ext.appnexus.context. magnite is Magnite xAPI identity fields: imp.ext.rp.zone_id, site/app ext.rp.site_id, publisher.ext.rp.account_id."
    • changedInput schema / properties / profile / enum
      Previous value: -[
      -  "spec",
      -  "google-ab",
      -  "prebid-server"
      -]New value: +[
      +  "spec",
      +  "google-ab",
      +  "prebid-server",
      +  "xandr",
      +  "magnite"
      +]
    • changedOutput schema / properties / profile / enum
      Previous value: -[
      -  "spec",
      -  "google-ab",
      -  "prebid-server"
      -]New value: +[
      +  "spec",
      +  "google-ab",
      +  "prebid-server",
      +  "xandr",
      +  "magnite"
      +]
  4. Changed3 schema fields changed
    • changedInput schema / properties / profile / description
      Previous value: -"Exchange profile applied on top of the spec. spec (default) is the specification only. google-ab is Google Authorized Buyers OpenRTB: at=3 (FIXED_PRICE) is a valid auction type, and each Imp must carry ext.billing_id."New value: +"Exchange profile applied on top of the spec. spec (default) is the specification only. google-ab is Google Authorized Buyers OpenRTB: at=3 (FIXED_PRICE) is a valid auction type, and each Imp must carry ext.billing_id. prebid-server is Prebid Server /openrtb2/auction: each Imp must name a bidder or stored request, and wseat/bseat are refused."
    • changedInput schema / properties / profile / enum
      Previous value: -[
      -  "spec",
      -  "google-ab"
      -]New value: +[
      +  "spec",
      +  "google-ab",
      +  "prebid-server"
      +]
    • changedOutput schema / properties / profile / enum
      Previous value: -[
      -  "spec",
      -  "google-ab"
      -]New value: +[
      +  "spec",
      +  "google-ab",
      +  "prebid-server"
      +]
  5. First observed

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds the return shape (rule ids, severities, JSON paths), but says nothing about whether validation is all-or-nothing, how warnings differ from errors, or what 'tracked spec version' implies operationally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, and the core action is front-loaded before the return-value note. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich 5-parameter schema, full coverage, and an output schema, the description only needs to anchor purpose and it does. The remaining gap is routing between this tool and its validate_* siblings, which the description leaves implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema descriptions are unusually rich — the dialect, profile and version parameters each carry detailed semantics including vendor direction and the scope-warning fallback. The description adds no parameter meaning beyond that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Validate an OpenRTB 2.x bid request JSON payload') plus the scope ('against a tracked spec version'). 'Bid request' distinguishes it from the sibling validate_bid_response, but the description never explicitly names that sibling or the artf validators, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer it should call this when it has an OpenRTB bid request to check. There is no stated when-not condition, no mention of choosing validate_bid_response for responses, and no guidance on picking between this and validate_artf_request.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.