Adobe Marketing Agent MCP connector
OAuth 2.1/DCR MarketingAnalyticsAIConnect to Adobe Marketing Cloud. Manage campaigns, analytics, and journeys using a natural-language AI assistant.
Adobe Marketing Agent MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Set up the connector
Section titled “Set up the connector”Register your Adobe Marketing Agent MCP credentials with Scalekit so it handles the token lifecycle. You do this once per environment.
Dashboard setup steps
Adobe Marketing Agent MCP uses Dynamic Client Registration (DCR) — no client ID or secret is required. The only step is creating a connection in Scalekit and authorizing your Adobe account.
-
Create a connection in Scalekit
- In the Scalekit dashboard, go to AgentKit → Connections → Create Connection.
- Search for Adobe Marketing Agent MCP and click Create.
- Note the Connection name — use this as
connection_namein your code (e.g.,adobemarketingagentmcp).
-
Authorize your Adobe account
Generate an authorization link and open it in a browser to complete the Adobe OAuth flow.
The user is redirected to Adobe to sign in and grant access. Scalekit stores the token and injects it automatically into every tool call — no further configuration is needed.
-
-
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'adobemarketingagentmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Adobe Marketing Agent MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'adobemarketingagentmcp_core-context-management-widget',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "adobemarketingagentmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Adobe Marketing Agent MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="adobemarketingagentmcp_core-context-management-widget",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Preferences core-user — Read or clear the user’s persisted preferences including sandbox, dataview, org, and region settings
- Dataview core-switch sandbox, core-set — Update the active sandbox and/or dataview for the session in a single call
- Org core-switch — Switch to a different Adobe organization by exchanging the current IMS token
- Sandbox core-set — Set the active Adobe Experience Platform sandbox for the current session
- Feedback core-provide — Submit user feedback about the AI assistant experience; automatically classifies sentiment and calls the feedback API
- Decision core-plan completion — Submit the user’s approval or rejection for a pending plan before it is executed
Common workflows
Section titled “Common workflows”Send a query to the Adobe Marketing AI assistant
Use adobemarketingagentmcp_adobe-marketing-agent-mcp-widget to ask questions about your campaigns, audiences, journeys, and Analytics data in plain English.
const result = await actions.executeTool({ connectionName: 'adobemarketingagentmcp', identifier: 'user_123', toolName: 'adobemarketingagentmcp_adobe-marketing-agent-mcp-widget', toolInput: { query: 'What are my top performing audience segments this month?', },});console.log(result);result = actions.execute_tool( connection_name="adobemarketingagentmcp", identifier="user_123", tool_name="adobemarketingagentmcp_adobe-marketing-agent-mcp-widget", tool_input={ "query": "What are my top performing audience segments this month?", },)print(result)Switch sandbox and dataview
Use adobemarketingagentmcp_core-switch_sandbox_dataview to update the active Adobe Experience Platform sandbox and Customer Journey Analytics dataview in a single call.
const result = await actions.executeTool({ connectionName: 'adobemarketingagentmcp', identifier: 'user_123', toolName: 'adobemarketingagentmcp_core-switch_sandbox_dataview', toolInput: { sandboxName: 'prod', dataviewName: 'My Analytics View', },});console.log(result);result = actions.execute_tool( connection_name="adobemarketingagentmcp", identifier="user_123", tool_name="adobemarketingagentmcp_core-switch_sandbox_dataview", tool_input={ "sandboxName": "prod", "dataviewName": "My Analytics View", },)print(result)Poll an async task
Some Adobe Marketing operations run asynchronously. Submit a query with execution_mode: "async", then poll with adobemarketingagentmcp_core-get_task until the task completes.
// Step 1 — submit async queryconst submitted = await actions.executeTool({ connectionName: 'adobemarketingagentmcp', identifier: 'user_123', toolName: 'adobemarketingagentmcp_adobe-marketing-agent-mcp-widget', toolInput: { query: 'Generate a full audience overlap report', execution_mode: 'async', },});const taskId = submitted.data?.task_id;
// Step 2 — poll until completelet cursor = 0;while (true) { const status = await actions.executeTool({ connectionName: 'adobemarketingagentmcp', identifier: 'user_123', toolName: 'adobemarketingagentmcp_core-get_task', toolInput: { task_id: taskId, cursor }, }); cursor = status.data?.cursor ?? cursor; if (status.data?.status === 'completed') { console.log(status.data.result); break; } await new Promise(r => setTimeout(r, 2000));}import time
# Step 1 — submit async querysubmitted = actions.execute_tool( connection_name="adobemarketingagentmcp", identifier="user_123", tool_name="adobemarketingagentmcp_adobe-marketing-agent-mcp-widget", tool_input={ "query": "Generate a full audience overlap report", "execution_mode": "async", },)task_id = submitted.data.get("task_id")
# Step 2 — poll until completecursor = 0while True: status = actions.execute_tool( connection_name="adobemarketingagentmcp", identifier="user_123", tool_name="adobemarketingagentmcp_core-get_task", tool_input={"task_id": task_id, "cursor": cursor}, ) cursor = status.data.get("cursor", cursor) if status.data.get("status") == "completed": print(status.data.get("result")) break time.sleep(2)Read and clear user preferences
User preferences (sandbox, dataview, org, region) persist for 90 days. Use adobemarketingagentmcp_core-user_preferences to read or clear them.
// Read current preferencesconst prefs = await actions.executeTool({ connectionName: 'adobemarketingagentmcp', identifier: 'user_123', toolName: 'adobemarketingagentmcp_core-user_preferences', toolInput: { action: 'get' },});console.log(prefs.data);
// Clear all preferencesawait actions.executeTool({ connectionName: 'adobemarketingagentmcp', identifier: 'user_123', toolName: 'adobemarketingagentmcp_core-user_preferences', toolInput: { action: 'clear' },});# Read current preferencesprefs = actions.execute_tool( connection_name="adobemarketingagentmcp", identifier="user_123", tool_name="adobemarketingagentmcp_core-user_preferences", tool_input={"action": "get"},)print(prefs.data)
# Clear all preferencesactions.execute_tool( connection_name="adobemarketingagentmcp", identifier="user_123", tool_name="adobemarketingagentmcp_core-user_preferences", tool_input={"action": "clear"},)Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
adobemarketingagentmcp_adobe-marketing-agent-mcp-widget
#
Send a natural-language query to the Adobe Marketing AI assistant to analyze audiences, troubleshoot journeys, and retrieve marketing insights. 5 params
Send a natural-language query to the Adobe Marketing AI assistant to analyze audiences, troubleshoot journeys, and retrieve marketing insights.
query string required The natural-language request or feedback message to send to the assistant. async boolean optional Compatibility flag; set to true to request async execution. chat_id string optional Optional identifier to correlate this request with a chat or conversation context. execution_mode string optional Controls how the task runs; use async for long-running polling-based tasks. long_running boolean optional Compatibility flag; set to true to request async execution for long-running tasks. adobemarketingagentmcp_core-context-management-widget
#
Display and manage the current organization, sandbox, and dataview context, allowing the user to switch between them. 1 param
Display and manage the current organization, sandbox, and dataview context, allowing the user to switch between them.
query string optional The natural-language request or feedback message to send to the assistant. adobemarketingagentmcp_core-feedback-widget
#
Show an interactive feedback form with thumbs up/down and rating categories; falls back to text-based feedback if widgets are not supported. 1 param
Show an interactive feedback form with thumbs up/down and rating categories; falls back to text-based feedback if widgets are not supported.
query string optional The natural-language request or feedback message to send to the assistant. adobemarketingagentmcp_core-get_task
#
Retrieve the status and events for an async task by ID; use the cursor to poll only for new events since the last fetch. 2 params
Retrieve the status and events for an async task by ID; use the cursor to poll only for new events since the last fetch.
task_id string required The unique identifier of the async task to retrieve. cursor integer optional Offset cursor from the previous response; use 0 to fetch all events from the beginning. adobemarketingagentmcp_core-list_tasks
#
List all async tasks associated with the current conversation context. 0 params
List all async tasks associated with the current conversation context.
adobemarketingagentmcp_core-plan_completion_decision
#
Submit the user's approval or rejection for a pending plan before it is executed. 1 param
Submit the user's approval or rejection for a pending plan before it is executed.
decision string required The user's approval decision for the pending plan. adobemarketingagentmcp_core-provide_feedback
#
Submit user feedback about the AI assistant experience; automatically classifies sentiment and calls the feedback API. 6 params
Submit user feedback about the AI assistant experience; automatically classifies sentiment and calls the feedback API.
comment string optional Optional free-text comment to accompany the feedback. flagCategories array optional Categories of harmful content being reported; required when flagged is true. flagged boolean optional Set to true if the feedback reports harmful content; triggers the flag API instead of sentiment feedback. pickList array optional Selected feedback option labels chosen from the widget's predefined list. query string optional The natural-language request or feedback message to send to the assistant. sentiment string optional The user's overall sentiment rating for the interaction. adobemarketingagentmcp_core-set_dataview
#
Set the active Customer Journey Analytics dataview for the current session. 1 param
Set the active Customer Journey Analytics dataview for the current session.
dataviewName string required The name of the Customer Journey Analytics dataview to set as the active context. adobemarketingagentmcp_core-set_sandbox
#
Set the active Adobe Experience Platform sandbox for the current session. 1 param
Set the active Adobe Experience Platform sandbox for the current session.
sandboxName string required The technical name (one word) of the Adobe Experience Platform sandbox to set as the active context. adobemarketingagentmcp_core-switch_org
#
Switch to a different Adobe organization by exchanging the current IMS token. 1 param
Switch to a different Adobe organization by exchanging the current IMS token.
org_name string required The display name or IMS Org ID of the Adobe organization to switch to. adobemarketingagentmcp_core-switch_sandbox_dataview
#
Update the active sandbox and/or dataview for the session in a single call. 2 params
Update the active sandbox and/or dataview for the session in a single call.
dataviewName string optional The name of the Customer Journey Analytics dataview to set as the active context. sandboxName string optional The technical name (one word) of the Adobe Experience Platform sandbox to set as the active context. adobemarketingagentmcp_core-user_preferences
#
Read or clear the user's persisted preferences including sandbox, dataview, org, and region settings. 1 param
Read or clear the user's persisted preferences including sandbox, dataview, org, and region settings.
action string optional Action to perform on preferences; get returns current settings, clear removes all saved preferences.