Adobe Marketing Agent MCP connector
OAuth 2.1/DCRMarketingAnalyticsAIConnect 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.
querystringrequiredThe natural-language request or feedback message to send to the assistant.asyncbooleanoptionalCompatibility flag; set to true to request async execution.chat_idstringoptionalOptional identifier to correlate this request with a chat or conversation context.execution_modestringoptionalControls how the task runs; use async for long-running polling-based tasks.long_runningbooleanoptionalCompatibility 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.
querystringoptionalThe 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.
querystringoptionalThe 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_idstringrequiredThe unique identifier of the async task to retrieve.cursorintegeroptionalOffset 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.
decisionstringrequiredThe 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.
commentstringoptionalOptional free-text comment to accompany the feedback.flagCategoriesarrayoptionalCategories of harmful content being reported; required when flagged is true.flaggedbooleanoptionalSet to true if the feedback reports harmful content; triggers the flag API instead of sentiment feedback.pickListarrayoptionalSelected feedback option labels chosen from the widget's predefined list.querystringoptionalThe natural-language request or feedback message to send to the assistant.sentimentstringoptionalThe 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.
dataviewNamestringrequiredThe 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.
sandboxNamestringrequiredThe 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_namestringrequiredThe 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.
dataviewNamestringoptionalThe name of the Customer Journey Analytics dataview to set as the active context.sandboxNamestringoptionalThe 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.
actionstringoptionalAction to perform on preferences; get returns current settings, clear removes all saved preferences.