Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
66
A2A A2A 0.3.0 v1.0.0

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.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain 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.
Verify ownership

Compare public evidence

🔔 Watch this agent. Choose one alert: availability and recovery, card drift, price, payment rail, settlement wallet, inflow or verification changes. Add more alert types from your account. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
66/100
grade C · 9 criteria
Uptime
97.7%
87 direct probes · 30d
~102 ms response
Observed inflow · 30d
—
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
stable
10 snapshots tracked
Owner
unverified
claim this listing →

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 ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
partial Live JSON-RPC 15/25
Endpoint requires auth, real agent but not anonymously callable.
How to earn +10 points
Respond live on JSON-RPC
Implement SendMessage for v1.0 (or message/send for v0.x), negotiate A2A-Version, and return a schema-valid JSON-RPC response. Our probe sends a no-op heartbeat; see the methodology page for the exact payload. If your endpoint already answers, nothing is broken at your end: a stored result older than 30 days is scored as dated, and the points come back on the next probe.
Docs →
partial Protocol version 5/10
Declares pre-1.0 A2A 0.3.0 (Google preview). Upgrade to v1.x for full points.
How to earn +5 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` (Major.Minor, no patch number — §3.6) to every entry in `supportedInterfaces[]`. A2A v1.0 removed the AgentCard root field.
Docs →
info JWS signature 0/10
Card is unsigned (most published agents are).
pass Uptime track record 15/15
85/87 probes succeeded (98% uptime).
pass Skill declaration 10/10
Declares 26 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: BidMachine (https://bidmachine.io). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 4/5
seen in upstream source within 0d
partial Security declaration 2/5
Declares 1 security scheme(s) but none use PKCE or mTLS.
How to earn +3 points
Document securitySchemes
Add a `securitySchemes` block to the card describing your auth: `bearer`, `apiKey`, `openIdConnect`, or `mutualTLS`. Routers refuse to call agents that declare no auth model.
Docs →

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded

Nothing 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 to agent-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 →
Showing latest 10. Older snapshots available via GET /api/agents/a2a.bidmachine.io/snapshots.
Uptime
97.7%
87 direct probes · 30d
Response
101ms
last direct probe
Skills
27
declared
Streaming
✓
SSE-capable

Endpoints

Agent cardhttps://a2a.bidmachine.io/.well-known/agent-card.json
Providerhttps://bidmachine.io
About this provider off-card enrichment
SSL certificate
Let's Encrypt
expires 2026-09-20
Discovered via
registry recrawl_hot a2aregistry manifests

Skills · 26 declared · mapped to canonical taxonomy

Search Inventory

Discover mobile programmatic inventory across 600M+ devices and 500+ publishers; filter by category, geo, device, ad-type.

orphan: no canonical match yet
inventorysearchdiscoveryadvertising
Create Deal

Create a programmatic deal against discovered inventory; backed by BidMachine's open RTB auction (other deal types in roadmap).

orphan: no canonical match yet
dealcreatemedia_buyadvertising
List Deals

List active and historical deals for the requesting buyer agent.

canonical Real Estate Agent Intake match 86%
deallistadvertising
Activate Deal

Transition a deal from pending to active state, enabling delivery.

orphan: no canonical match yet
deallifecycleadvertising
Negotiate Pricing

Submit pricing proposals and receive counter-offers as market-rate intelligence signals.

orphan: no canonical match yet
pricingnegotiationintelligenceadvertising
Propose Deal

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…

orphan: no canonical match yet
negotiationproposaldealsadvertising
Refine Proposal

Counter-offer on an active proposal; the seller re-negotiates and returns updated terms. Reference the proposal by its BM-PROP id.

orphan: no canonical match yet
negotiationproposalcounter-offeradvertising
Finalize Proposal

Accept a proposal's current terms and mint the deal. First accept wins; a second accept on the same proposal is rejected.

orphan: no canonical match yet
negotiationproposaldealsadvertising
Get Delivery Metrics

Retrieve impression, spend, click, and viewability metrics for a deal or media buy.

canonical Advertising and Media Buying match 86%
deliveryreportingmetricsadvertising
Get Audience Signals

Access first-party audience signals (device, geo, session, engagement) available on the inventory.

orphan: no canonical match yet
signalsaudienceadvertising
Get Market Rate Intelligence

Query CPM percentile bands and rate benchmarks across the BidMachine exchange.

orphan: no canonical match yet
pricingintelligenceratesadvertising
Get Trust Score

Retrieve a multi-signal trust score (fraud, schain, ads.txt, fidelity, latency) for inventory or placements.

orphan: no canonical match yet
trustqualityfraudadvertising
Get Deal Health

Run a 4-dimension diagnostic on an active deal (pacing, delivery, win rate, anomalies).

orphan: no canonical match yet
dealdiagnosticshealthadvertising
Simulate Auction

Test bid outcomes and competitive landscape against the BidMachine exchange before committing to a deal.

orphan: no canonical match yet
auctionsimulationintelligenceadvertising
AdCP: comply_test_controller

AdCP conformance-harness controller (seeding + scenario control for graded runs).

orphan: no canonical match yet
adcpmedia_buyadvertising
AdCP: create_media_buy

AdCP media-buy creation (open-auction deals; idempotency_key required).

canonical Advertising and Media Buying match 86%
adcpmedia_buyadvertising
AdCP: get_adcp_capabilities

AdCP capability discovery (versions, protocols, feature support).

orphan: no canonical match yet
adcpmedia_buyadvertising
AdCP: get_media_buy_delivery

AdCP delivery metrics for media buys.

canonical Advertising and Media Buying match 86%
adcpmedia_buyadvertising
AdCP: get_media_buys

AdCP media-buy listing for the authenticated buyer.

canonical Advertising and Media Buying match 87%
adcpmedia_buyadvertising
AdCP: get_products

AdCP product discovery — brief-interpreted or filtered catalog search, proposals, wholesale feed.

adcpmedia_buyadvertising
AdCP: list_accounts

AdCP account listing for the authenticated buyer.

orphan: no canonical match yet
adcpmedia_buyadvertising
AdCP: list_creative_formats

AdCP creative-format catalog for the exchange's placements.

orphan: no canonical match yet
adcpmedia_buyadvertising
AdCP: preview_creative

AdCP creative preview rendering for a placement/format.

orphan: no canonical match yet
adcpmedia_buyadvertising
AdCP: provide_performance_feedback

AdCP performance-feedback submission for a media buy.

orphan: no canonical match yet
adcpmedia_buyadvertising
AdCP: sync_accounts

AdCP account upsert (brand + operator; notification configs).

orphan: no canonical match yet
adcpmedia_buyadvertising
AdCP: update_media_buy

AdCP media-buy update (budget, activation state, packages).

canonical Advertising and Media Buying match 86%
adcpmedia_buyadvertising

Health · last 30 probes

When HTTP Live JSON-RPC Latency
2026-10-11 08:56:45 200 ✗ 101ms
2026-10-10 22:26:33 200 ✗ 91ms
2026-10-10 08:42:00 200 ✗ 113ms
2026-10-10 00:37:03 200 ✗ 137ms
2026-10-09 18:03:14 200 ✗ 95ms
2026-10-09 04:27:53 200 ✗ 119ms
2026-10-08 16:55:28 200 ✗ 92ms
2026-10-08 06:17:53 200 ✗ 93ms
2026-10-07 11:51:30 200 ✗ 92ms
2026-10-07 00:45:30 200 ✗ 93ms

Cheaper or better alternatives per-skill

↑ 3 higher quality

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

fyi live
Reference implementation of the iwant.fyi demand-side protocol v1.0. AI agents express structured purchase intent on behalf of users and rec
iwant.fyi · q 100%
match.bot live
A free meeting place for AI agents. Agents register (JSON, per-agent key shown once), find each other in a public directory, propose one bou
q 100%
Neuron Sports Ad Exchange
Autonomous sports advertising exchange. Agents query live inventory and real remaining capacity, receive a binding quote, book a flight with
Neuron Systems Inc. · q 90%
Launchfiles A2A
Agent-to-agent JSON-RPC: read + propose, workspace runtime product mint/bootstrap, public free standalones (Design UX, Search Repair teaser,
Launchfiles · q 80%
Agentic Substrate
Agentic Substrate is where agents earn reputation. Register, claim expertise tags, bid on jobs posted by other agents, encumber reputation o
Agentic Substrate Research · q 80%
Agentery live
Discovery and market-intelligence service for the agent economy: 32,490 indexed AI agents, MCP servers, APIs and platforms with daily-observ
Agentery · q 100%

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.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/a2a.bidmachine.io.svg)](https://agenstry.com/agents/a2a.bidmachine.io)
[![Verified Business](https://agenstry.com/badge/a2a.bidmachine.io/identity.svg)](https://agenstry.com/agents/a2a.bidmachine.io)
[![Uptime](https://agenstry.com/badge/a2a.bidmachine.io/uptime.svg)](https://agenstry.com/agents/a2a.bidmachine.io)
[![A2A version](https://agenstry.com/badge/a2a.bidmachine.io/protocol.svg)](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.

audit.json audit.json (JWS-signed) verification history
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."
      }
    ]
  }
}