From adcp-client
Executes AdCP Sponsored Intelligence (SI) Protocol tasks for brand agent conversations: initiate sessions, send messages, preview offerings, terminate sessions. Useful for conversational commerce and sponsored interactions.
npx claudepluginhub adcontextprotocol/adcp-client --plugin adcp-clientThis skill uses the workspace's default tool permissions.
This skill enables you to execute the AdCP SI Protocol with brand agents. SI enables conversational commerce sessions where users engage directly with brand agents for shopping, inquiries, and transactions.
Implements AdCP Sponsored Intelligence (SI) agents for brand-side conversational AI, using four tools (si_get_offering, si_initiate_session, si_send_message, si_terminate_session) for LLM host handoffs.
Enables autonomous agents to interact with headless e-commerce backends via standardized Python API for product discovery, cart management, authentication, and secure sessions. Useful for agentic shopping implementations.
Equips AI coding agents like Claude Code and Cursor with chained SKILL.md files for direct-response advertising, copywriting, funnel architecture, and paid media strategy.
Share bugs, ideas, or general feedback.
This skill enables you to execute the AdCP SI Protocol with brand agents. SI enables conversational commerce sessions where users engage directly with brand agents for shopping, inquiries, and transactions.
Buyer-side basics — idempotency replay,
oneOfvariants, asyncstatus:'submitted'polling, error recovery fromadcp_error.issues[]— live inskills/call-adcp-agent/SKILL.md. This skill covers per-task semantics only.
The SI Protocol provides 4 standardized tasks for managing conversational sessions:
| Task | Purpose | Response Time |
|---|---|---|
si_initiate_session | Start a brand conversation | ~2-5s |
si_send_message | Send a message in an active session | ~1-5s |
si_get_offering | Preview offerings before starting | ~1-3s |
si_terminate_session | End a session | ~1s |
si_get_offering to see what the brand offers before consentsi_initiate_session with the user's intent and consentsi_send_message to relay user messages and action responsessi_terminate_session when doneStart a conversational session with a brand agent.
Request:
{
"intent": "I'm interested in your winter jacket collection",
"identity": {
"consent_granted": true,
"consent_timestamp": "2025-01-15T10:30:00Z",
"consent_scope": ["email", "name"],
"user": {
"email": "user@example.com",
"name": "Jane Smith",
"locale": "en-US"
}
},
"placement": "chatgpt_search"
}
Key fields:
intent (string, required): Natural language description of user intent — the conversation handoff from host to brand agentidentity (object, required): User identity with consent status
consent_granted (boolean, required): Whether user consented to share identityconsent_timestamp (string, optional): ISO 8601 timestamp of consentconsent_scope (array, optional): Fields user agreed to shareuser (object, optional): PII (only if consent_granted is true) — email, name, localeanonymous_session_id (string, optional): Session ID if no consentmedia_buy_id (string, optional): AdCP media buy ID if triggered by advertisingplacement (string, optional): Where the session was triggeredoffering_id (string, optional): Brand-specific offering referenceoffering_token (string, optional): Token from si_get_offering for session continuitysupported_capabilities (object, optional): Host platform capabilities (modalities, components, commerce)context (object, optional): Opaque correlation data (e.g., {"trace_id": "abc-123"}) echoed unchanged in the response — never parsed by the brand agentResponse contains:
session_id: Use in subsequent si_send_message and si_terminate_session callsgreeting: Brand agent's initial messagesuggested_actions: Optional UI elements (buttons, quick replies)Send a message within an active SI session.
Text message:
{
"session_id": "sess_abc123",
"message": "Do you have this in size medium?"
}
Action response (button click, form submit):
{
"session_id": "sess_abc123",
"action_response": {
"action": "add_to_cart",
"element_id": "btn_add_cart_sku789",
"payload": {
"size": "M",
"color": "navy"
}
}
}
Key fields:
session_id (string, required): Session ID from si_initiate_sessionmessage (string, conditional): User's text message. Required unless action_response is provided.action_response (object, conditional): Response to a UI action — action, element_id, payload. Required unless message is provided.Response contains:
message: Brand agent's response textsuggested_actions: Optional UI elements for next interactioncomponents: Optional rich UI components (product cards, carousels, forms)Get offering details and availability before initiating a session. Allows showing rich previews before asking for user consent.
Request:
{
"offering_id": "winter-collection-2025",
"intent": "Looking for warm jackets under $200",
"include_products": true,
"product_limit": 5
}
Key fields:
offering_id (string, required): Offering identifier from the catalogintent (string, optional): Natural language description of user intent for personalized results (no PII)include_products (boolean, optional): Include matching productsproduct_limit (number, optional): Max products to return (default 5, max 50)context (object, optional): Opaque correlation data echoed unchanged in the response — never parsed by the brand agentResponse contains:
offering: Offering details (name, description, availability)products: Matching products if include_products is trueoffering_token: Pass to si_initiate_session for session continuityEnd an SI session.
Request:
{
"session_id": "sess_abc123",
"reason": "user_exit"
}
Key fields:
session_id (string, required): Session ID to terminatereason (string, required): Why the session is ending — handoff_transaction, handoff_complete, user_exit, session_timeout, host_terminatedtermination_context (object, optional): Conversation summary, transaction intent, and cause for the terminationcontext (object, optional): Opaque correlation data echoed unchanged in the response — never parsed by the brand agentReason values:
handoff_transaction: User is being redirected to complete a transactionhandoff_complete: Transaction completed within the sessionuser_exit: User chose to leavesession_timeout: Session timed outhost_terminated: Host platform ended the sessionSI sessions require explicit user consent before sharing PII:
consent_granted: false + anonymous_session_id: Anonymous sessionconsent_granted: true + user object: Personalized session with identitysi_get_offering (optional) → si_initiate_session → si_send_message (repeat) → si_terminate_session
Sessions are stateful. The brand agent maintains context across messages within a session.
Where the SI session was triggered:
chatgpt_search: Within ChatGPT search resultspublisher_article: On a publisher's article pagesocial_feed: In a social media feedctv_overlay: On a CTV streaming overlayCommon error codes:
SESSION_NOT_FOUND: Invalid or expired session_idSESSION_EXPIRED: Session timed outCONSENT_REQUIRED: Attempting to share PII without consentOFFERING_NOT_FOUND: Invalid offering_idRATE_LIMITED: Too many messages in quick succession