Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions docs/creative/implementing-creative-agents.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -428,13 +428,64 @@ When updating format definitions:
Before launching your creative agent:

- [ ] MCP and/or A2A endpoints are accessible
- [ ] `get_adcp_capabilities` returns `creative.supported_formats` with at least one entry
- [ ] All format_ids use proper namespacing (`domain:id`)
- [ ] Domain in format_id matches your `agent_url` domain
- [ ] `list_creative_formats` returns all your formats
- [ ] `preview_creative` validates manifests and generates previews
- [ ] Format definitions include complete asset requirements
- [ ] Documentation available for your custom formats

To verify a remote creative agent is reachable and advertising its format surface, call `get_adcp_capabilities` on the agent endpoint and confirm that the response includes a non-empty `creative.supported_formats` array. Each entry follows the [canonical format declaration](/docs/creative/canonical-formats) shape.

<Accordion title="Verify an MCP creative agent">

```bash
export AGENT_URL="https://your-creative-agent.example.com/mcp"

curl -X POST "$AGENT_URL" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
Comment on lines +446 to +452

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Initialize MCP sessions before probing tools

For MCP endpoints that implement the standard lifecycle or return an Mcp-Session-Id, this raw tools/call as the first request will be rejected or run before capabilities are negotiated; the MCP lifecycle spec says initialization is the first interaction and Streamable HTTP clients must carry the returned session ID on subsequent requests (see https://modelcontextprotocol.io/specification/2025-03-26/basic/lifecycle#initialization and https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#session-management). Since this is presented as the runnable deployment check for remote MCP creative agents, compliant stateful servers can appear broken. Add the initialize/initialized handshake and session header steps, or point readers to an MCP client/CLI that performs them.

Useful? React with 👍 / 👎.

"params": {
"name": "get_adcp_capabilities",
"arguments": {
"adcp_version": "3.1",
"adcp_major_version": 3,
"protocols": ["creative"]
}
}
}'
```

Read the AdCP payload from the MCP result and verify that it contains a creative capability block like this:

```json
{
"creative": {
"supported_formats": [
{
"capability_id": "display_banner",
"format": {
"format_kind": "image",
"params": {
"width": 300,
"height": 250
}
}
}
]
}
}
```

An unreachable endpoint, an authorization error, a missing `creative` block, or an empty `supported_formats` array means the agent is not ready for creative-format discovery. If the endpoint requires authentication, include the credential configured for that agent.

</Accordion>

## Integration patterns

### Pattern 1: creative agency
Expand Down
Loading