Supported tools

The public sales agent exposes three AdCP tools. tools/list returns exactly these three. Any other tool name is answered with UNSUPPORTED_FEATURE (see errors and limits).

ToolStatusNeeds a key?
get_adcp_capabilitiesGANo
list_creative_formatsGANo
get_productsBetaNo, but anonymous calls return zero products

All three are read-only. The agent can’t create or change anything yet, so you can’t place a media buy, sync creatives or check delivery through it.

Every call counts toward your rate limit: 30 per minute per IP address anonymously, or 300 per minute per key.

get_adcp_capabilities

Tells you what the agent supports. It takes no arguments. The response includes:

  • adcp.major_versions: [3] and adcp_version: "3.1".
  • supported_protocols: ["media_buy", "creative"].
  • account.supported_billing: ["operator"] and account.default_billing: "operator". Carbnn invoices whoever places the order. required_for_products is false, so you don’t need to name an account to see products.
  • media_buy.features and creative flags. inline_creative_management and supports_generation are true. Property-list filtering, content standards, conversion tracking, audience targeting, a creative library, creative transformation and creative compliance are all false.

list_creative_formats

Returns the creative formats Carbnn products use: Carbnn’s own global formats plus every format attached to a published product. Anonymous and keyed callers see the same list.

Every format_id that get_products hands out can be looked up here. Format ids are AdCP structured references, { agent_url, id }, and agent_url is always https://salesagent.streetsdigital.com.

Supported request fields:

  • format_ids: look up specific formats by { agent_url, id }. You can send up to 100 refs per request. More than that returns INVALID_REQUEST.
  • name_search: case-insensitive match on the format name.

Other filters, including the size filters (min_width, max_width, min_height, max_height), are accepted but ignored for now.

Example request:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "list_creative_formats",
    "arguments": { "name_search": "video" }
  }
}

Each format in result.structuredContent.formats has a format_id, a name, a description and its assets (for example a required video file plus an optional impression tracker URL).

get_products

Returns the products you can buy.

Anonymous callers always get an empty list:

{ "products": [], "cache_scope": "public", "status": "completed", "adcp_version": "3.1" }

With a key, you get the published products Carbnn has opened to your key, in the territories they’re opened for. If another buyer holds a territory exclusively, that territory is hidden from you. A product must have at least one format and at least one publisher property to be listed.

Supported request fields:

  • buying_mode: when it’s "brief", brief must be a non-empty string, or the call returns INVALID_REQUEST with field: "brief".
  • brief: accepted and logged, but results aren’t filtered or ranked by it yet. Your agent should rank the returned products against its own brief.
  • filters.channels: returns only products in at least one of the given channels.
  • filters.countries: returns only products available in at least one of the given countries. Use upper-case ISO 3166-1 alpha-2 codes, e.g. "GB".
  • brand, account: accepted. Naming an account changes the cache_scope of the response (below).

Other filters are accepted but ignored for now.

cache_scope

Every get_products response carries an AdCP 3.1 cache_scope:

  • "public": the request named no account. Anonymous responses are always "public".
  • "account": a keyed request named an account. Don’t share or reuse that response for other accounts.

Limitations

  • Products that fail AdCP product validation are left out of the response rather than failing the whole call.
  • Some products list publisher properties by_id. Carbnn doesn’t publish a property list yet, so those property ids can’t be resolved against one.