Remote MCPCloudflare WorkerNo stored Marketo credentials

Marketo REST MCP Server

Human-readable connection guide and capability reference for the hosted MCP endpoint.

MCP endpoint: https://marketo-rest-mcp.heritagemcp.org/mcp

What this is: a Streamable HTTP MCP endpoint that exposes Adobe Marketo Engage REST API tools. It intentionally excludes Marketo bulk import/export endpoints. AI agents discover tool names, descriptions, and input schemas through standard MCP tools/list.

Connection options

Copilot Studio

Use API-key authentication in a header.

Server URL: https://marketo-rest-mcp.heritagemcp.org/mcp
Authentication: API key
Location: Header
Header name: X-Marketo-Credentials
Value: <base64url JSON credential payload>

Generic MCP clients

Use separate request headers when your client supports them.

X-Marketo-Client-Id: <client id>
X-Marketo-Client-Secret: <client secret>
X-Marketo-Munchkin-Id: 123-ABC-456
X-MCP-API-Key: <optional outer MCP key>

Bearer-style remote MCP clients

Use the same base64url credential payload as a bearer value.

Authorization: Bearer <base64url JSON credential payload>

Credential payload

The server does not store this payload. The MCP client sends it per request, and the Worker exchanges it for a request-local Marketo access token.

{
  "clientId": "YOUR_MARKETO_CLIENT_ID",
  "clientSecret": "YOUR_MARKETO_CLIENT_SECRET",
  "munchkinId": "123-ABC-456",
  "mcpServerApiKey": "optional outer MCP key"
}

Generate it locally with:

export MARKETO_CLIENT_ID='...'
export MARKETO_CLIENT_SECRET='...'
export MARKETO_MUNCHKIN_ID='123-ABC-456'
npm run make:credential-token

Core workflows and tools

WorkflowTypical toolsNotes
Lookup a personmarketo_lookup_person_by_email, marketo_find_peopleReturns one result or a selectable list when duplicates exist.
Recent activity / activity countsmarketo_get_person_recent_activities, marketo_count_person_activities, marketo_get_activity_typesCan filter by activity type, page/email name, primary attribute, or activity attributes.
Subscription datamarketo_lookup_person_subscriptions_by_email, marketo_get_person_subscriptionsReturns common compliance fields and discovers fields whose names contain subscriber or subscription.
Event registrationmarketo_list_programs, marketo_register_person_for_event_programMutates Marketo; confirm exact person, program, and status before calling.
Email/event program creationmarketo_clone_program, marketo_get_program_tokens, marketo_upsert_program_token, email/landing-page toolsUse clone-and-tokenize templates; confirm before approval or scheduling.

Manual JSON-RPC examples

MCP clients handle this automatically. These examples are useful for debugging with curl or scripts.

Initialize

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-06-18",
    "capabilities": {},
    "clientInfo": {
      "name": "manual-test-client",
      "version": "1.0.0"
    }
  }
}

Discover tools

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/list",
  "params": {}
}

Lookup by email

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "marketo_lookup_person_by_email",
    "arguments": {
      "email": "person@example.com"
    }
  }
}

Lookup subscriptions by email

{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "marketo_lookup_person_subscriptions_by_email",
    "arguments": {
      "email": "person@example.com"
    }
  }
}

Count a web-page visit

{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "marketo_count_person_activities",
    "arguments": {
      "leadId": 12345,
      "sinceDays": 60,
      "activityTypeNames": [
        "Visit Webpage"
      ],
      "primaryAttributeContains": "/example-page"
    }
  }
}

Useful endpoints

Safety notes

Machine-readable summary: /docs.json