This module exposes Prebid.js runtime state as Chrome DevTools third-party developer tools. An agent driving Chrome, for example through chrome-devtools-mcp, can then inspect a page’s live Prebid state: auctions, bid eligibility, TTL and cache expiry, floors, event timing, installed modules and configuration.
The tools are registered in a group named Prebid.js DevTools. They are read-only: they report on Prebid state and never modify it.
Publishers usually do not need to build or install anything.
?pbjs_debug=true in the page URL or with pbjs.setConfig({debug: true}). The first time debug mode is on, if the module is not compiled into the build, Prebid loads devtoolsMcp-standalone.js from the dist URL base. This works the same way as the on-demand loading of the Debugging module.gulp build --modules=devtoolsMcp
The dist URL base defaults to https://cdn.jsdelivr.net/npm/prebid.js@<version>/dist/chunks/. It can be changed at build time with --distUrlBase. If your site uses a Content Security Policy and you want the on-demand path to work in debug mode, allow scripts from that location.
Chrome third-party developer tools are experimental. While that remains the case:
--categoryExperimentalThirdParty=true. Without it, the server does not expose the list_3p_developer_tools and execute_3p_developer_tool tools, and page-provided tools are invisible.Example MCP client configuration:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest",
"--categoryExperimentalThirdParty=true"
]
}
}
}
Then open a page running Prebid with debug mode on and ask questions such as:
<auctionId>, in order.”If the agent cannot find the Prebid tools, check that debug mode is on, that the MCP server was started with --categoryExperimentalThirdParty=true, and that the request for devtoolsMcp-standalone.js did not fail in the network panel.
The Prebid.js repository includes agent skills that build on these tools:
Every tool accepts an optional instance parameter that restricts results to one Prebid instance, and every result is tagged with an instance field.
| Tool | Parameters | Returns |
|---|---|---|
summary |
instance |
One summary per Prebid instance: version, installed modules, config snapshot, counts (auctions, events, ad units, bid requests, bids received, no-bids, winning bids), per-bidder bid/no-bid/win counts, and the latest auction. |
auctions |
instance, auctionId |
Auction-level detail: status and timing, ad unit codes, eligible bid requests, received bids (CPM, currency, media type, TTL and cache expiry, floors, targeting usability, rejection reason, metrics), no-bids, rejected bids, winning bids and seat non-bids. All tracked auctions are returned unless auctionId is given. |
events |
instance, auctionId, eventType, limit |
Prebid event history in chronological order, with event type, timing and arguments. eventType filters by event name, such as auctionInit, bidResponse or bidWon. limit (default 100) returns the most recent records across all selected instances; 0 returns no records. |
Results are sanitized before they are returned, so function values and non-serializable objects do not break tool execution. Returned config, bid and event data may still be sensitive.
One set of tools is registered no matter how many Prebid instances are on the page. The instance value is the instance’s global variable name, or unnamed-<n> when the build defines no global. Results are combined across all instances unless an instance filter is passed.