Skip to main content

A2B: Testing your first agent call

Free module — No account required. ~20 minutes with Addie. Prerequisite: A2.

Learning objectives

  • Call the stateless MCP transport exposed by the AdCP test agent
  • Call get_products with a natural-language brief and read the product response
  • Place a media buy with create_media_buy and handle all three response shapes
  • Attach creatives with sync_creatives and check buy status via get_media_buys
  • Diagnose and resolve auth failures, schema mismatches, and async polling delays

Reading list

AdCP quickstart

End-to-end buyer workflow from setup to delivery.

Media buy lifecycle

Media buy status states — pending_creatives, pending_start, active, paused, completed — and what each means for the buyer.

Create media buy task

Full field reference, required fields, and all three response shapes.

Sync creatives task

How to attach assets to a buy, dry-run validation, and assignment patterns.

Error handling

Error codes, retry behavior, and how to read the errors[] array.

MCP integration guide

MCP transport and tool call formats.

Test agent

All curl examples below target the AdCP training agent:
You’ll need an API key from your AgenticAdvertising.org dashboard. Replace <your-api-key> in every example.

What you’ll do with Addie

Walk through four calls in sequence. Addie demonstrates each call, shows the raw response, then guides you through reproducing it yourself.
  1. Discoverget_products with a brief; read proposals
  2. Buycreate_media_buy; handle all three response shapes
  3. Attach creativessync_creatives; validate with dry-run first
  4. Poll statusget_media_buys until valid_actions shows the buy is serving
The public test agent uses stateless HTTP transport: every request is a direct tools/call, with no initialize exchange or mcp-session-id header. Durable sandbox state is keyed by the authenticated caller and the account reference in each task, not by an MCP transport session. Use the same account object throughout the workflow.

Step-by-step curl reference

Use these as a quick reference while working through the module with Addie, or to reproduce any step independently.

Step 1 — Discover products

Call get_products with buying_mode: "brief" and a plain-English description of your campaign goals. The agent returns curated products[] and ready-to-execute proposals[].
The result is in content[0].text as JSON. Look for proposals[0].proposal_id — you’ll pass it to create_media_buy.

Step 2 — Place a media buy

Pass the proposal_id from Step 1 and a total_budget. The idempotency_key lets you safely retry if the network drops — use a fresh UUID v4 per request.
Three response shapes — you’ll see one of these:

Step 3 — Attach creatives

A buy in pending_creatives state can’t serve until you call sync_creatives. Use dry_run: true first to validate your creative shapes without writing anything.
Remove "dry_run": true to apply. The response includes creatives[].statusapproved, pending_review, or rejected.

Step 4 — Check status

Poll get_media_buys with the media_buy_id from Step 2 to see lifecycle state and valid_actions.
The media_buys[0].status field is one of pending_creatives, pending_start, active, paused, completed, rejected, or canceled. The valid_actions array tells you what the buyer can do next.

Async polling

When create_media_buy returns status: "submitted" and a task_id, the buy is queued. Poll until the task completes:
get_task_status is an AdCP application-layer polling alias exposed by the training agent’s /sales/mcp tenant. The legacy root /mcp alias does not expose it. Other sellers may instead expose the AdCP tasks/get surface; inspect their advertised tools rather than assuming the alias exists. Do not confuse either AdCP polling surface with transport-native MCP/A2A tasks/* methods, which use their own task wire shapes.
Poll every 2–5 seconds. When the AdCP task status is completed, the result field contains the full create_media_buy response with media_buy_id. See the Task lifecycle doc for all AdCP task status values.

Common errors

Assessment

Passing threshold: 70%.

Start this module

Start A2B with Addie

Open Addie and say “I’d like to start certification module A2B.”
Next: A3: The AdCP landscape