# Marketo MCP

> Marketo connects your AI client directly to your marketing automation data. Use it to manage leads, list campaigns, and query program assets without leaving your chat window. Need to check a lead's status by email or pull all running campaigns? This server gives your agent the tools to do it.

## Overview
- **Category:** industry-titans
- **Price:** Free
- **Tags:** lead-management, email-campaigns, marketing-workflows, lead-scoring, customer-engagement

## Description

**Marketo connects your AI client directly to your marketing automation data.** You can manage leads, check campaign status, and query program assets without ever leaving your chat window. Need to pull a lead's full history or see every active smart campaign? Your agent has the tools for it.

### Managing Leads and Tracking History

The `get_lead_by_email` tool fetches a complete profile and entire activity history just using a lead's email address. If you know the unique internal ID, use `get_lead_by_id` to pull all data points for that specific record. For tracking engagement, `list_activities` gathers a chronological list of recorded actions—like page visits or when they opened an email—for any specified lead.

You can group leads using `list_leads_by_list`, which pulls every contact contained within a predefined static segment or list. You'll always have visibility into your entire pool by checking out all available segments with `list_static_lists`. 

### Inventorying Campaigns and Programs

This server gives you full oversight of everything running in Marketo. To see what campaigns exist, run `list_campaigns` to get an inventory view of every marketing campaign set up. If you need the deep details on one specific push, use `get_campaign_by_id`, which retrieves the full profile for a campaign using its unique ID.

Smart campaigns require their own tools. You can see everything your advanced targeting logic is doing by running `list_smart_campaigns` to get an inventory list detailing criteria and status. To grab all the specifics on one of those smart campaigns, use `get_smart_campaign_by_id`, supplying its ID.

Programs and assets are managed separately. Use `list_programs` to get a complete roster of every marketing program asset you've built in the account. When you need the full details on a specific program or asset, call `get_program_by_id` with its identifier. 

### How It Works for Your Agent

Your AI client runs these tools against Marketo data. You don't have to manually log into the Marketo UI to check status or pull lists; your agent handles all that behind the scenes. By having access to `list_campaigns`, `list_smart_campaigns`, and `list_programs`, you keep track of every active piece of marketing collateral. The ability to instantly call `get_lead_by_email` means you can validate a lead's status or history immediately, right where you are working.

## Tools

### get_campaign_by_id
Retrieves the full details for one specific marketing campaign using its unique ID.

### get_lead_by_email
Fetches a lead's complete profile and history by providing only their email address.

### get_lead_by_id
Gets all data points for a specific lead when you know the unique internal ID number.

### get_program_by_id
Retrieves detailed information about a program or asset using its identifier.

### get_smart_campaign_by_id
Gets the specific details for a smart campaign, which uses advanced targeting logic, by its ID.

### list_activities
Pulls a list of all recorded actions (like opens or page visits) that occurred for a specified lead.

### list_campaigns
Lists every marketing campaign currently set up in the account, giving you an inventory view.

### list_leads_by_list
Generates a list of leads contained within a predefined static group or segment.

### list_programs
Lists all available marketing programs and assets in the account.

### list_smart_campaigns
Provides an inventory list of all smart campaigns, detailing their criteria and status.

### list_static_lists
Lists all the static lists or segments you have created in Marketo.

## Prompt Examples

**Prompt:** 
```
Get lead details for test@example.com.
```

**Response:** 
```
Fetching lead info... I found a lead with ID 12345. Name: John Doe, Status: active.
```

**Prompt:** 
```
List all active campaigns.
```

**Response:** 
```
Querying campaigns... You have several campaigns running, including 'Summer Sale' and 'New Lead Nurture'.
```

**Prompt:** 
```
Show recent activities for lead ID 12345.
```

**Response:** 
```
Retrieving activities... Lead 12345 recently opened an email and visited the pricing page.
```

## Capabilities

### Look up Lead Details
Retrieves a lead's full profile data using either their unique ID or email address.

### List Specific Leads
Pulls lists of leads based on the criteria of an existing static list within Marketo.

### Inventory Campaigns and Programs
Retrieves comprehensive listings for all your marketing campaigns, smart campaigns, and programs by ID or listing them entirely.

### Track Lead History
Gathers a chronological list of actions—like email opens or page views—for a specified lead.

## Use Cases

### A lead suddenly goes silent after an email.
The Account Manager needs to know why John Doe stopped engaging. Instead of checking three separate tabs (activity, emails, campaigns), they ask their agent: 'Show me John Doe's last 10 activities.' The agent uses `list_activities` with the lead ID and summarizes whether he opened an email or if his activity dropped off right after a specific campaign ran.

### Launching a new nurture sequence.
The Ops Manager needs to know which programs are available for this launch. They run `list_programs` first, checking the names and IDs of all assets. Then they use `get_program_by_id` on the chosen asset to ensure it has the necessary fields before building the campaign.

### Identifying a target segment for an ad buy.
The Demand Gen Specialist needs leads that fit 'High Value' criteria. They first call `list_static_lists` to get all segments, then select the correct list name and use `list_leads_by_list`. This pulls exactly the required subset of data for immediate action.

### Quickly verifying a lead before a call.
The Account Manager gets an email from a prospect. They don't have time to log into Marketo. Instead, they ask their agent to 'Find this person and tell me who they are.' The agent uses `get_lead_by_email` and returns the name, status, and last known activity in seconds.

## Benefits

- Check a lead's full history instantly. Instead of navigating to the individual record page, just ask your agent to run `list_activities` for a specific ID or email. You get the summary immediately.
- Build campaign inventories fast. Use `list_campaigns` and `list_smart_campaigns` together to quickly see every running initiative without manually clicking through dozens of dashboard tabs.
- Pinpoint lead groups with precision. If you need all contacts from a specific segment, use `list_leads_by_list`. It pulls the exact roster from that static list directly into your workflow output.
- Audit program assets easily. Need to know which marketing programs exist? Calling `list_programs` gives you an immediate directory view of every asset available for campaigns or lead nurturing.
- Get deep, specific insights. You don't have to guess the right tool; if you know a campaign ID, just call `get_campaign_by_id`. It gets you straight to the data without listing everything first.

## How It Works

The bottom line is you talk to your AI client, and it talks to Marketo for you.

1. Subscribe to the Marketo MCP Server and input your Client ID, Client Secret, and Munchkin ID.
2. Your AI client detects the available tools (e.g., `get_lead_by_email`, `list_campaigns`).
3. You ask your agent a question—'What did John Doe do last week?'—and it executes the necessary tool calls to pull the data back.

## Frequently Asked Questions

**How do I get all campaigns using list_campaigns?**
You simply ask your agent to run `list_campaigns`. It returns an inventory of every campaign ID and name currently set up in Marketo. This is the starting point for any campaign audit.

**Can I find a lead's data using get_lead_by_email?**
Yes, that’s one of the most efficient ways to check a lead. Just provide the email address and let your agent run `get_lead_by_email`. It pulls the full profile details immediately.

**What is the difference between list_leads_by_list and get_lead_by_id?**
Use `get_lead_by_id` when you know the single, unique internal ID number. Use `list_leads_by_list` when you need to pull a group of leads that belong together in an existing static list.

**How do I see what a lead has been doing? Should I use list_activities?**
Yes, `list_activities` is the dedicated tool for this. It pulls a timeline of actions—like opens and visits—for any specific lead ID or email you provide.

**Do I need to know the campaign ID to get details?**
Yes, `get_campaign_by_id` requires the ID. If you don't have it, first run `list_campaigns` to browse and find the correct identifier.

**When I run `list_activities`, do I have to provide a lead's ID?**
Yes, you must provide a specific Lead ID. The tool uses that ID as the primary filter to pull all associated actions for that single lead—like page visits or email opens.

**How do I use `list_campaigns` if I only want active campaigns?**
The function returns a directory of every campaign. You'll need to instruct your agent to filter the resulting list based on the 'Status' field (e.g., Active, Draft) after running the tool.

**What is the difference between `list_programs` and using `get_program_by_id`?**
`list_programs` gives you a summary of every available program in your account. Use `get_program_by_id` only when you know the ID and need comprehensive details about that specific asset.

**How do I find my Marketo credentials?**
Go to Marketo Admin > LaunchPoint to find your Client ID and Secret. Your Munchkin ID is under Admin > Munchkin.

**Can I search for leads by email?**
Yes! Use the `get_lead_by_email` tool to find specific leads using their email address.

**Is the integration secure?**
Your credentials are encrypted at rest and injected securely at runtime.