← Building
Standards contribution · AdCP Signals & Measurement WG

AdCP Signals
Adaptor.

Reference implementation for the AdCP Signals & Measurement working group.

AAO Verified Signals Agent 3.1 (Spec) Verified in the AAO agent registry ↗

Running this agent feeds work back upstream — see the protocol contributions (merged schema fields, conformance-suite fixes, open RFCs).

  • Status Production · live demo
  • License MIT — open source
  • Spec AdCP 3.1 GA · graded on 3.1.20
  • Runtime Cloudflare Workers
  • Role Reference seller implementation
  • Author Founding member · AdCP S&M WG
01 Why this matters

The fragmentation tax
finally has a settlement.

For two decades the ad-tech industry has lived with a fragmentation tax — OpenRTB for bidding, AdCOM for creative, GPP for privacy, OpenDirect for guaranteed buys. Each one a real standard. Each one its own island. Each one requiring custom bridges. As AI buyer agents enter the stack, the bridges become the bottleneck.

The Ad Context Protocol (AdCP) is the open standard designed to reduce that tax. Built on top of Anthropic's Model Context Protocol, it gives AI agents a single, secure way to discover and transact with advertising platforms — audience activation, curation, and media buy. One spec, many platforms.

The signals adaptor is the reference seller-side implementation of the protocol's data provider role. It serves AdCP spec 3.1 (additive over 3.0, so a 3.0 integration keeps working untouched), is graded on the current 3.1.20 compliance line, signs its outbound webhooks under RFC 9421, ships as MIT-licensed code, and runs as a live demo other adopters can probe.

One spec, many platforms.
The bridges were the bottleneck.

AdCP design thesis

02 What it ships

A production worker.
The full provider surface.

A production Cloudflare Worker that implements the full AdCP signals provider surface — eleven MCP tools, every payload schema-validated against a vendored copy of the AdCP corpus, spec-version and signing-key smoke tests on every deploy, the official storyboard suite run before merges, and the AAO hosted grader every 12 hours.

  • get_signals

    Signal discovery

    Discover signals across 14 verticals and 5 signal types — exposed to any AdCP-enabled buyer agent.

  • activate_signal

    Signal activation

    Turn a discovered signal into bookable inventory inside the seller catalog.

  • query_signals_nl

    Natural-language query

    Translate buyer intent into a structured signal lookup — no agent prompt-engineering required.

  • get_similar_signals

    Similar-signal expansion

    Widen a signal to its nearest neighbours in the embedding space — more reach without a new brief.

  • get_concept · search_concepts

    Concept graph

    The UCP concept layer under the signals — look a concept up or search it; the same vocabulary the NL query resolves into.

  • get_operation_status · get_task_status · list_tasks

    Async task tracking

    Every submitted activation or async lookup is a task with a status — poll one, or list the operator's open tasks.

  • comply_test_controller

    Deterministic test controller

    Sandbox-only forcing of async arms and task completion, so a conformance runner can grade the async paths on demand.

  • /.well-known/adagents.json

    Discovery endpoint

    Publisher-discovery endpoint per AdCP convention — buyer agents find the provider by URL pattern.

  • X-AdCP-Spec-Version

    Spec versioning

    Well-known responses carry the vendored corpus patch the build validates against (3.1.20, in lockstep with the storyboard line the hosted grader runs); the wire pin is 3.1.

Architecture

Input. Process. Output.

A buyer-side agent issues an MCP request; the worker validates against the spec corpus, looks up signals, translates between MCP and AdCP, and ships a spec-compliant response back to the seller catalog.

AdCP Signals Adaptor — buyer agent to seller catalog A buyer-side agent issues an MCP request which flows through the Cloudflare Worker adaptor (parser, schema validation against vendored AdCP corpus, signal lookup against D1 + KV, protocol translation between MCP and AdCP, response formatter) and out as a spec-compliant AdCP response to the seller catalog. BUYER AGENT → SIGNAL PROVIDER BUYER-SIDE AI Agent MCP-capable MCP CLOUDFLARE WORKER ADAPTOR spec-conformant. Request parser MCP → internal call Schema validation vendored AdCP corpus Signal lookup D1 catalog + KV cache Protocol translation MCP ↔ AdCP 3.1.20 Response formatter idempotency-key safe AdCP SELLER Signal catalog SUPPORTING INFRA GitHub Actions auto-deploy Conformance storyboard tests Discovery JSON /.well-known Smoke tests per push
03 Stack

Built for the edge.

Runtime Cloudflare Workers · TypeScript · wrangler
Storage D1 (SQLite) · KV namespace
Protocol MCP (Anthropic) · AdCP 3.1 · OpenRTB hooks
Webhooks RFC 9421 signed (Ed25519) · public key at /.well-known/jwks.json
CI / CD GitHub Actions · auto-deploy · spec-version smoke tests
Schemas Vendored AdCP corpus (v3.1.20) · sha256-checked release tarball
License MIT
04 Industry context

A founding member's
contribution.

AdCP is a project of AgenticAdvertising.org, a neutral consortium advancing open standards for AI-powered advertising. Founding members include Optable, PubMatic, Scope3, Swivel, and Triton Digital, with a supporting roster of AccuWeather, Butler/Till, Classify, Raptive, The Weather Company, Newton Research, Bidcliq, and Samba TV.

I serve as a founding member and co-lead the Signals & Measurement working group (alongside Triton Digital's Spencer Morris). The signals adaptor is one of the reference seller implementations the working group uses to anchor protocol decisions.

The open question in front of the working group now is dimensional. Today’s signal types carry two dimensions of a moment — who and what. The where and the when have no native signal in the stack, and the embeddings that encode them (Google’s PDFM on the spatial axis; hour-of-week as the newer frontier) live in a different geometry from the text embeddings the current signals ride on. Similarity across two geometries is undefined until a spec defines it — which makes bridging them a standards question, not an integration. The Context Economy lays out the argument.

It's also registered on the public agent registry at agenticadvertising.org as a No Fluff Advisory signals provider.

Talk standards

Integrating AdCP?
Building a provider?
Want to contribute?

Get in touch →