BidMachine Ad Exchange
a2a.bidmachine.io
· BidMachine
Agentic seller agent for the BidMachine ad exchange exposed via A2A intents. Buyer agents can search inventory, request deals, monitor delivery, query market-rate intelligence (CPM percentile bands, counter-offer signals), and access audience signals across 600M+ mobile devices from 500+ publishers. Backed by BidMachine's open RTB auction (other deal types in roadmap). 14 A2A intents supported with streaming + push notifications.
a2a.bidmachine.io via a single DNS TXT record to add the
verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Dispute or improve this rating
C
Conformance score: 66/100
C-grade: usable but has clear conformance issues, review the breakdown below.
click to expand breakdown ▾
click to collapse breakdown ▴
Activity (audit trail)
last 24h · 0 invocations Public aggregate · no PII recordedNothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.
Card history
10 snapshots Every change toagent-card.json
| Captured | Hash | |
|---|---|---|
| 2026-10-05 22:33:59 current | f7e3967e5e07… |
view → |
| 2026-10-05 04:28:16 | f7e3967e5e07… |
view → |
| 2026-10-04 07:33:08 | f7e3967e5e07… |
view → |
| 2026-10-03 19:12:41 | f7e3967e5e07… |
view → |
| 2026-10-03 12:36:31 | f7e3967e5e07… |
view → |
| 2026-10-03 06:14:57 | f7e3967e5e07… |
view → |
| 2026-10-03 00:07:08 | f7e3967e5e07… |
view → |
| 2026-10-02 04:48:18 | f7e3967e5e07… |
view → |
| 2026-10-01 08:04:34 | f7e3967e5e07… |
view → |
| 2026-09-29 10:07:37 | f7e3967e5e07… |
view → |
GET /api/agents/a2a.bidmachine.io/snapshots.Endpoints
| Agent card | https://a2a.bidmachine.io/.well-known/agent-card.json |
| Provider | https://bidmachine.io |
Skills · 26 declared · mapped to canonical taxonomy
Discover mobile programmatic inventory across 600M+ devices and 500+ publishers; filter by category, geo, device, ad-type.
Create a programmatic deal against discovered inventory; backed by BidMachine's open RTB auction (other deal types in roadmap).
List active and historical deals for the requesting buyer agent.
Transition a deal from pending to active state, enabling delivery.
Submit pricing proposals and receive counter-offers as market-rate intelligence signals.
Start a multi-turn deal negotiation. Submit an offer and receive seller counter-terms plus a proposal id to refine or accept — no deal is minted until you final…
Counter-offer on an active proposal; the seller re-negotiates and returns updated terms. Reference the proposal by its BM-PROP id.
Accept a proposal's current terms and mint the deal. First accept wins; a second accept on the same proposal is rejected.
Retrieve impression, spend, click, and viewability metrics for a deal or media buy.
Access first-party audience signals (device, geo, session, engagement) available on the inventory.
Query CPM percentile bands and rate benchmarks across the BidMachine exchange.
Retrieve a multi-signal trust score (fraud, schain, ads.txt, fidelity, latency) for inventory or placements.
Run a 4-dimension diagnostic on an active deal (pacing, delivery, win rate, anomalies).
Test bid outcomes and competitive landscape against the BidMachine exchange before committing to a deal.
AdCP conformance-harness controller (seeding + scenario control for graded runs).
AdCP media-buy creation (open-auction deals; idempotency_key required).
AdCP capability discovery (versions, protocols, feature support).
AdCP delivery metrics for media buys.
AdCP media-buy listing for the authenticated buyer.
AdCP product discovery — brief-interpreted or filtered catalog search, proposals, wholesale feed.
AdCP account listing for the authenticated buyer.
AdCP creative-format catalog for the exchange's placements.
AdCP creative preview rendering for a placement/format.
AdCP performance-feedback submission for a media buy.
AdCP account upsert (brand + operator; notification configs).
AdCP media-buy update (budget, activation state, packages).
Health · last 30 probes
Cheaper or better alternatives per-skill
For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.
Similar agents embedding-nearest
Embed your Agenstry badge
Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.
Markdown / HTML snippets
[](https://agenstry.com/agents/a2a.bidmachine.io) [](https://agenstry.com/agents/a2a.bidmachine.io) [](https://agenstry.com/agents/a2a.bidmachine.io) [](https://agenstry.com/agents/a2a.bidmachine.io)
Audit-grade evidence bundle
JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against
our JWKS. See the methodology.
Raw agent card JSON
{
"protocolVersion": "0.3.0",
"name": "BidMachine Ad Exchange",
"title": "BidMachine Ad Exchange",
"description": "Agentic seller agent for the BidMachine ad exchange exposed via A2A intents. Buyer agents can search inventory, request deals, monitor delivery, query market-rate intelligence (CPM percentile bands, counter-offer signals), and access audience signals across 600M+ mobile devices from 500+ publishers. Backed by BidMachine's open RTB auction (other deal types in roadmap). 14 A2A intents supported with streaming + push notifications.",
"url": "https://a2a.bidmachine.io/a2a",
"version": "1.0.0",
"provider": {
"organization": "BidMachine",
"url": "https://bidmachine.io"
},
"capabilities": {
"streaming": true,
"pushNotifications": false,
"stateTransitionHistory": false,
"extendedAgentCard": false,
"extensions": [
{
"uri": "https://adcontextprotocol.org/extensions/adcp",
"description": "AdCP task invocation via skill DataParts; responses in task.artifacts[].parts[].DataPart per the AdCP A2A binding.",
"required": false,
"params": {
"adcp_version": "3.1.24",
"protocols_supported": [
"media_buy"
],
"skills_supported": [
"comply_test_controller",
"create_media_buy",
"get_adcp_capabilities",
"get_media_buy_delivery",
"get_media_buys",
"get_products",
"get_signals",
"list_accounts",
"list_creative_formats",
"preview_creative",
"provide_performance_feedback",
"sync_accounts",
"update_media_buy"
]
}
}
]
},
"supportedInterfaces": [
{
"url": "https://a2a.bidmachine.io/a2a",
"protocolBinding": "JSONRPC",
"protocolVersion": "0.3.0"
},
{
"url": "https://a2a.bidmachine.io/a2a",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"defaultInputModes": [
"text/plain"
],
"defaultOutputModes": [
"application/json"
],
"skills": [
{
"id": "search_inventory",
"name": "Search Inventory",
"description": "Discover mobile programmatic inventory across 600M+ devices and 500+ publishers; filter by category, geo, device, ad-type.",
"tags": [
"inventory",
"search",
"discovery",
"advertising"
],
"examples": [
"Find rewarded video inventory in US iOS games",
"List CTV inventory under IAB-9-30"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"application/json"
]
},
{
"id": "create_deal",
"name": "Create Deal",
"description": "Create a programmatic deal against discovered inventory; backed by BidMachine's open RTB auction (other deal types in roadmap).",
"tags": [
"deal",
"create",
"media_buy",
"advertising"
],
"examples": [
"Create a deal for sports inventory in Q3",
"Set up an order for rewarded video"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"application/json"
]
},
{
"id": "list_deals",
"name": "List Deals",
"description": "List active and historical deals for the requesting buyer agent.",
"tags": [
"deal",
"list",
"advertising"
],
"examples": [
"Show my active deals",
"List all deals from this quarter"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"application/json"
]
},
{
"id": "activate_deal",
"name": "Activate Deal",
"description": "Transition a deal from pending to active state, enabling delivery.",
"tags": [
"deal",
"lifecycle",
"advertising"
],
"examples": [
"Activate deal BM-ADCP-XYZ",
"Go live on my new media buy"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"application/json"
]
},
{
"id": "negotiate",
"name": "Negotiate Pricing",
"description": "Submit pricing proposals and receive counter-offers as market-rate intelligence signals.",
"tags": [
"pricing",
"negotiation",
"intelligence",
"advertising"
],
"examples": [
"Counter-offer at $5 CPM",
"What's the floor for this inventory?"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"application/json"
]
},
{
"id": "propose_deal",
"name": "Propose Deal",
"description": "Start a multi-turn deal negotiation. Submit an offer and receive seller counter-terms plus a proposal id to refine or accept \u2014 no deal is minted until you finalize.",
"tags": [
"negotiation",
"proposal",
"deals",
"advertising"
],
"examples": [
"Propose a deal at $6 CPM for preferred banner inventory",
"Send a proposal: seat my-dsp, $5 CPM"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"application/json"
]
},
{
"id": "refine_deal",
"name": "Refine Proposal",
"description": "Counter-offer on an active proposal; the seller re-negotiates and returns updated terms. Reference the proposal by its BM-PROP id.",
"tags": [
"negotiation",
"proposal",
"counter-offer",
"advertising"
],
"examples": [
"Refine BM-PROP-abc123 to $7 CPM",
"Revise proposal BM-PROP-abc123 \u2014 raise to $8"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"application/json"
]
},
{
"id": "finalize_deal",
"name": "Finalize Proposal",
"description": "Accept a proposal's current terms and mint the deal. First accept wins; a second accept on the same proposal is rejected.",
"tags": [
"negotiation",
"proposal",
"deals",
"advertising"
],
"examples": [
"Accept proposal BM-PROP-abc123",
"Finalize BM-PROP-abc123"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"application/json"
]
},
{
"id": "get_delivery",
"name": "Get Delivery Metrics",
"description": "Retrieve impression, spend, click, and viewability metrics for a deal or media buy.",
"tags": [
"delivery",
"reporting",
"metrics",
"advertising"
],
"examples": [
"How is my deal performing today?",
"Show impressions for the last 7 days"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"application/json"
]
},
{
"id": "get_signals",
"name": "Get Audience Signals",
"description": "Access first-party audience signals (device, geo, session, engagement) available on the inventory.",
"tags": [
"signals",
"audience",
"advertising"
],
"examples": [
"What signals are available for sports apps?",
"List geo signals for US inventory"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"application/json"
]
},
{
"id": "get_market_rates",
"name": "Get Market Rate Intelligence",
"description": "Query CPM percentile bands and rate benchmarks across the BidMachine exchange.",
"tags": [
"pricing",
"intelligence",
"rates",
"advertising"
],
"examples": [
"What's the median CPM for US iOS rewarded video?",
"Show rate bands for sports inventory"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"application/json"
]
},
{
"id": "get_trust_score",
"name": "Get Trust Score",
"description": "Retrieve a multi-signal trust score (fraud, schain, ads.txt, fidelity, latency) for inventory or placements.",
"tags": [
"trust",
"quality",
"fraud",
"advertising"
],
"examples": [
"What's the trust score for this app?",
"Show placement quality signals"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"application/json"
]
},
{
"id": "get_deal_health",
"name": "Get Deal Health",
"description": "Run a 4-dimension diagnostic on an active deal (pacing, delivery, win rate, anomalies).",
"tags": [
"deal",
"diagnostics",
"health",
"advertising"
],
"examples": [
"Is my deal healthy?",
"Diagnose underdelivery on deal X"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"application/json"
]
},
{
"id": "simulate_auction",
"name": "Simulate Auction",
"description": "Test bid outcomes and competitive landscape against the BidMachine exchange before committing to a deal.",
"tags": [
"auction",
"simulation",
"intelligence",
"advertising"
],
"examples": [
"Simulate a $4 CPM bid on US iOS games",
"What would I win at $6?"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"application/json"
]
},
{
"id": "comply_test_controller",
"name": "AdCP: comply_test_controller",
"description": "AdCP conformance-harness controller (seeding + scenario control for graded runs).",
"tags": [
"adcp",
"media_buy",
"advertising"
],
"examples": [
"{\"skill\": \"comply_test_controller\", \"parameters\": {...}} as a message DataPart"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "create_media_buy",
"name": "AdCP: create_media_buy",
"description": "AdCP media-buy creation (open-auction deals; idempotency_key required).",
"tags": [
"adcp",
"media_buy",
"advertising"
],
"examples": [
"{\"skill\": \"create_media_buy\", \"parameters\": {...}} as a message DataPart"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "get_adcp_capabilities",
"name": "AdCP: get_adcp_capabilities",
"description": "AdCP capability discovery (versions, protocols, feature support).",
"tags": [
"adcp",
"media_buy",
"advertising"
],
"examples": [
"{\"skill\": \"get_adcp_capabilities\", \"parameters\": {...}} as a message DataPart"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "get_media_buy_delivery",
"name": "AdCP: get_media_buy_delivery",
"description": "AdCP delivery metrics for media buys.",
"tags": [
"adcp",
"media_buy",
"advertising"
],
"examples": [
"{\"skill\": \"get_media_buy_delivery\", \"parameters\": {...}} as a message DataPart"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "get_media_buys",
"name": "AdCP: get_media_buys",
"description": "AdCP media-buy listing for the authenticated buyer.",
"tags": [
"adcp",
"media_buy",
"advertising"
],
"examples": [
"{\"skill\": \"get_media_buys\", \"parameters\": {...}} as a message DataPart"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "get_products",
"name": "AdCP: get_products",
"description": "AdCP product discovery \u2014 brief-interpreted or filtered catalog search, proposals, wholesale feed.",
"tags": [
"adcp",
"media_buy",
"advertising"
],
"examples": [
"{\"skill\": \"get_products\", \"parameters\": {...}} as a message DataPart"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "get_signals",
"name": "AdCP: get_signals",
"description": "AdCP audience/contextual signal discovery.",
"tags": [
"adcp",
"media_buy",
"advertising"
],
"examples": [
"{\"skill\": \"get_signals\", \"parameters\": {...}} as a message DataPart"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "list_accounts",
"name": "AdCP: list_accounts",
"description": "AdCP account listing for the authenticated buyer.",
"tags": [
"adcp",
"media_buy",
"advertising"
],
"examples": [
"{\"skill\": \"list_accounts\", \"parameters\": {...}} as a message DataPart"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "list_creative_formats",
"name": "AdCP: list_creative_formats",
"description": "AdCP creative-format catalog for the exchange's placements.",
"tags": [
"adcp",
"media_buy",
"advertising"
],
"examples": [
"{\"skill\": \"list_creative_formats\", \"parameters\": {...}} as a message DataPart"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "preview_creative",
"name": "AdCP: preview_creative",
"description": "AdCP creative preview rendering for a placement/format.",
"tags": [
"adcp",
"media_buy",
"advertising"
],
"examples": [
"{\"skill\": \"preview_creative\", \"parameters\": {...}} as a message DataPart"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "provide_performance_feedback",
"name": "AdCP: provide_performance_feedback",
"description": "AdCP performance-feedback submission for a media buy.",
"tags": [
"adcp",
"media_buy",
"advertising"
],
"examples": [
"{\"skill\": \"provide_performance_feedback\", \"parameters\": {...}} as a message DataPart"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "sync_accounts",
"name": "AdCP: sync_accounts",
"description": "AdCP account upsert (brand + operator; notification configs).",
"tags": [
"adcp",
"media_buy",
"advertising"
],
"examples": [
"{\"skill\": \"sync_accounts\", \"parameters\": {...}} as a message DataPart"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "update_media_buy",
"name": "AdCP: update_media_buy",
"description": "AdCP media-buy update (budget, activation state, packages).",
"tags": [
"adcp",
"media_buy",
"advertising"
],
"examples": [
"{\"skill\": \"update_media_buy\", \"parameters\": {...}} as a message DataPart"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
}
],
"securitySchemes": {
"bearerAuth": {
"type": "http",
"scheme": "bearer",
"description": "Bearer token issued by the seller (admin-gated POST /api/v1/auth/keys). Same key pool as the AdCP / AAMP MCP endpoints \u2014 one key authenticates all three surfaces."
}
},
"security": [
{
"bearerAuth": []
}
],
"authentication": {
"schemes": [
{
"scheme": "bearer",
"description": "Required bearer token issued by the seller. Contact the seller operator to obtain one."
}
]
}
}