Public sales agent
Carbnn runs a public sales agent that speaks the Ad Context Protocol (AdCP). A buyer’s agent can connect to it, see what Carbnn sells, and look up the creative formats those products take, without anyone signing in to the Carbnn app.
Endpoint
https://salesagent.streetsdigital.com/That one URL is the whole agent. It accepts POST only; GET and DELETE
return 405 Method Not Allowed.
Protocol version
- AdCP 3.1. Every response carries
"adcp_version": "3.1". get_adcp_capabilitiesadvertisesmajor_versions: [3]. A request that asks for a different major version (for exampleadcp_major_version: 2) is refused withVERSION_UNSUPPORTED. See errors and limits.
Transport
The agent is an MCP server over Streamable HTTP. Any MCP client that supports Streamable HTTP can connect by pointing at the endpoint above. If you’re calling it by hand:
- Send JSON-RPC 2.0 requests as the
POSTbody, withContent-Type: application/json. - Send
Accept: application/json, text/event-stream. The agent answers406 Not Acceptableif either type is missing. - Responses come back as plain JSON, never as an event stream.
- The agent is stateless. There are no sessions and no session header, so
every request stands alone.
initializeworks if your client sends it, but you don’t need it before calling a tool. - One request per
POST. JSON-RPC batches (a JSON array body) are rejected with400. - AdCP tools are called with the standard MCP
tools/callmethod. The AdCP result is inresult.structuredContent, and a text summary of it is inresult.content.
Access
You can call the agent anonymously or with a bearer key.
- Anonymous: all three tools work.
get_productsreturns an empty product list, andlist_creative_formatsreturns the full public format catalogue. Anonymous calls are limited to 30 per minute per IP address. - With a key: send
Authorization: Bearer <your-key>.get_productsthen returns the products Carbnn has opened to your key, in the territories they’re opened for. Keyed calls are limited to 300 per minute per key.
Keys are issued by the Carbnn team. Self-serve key requests aren’t available yet.
Quick start
Ask the agent what it supports. This needs no key:
curl -s https://salesagent.streetsdigital.com/ \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"get_adcp_capabilities","arguments":{}}}'You should get back something like this (trimmed):
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": {
"status": "completed",
"adcp_version": "3.1",
"adcp": { "major_versions": [3] },
"supported_protocols": ["media_buy", "creative"],
"account": {
"supported_billing": ["operator"],
"default_billing": "operator",
"require_operator_auth": false,
"required_for_products": false,
"sandbox": false
}
}
}
}Next, call list_creative_formats with the same request shape to see the
formats Carbnn products use. The supported tools page covers
each tool in detail.
Billing
The agent declares operator as its only billing model: Carbnn invoices
whoever places the order, and payment is settled outside the protocol. You
don’t need to name an account to discover products.
Logging
Calls to the agent are logged, including request arguments such as a
get_products brief. Bearer keys are never logged.
More
- Supported tools: the tools the agent exposes and what each one returns.
- Errors and limits: error codes, what to do about each one, and rate limits.
- Changelog: changes buyers can see, newest first.