# Marketo (npm · marketo-mcp-server)

MCP server for Marketo — 32 tools for leads, programs, emails, forms, lists, and bulk export.

- Trust score: 65/100 (medium)
- Change this week: +25
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `marketo-mcp-server`: 65/100 (this document), [markdown](https://verifymcp.io/servers/zleventer-marketo-mcp-server/marketo-mcp-server.md), [page](https://verifymcp.io/servers/zleventer-marketo-mcp-server/marketo-mcp-server)

## Channel facts

- Registry: `npm`
- Package: `marketo-mcp-server`
- Version: `1.0.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (109 of 110), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (109 of 110), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 19/100
  - Repository check failed: the declared repository URL returned HTTP 404.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 95 days ago).
  - Security-disclosure policy not yet verified: we couldn't inspect the source repository.
- **Schema Quality & AI Usability**: 81/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 2436 tokens (~76/item across 32 items; 32 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add zleventer-marketo-mcp-server -- npx -y marketo-mcp-server
```

### Codex

```bash
codex mcp add zleventer-marketo-mcp-server -- npx -y marketo-mcp-server
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "zleventer-marketo-mcp-server": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "marketo-mcp-server"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add zleventer-marketo-mcp-server --command npx --arg -y --arg marketo-mcp-server
```

### Hermes

```yaml
mcp_servers:
  zleventer-marketo-mcp-server:
    command: "npx"
    args: ["-y", "marketo-mcp-server"]
```

### Other

```json
{
  "mcpServers": {
    "zleventer-marketo-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "marketo-mcp-server"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 65, +50)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Stability: unverified → 0.27
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → excellent
- [functional] Licence: MIT

### 2026-08-02 (score 15, +12)

- [security improvement] Malware scan: unverified → pass
- [functional regression] Dependency health: partial → unverified

### 2026-08-01 (score 3, −13)

- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Dependency health: unverified → partial

### 2026-07-31 (score 16, −6)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 22, +4)

- [security regression] Malware scan: pass → unverified
- [functional improvement] Tool coverage: unverified → 100

### 2026-07-28 (score 18, −22)

- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 40)

First indexed and scored.

## MCP tools (32)

### `marketo_get_forms` (~92 tokens)

List forms in Marketo. Supports pagination via maxReturn (max 200) and offset. Optionally filter by status (approved/draft). Returns form metadata including name, URL, status, and folder.

Input parameters:

- `maxReturn` (number): Max forms to return (1-200, default 20)
- `offset` (number): Pagination offset
- `status` (string): Filter by approval status

### `marketo_get_form_by_id` (~46 tokens)

Get a single Marketo form by its ID. Returns full form metadata including fields, submit button label, and visibility rules.

Input parameters:

- `id` (number, required): Form ID

### `marketo_clone_form` (~94 tokens)

Clone an existing Marketo form. Creates a new form with the same fields and settings under the specified name and folder.

Input parameters:

- `description` (string): Description for the cloned form
- `folderId` (number, required): Destination folder ID
- `folderType` (string): Type of destination folder
- `id` (number, required): ID of the form to clone
- `name` (string, required): Name for the cloned form

### `marketo_approve_form` (~44 tokens)

Approve a Marketo form draft, making it the live version. The form must be in draft status.

Input parameters:

- `id` (number, required): Form ID to approve

### `marketo_get_lead_by_id` (~75 tokens)

Get a single lead by Marketo lead ID. Optionally specify which fields to return. Returns lead record with all requested fields.

Input parameters:

- `fields` (array): List of field API names to return (e.g. ['email','firstName','company'])
- `id` (number, required): Marketo lead ID

### `marketo_get_lead_by_email` (~61 tokens)

Look up a lead by email address. Uses filterType=email on the leads endpoint. Returns matching lead records.

Input parameters:

- `email` (string, required): Email address to search for
- `fields` (array): List of field API names to return

### `marketo_create_or_update_leads` (~106 tokens)

Batch create or update leads in Marketo. Upserts up to 300 leads per call. Uses 'email' as the default dedup field. Set action to createOnly, updateOnly, or createOrUpdate.

Input parameters:

- `action` (string): Sync action
- `input` (array, required): Array of lead objects (max 300). Each must include a dedup key like 'email'.
- `lookupField` (string): Field used for deduplication

### `marketo_delete_lead` (~40 tokens)

Delete a lead from Marketo by lead ID. This is permanent and cannot be undone.

Input parameters:

- `id` (number, required): Lead ID to delete

### `marketo_get_lead_activities` (~116 tokens)

Get activity log for a specific lead. Filter by activity type IDs (e.g. 1=Visit Web Page, 6=Send Email). Supports pagination via nextPageToken. Returns timestamped activity records.

Input parameters:

- `activityTypeIds` (array): Filter to specific activity type IDs
- `batchSize` (number): Number of results per page (max 300)
- `leadId` (number, required): Lead ID to get activities for
- `nextPageToken` (string): Pagination token from previous response

### `marketo_get_programs` (~159 tokens)

List programs in Marketo. Supports pagination (maxReturn/offset), filtering by type (filterType: id/programType/folder/tag), and date range filtering. Returns program metadata including status, channel, costs, and tags.

Input parameters:

- `earliestUpdatedAt` (string): ISO 8601 datetime — only programs updated after this
- `filterType` (string): Filter type: id, programType, folder, or tag
- `filterValues` (string): Comma-separated filter values
- `latestUpdatedAt` (string): ISO 8601 datetime — only programs updated before this
- `maxReturn` (number): Max programs to return (1-200, default 20)
- `offset` (number): Pagination offset

### `marketo_get_program_by_id` (~47 tokens)

Get a single Marketo program by ID. Returns full program metadata including channel, status, costs, tags, and folder location.

Input parameters:

- `id` (number, required): Program ID

### `marketo_clone_program` (~100 tokens)

Clone an existing Marketo program. Creates a copy with all local assets (emails, LPs, smart campaigns) under the specified name and folder.

Input parameters:

- `description` (string): Description for the cloned program
- `folderId` (number, required): Destination folder ID
- `folderType` (string): Type of destination folder
- `id` (number, required): ID of the program to clone
- `name` (string, required): Name for the cloned program

### `marketo_get_program_members` (~96 tokens)

Get members (leads) of a Marketo program. Supports pagination via nextPageToken and batchSize. Optionally specify which lead fields to return.

Input parameters:

- `batchSize` (number): Number of results per page (max 300)
- `fields` (array): Lead field API names to return
- `nextPageToken` (string): Pagination token from previous response
- `programId` (number, required): Program ID

### `marketo_get_emails` (~87 tokens)

List email assets in Marketo. Supports pagination via maxReturn/offset and filtering by status (approved/draft). Returns email metadata including subject line, from address, and folder.

Input parameters:

- `maxReturn` (number): Max emails to return (1-200, default 20)
- `offset` (number): Pagination offset
- `status` (string): Filter by approval status

### `marketo_get_email_by_id` (~52 tokens)

Get a single Marketo email asset by ID. Returns full email metadata including HTML content, subject line, from/reply-to, and module structure.

Input parameters:

- `id` (number, required): Email asset ID

### `marketo_clone_email` (~91 tokens)

Clone an existing Marketo email asset. Creates a draft copy with the specified name in the target folder.

Input parameters:

- `description` (string): Description for the cloned email
- `folderId` (number, required): Destination folder ID
- `folderType` (string): Type of destination folder
- `id` (number, required): ID of the email to clone
- `name` (string, required): Name for the cloned email

### `marketo_send_sample` (~91 tokens)

Send a sample/test email to an email address. Optionally render personalization tokens using a specific lead's data. Useful for QA before approving.

Input parameters:

- `emailAddress` (string, required): Recipient email address for the sample
- `id` (number, required): Email asset ID
- `leadId` (number): Lead ID whose data to use for token rendering
- `textOnly` (boolean): Send text-only version

### `marketo_get_smart_lists` (~68 tokens)

List smart lists in Marketo. Returns smart list metadata including name, folder, created/updated dates, and filter rules summary.

Input parameters:

- `maxReturn` (number): Max smart lists to return (1-200, default 20)
- `offset` (number): Pagination offset

### `marketo_get_smart_list_by_id` (~46 tokens)

Get a single Marketo smart list by ID. Returns full smart list metadata including filter definitions and rule logic.

Input parameters:

- `id` (number, required): Smart list ID

### `marketo_get_lead_lists` (~88 tokens)

Get leads that are members of a specific static list. Supports pagination via nextPageToken and batchSize.

Input parameters:

- `batchSize` (number): Number of results per page (max 300)
- `fields` (array): Lead field API names to return
- `listId` (number, required): Static list ID
- `nextPageToken` (string): Pagination token from previous response

### `marketo_add_leads_to_list` (~62 tokens)

Add one or more leads to a static list by lead IDs. Max 300 leads per call.

Input parameters:

- `leadIds` (array, required): Array of lead IDs to add (max 300)
- `listId` (number, required): Static list ID

### `marketo_remove_leads_from_list` (~62 tokens)

Remove one or more leads from a static list by lead IDs. Max 300 leads per call.

Input parameters:

- `leadIds` (array, required): Array of lead IDs to remove (max 300)
- `listId` (number, required): Static list ID

### `marketo_get_channels` (~74 tokens)

List all channels in Marketo. Channels define the program type taxonomy (e.g. Webinar, Tradeshow, Email Send). Returns channel names, progression statuses, and applicability.

Input parameters:

- `maxReturn` (number): Max channels to return (1-200, default 20)
- `offset` (number): Pagination offset

### `marketo_get_channel_by_id` (~41 tokens)

Get a single Marketo channel by ID. Returns channel metadata including progression statuses and their step numbers.

Input parameters:

- `id` (number, required): Channel ID

### `marketo_create_channel` (~91 tokens)

Create a new channel in Marketo. Channels define program types and their progression statuses (e.g. Invited > Registered > Attended for a Webinar channel).

Input parameters:

- `applicableProgramType` (string, required): Program type this channel applies to (e.g. 'event', 'default', 'email')
- `name` (string, required): Channel name
- `progressionStatuses` (array, required): Ordered list of progression statuses

### `marketo_get_landing_pages` (~90 tokens)

List landing pages in Marketo. Supports pagination via maxReturn/offset and filtering by status (approved/draft). Returns LP metadata including URL, template, and mobile enablement status.

Input parameters:

- `maxReturn` (number): Max landing pages to return (1-200, default 20)
- `offset` (number): Pagination offset
- `status` (string): Filter by approval status

### `marketo_get_landing_page_by_id` (~50 tokens)

Get a single Marketo landing page by ID. Returns full LP metadata including template, URL, content sections, and form embeds.

Input parameters:

- `id` (number, required): Landing page ID

### `marketo_clone_landing_page` (~96 tokens)

Clone an existing Marketo landing page. Creates a draft copy with the specified name in the target folder.

Input parameters:

- `description` (string): Description for the cloned landing page
- `folderId` (number, required): Destination folder ID
- `folderType` (string): Type of destination folder
- `id` (number, required): ID of the landing page to clone
- `name` (string, required): Name for the cloned landing page

### `marketo_create_bulk_export_leads` (~95 tokens)

Create a bulk lead export job. Specify which fields to export and a date range filter. The job must be enqueued separately after creation. Max 500MB or 10M records per export.

Input parameters:

- `fields` (array, required): Lead field API names to export
- `filter` (object, required): Date range filter - use createdAt or updatedAt (required)
- `format` (string): Export file format

### `marketo_enqueue_bulk_export` (~56 tokens)

Enqueue a previously created bulk export job for processing. The job moves from Created to Queued status. Poll status with marketo_get_bulk_export_status.

Input parameters:

- `exportId` (string, required): Export job ID returned from create

### `marketo_get_bulk_export_status` (~57 tokens)

Check the status of a bulk export job. Returns status (Created/Queued/Processing/Completed/Failed/Cancelled), file size, number of rows, and timestamps.

Input parameters:

- `exportId` (string, required): Export job ID

### `marketo_get_bulk_export_file` (~63 tokens)

Download the file from a completed bulk export job. Returns CSV/TSV content. Only works when job status is Completed. Large files may be clipped in MCP response.

Input parameters:

- `exportId` (string, required): Export job ID (must be in Completed status)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/zleventer-marketo-mcp-server/marketo-mcp-server#diagnostics

## Score history

- 2026-08-03: 65
- 2026-08-02: 15
- 2026-08-01: 3
- 2026-07-31: 16
- 2026-07-30: 22
- 2026-07-28: 18
- 2026-07-27: 40

## Links

- npm package: https://www.npmjs.com/package/marketo-mcp-server
- Socket report: https://socket.dev/npm/package/marketo-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/zleventer-marketo-mcp-server/marketo-mcp-server/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/zleventer-marketo-mcp-server/marketo-mcp-server/changelog.json
- HTML version of this page: https://verifymcp.io/servers/zleventer-marketo-mcp-server/marketo-mcp-server
