marketo_get_landing_pages
Retrieve Marketo landing pages with pagination and status filters (approved or draft). Returns metadata including URL, template, and mobile enablement.
Instructions
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 Schema
| Name | Required | Description | Default |
|---|---|---|---|
| maxReturn | No | Max landing pages to return (1-200, default 20) | |
| offset | No | Pagination offset | |
| status | No | Filter by approval status |
Implementation Reference
- src/tools/landingPages.ts:5-24 (registration)Registration function that registers all landing page tools including 'marketo_get_landing_pages' via server.tool()
export function registerLandingPageTools(server: McpServer) { // ── marketo_get_landing_pages ────────────────────────────────────────────── server.tool( "marketo_get_landing_pages", "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.", { maxReturn: z.number().optional().describe("Max landing pages to return (1-200, default 20)"), offset: z.number().optional().describe("Pagination offset"), status: z.enum(["approved", "draft"]).optional().describe("Filter by approval status"), }, async (args) => { try { const params: Record<string, unknown> = {}; if (args.maxReturn) params.maxReturn = args.maxReturn; if (args.offset) params.offset = args.offset; if (args.status) params.status = args.status; return ok(await makeRequest("/rest/asset/v1/landingPages.json", "GET", params)); } catch (e) { return err(e); } } ); - src/tools/landingPages.ts:7-23 (handler)Tool definition and handler for 'marketo_get_landing_pages'. Makes a GET request to /rest/asset/v1/landingPages.json with optional query params (maxReturn, offset, status).
server.tool( "marketo_get_landing_pages", "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.", { maxReturn: z.number().optional().describe("Max landing pages to return (1-200, default 20)"), offset: z.number().optional().describe("Pagination offset"), status: z.enum(["approved", "draft"]).optional().describe("Filter by approval status"), }, async (args) => { try { const params: Record<string, unknown> = {}; if (args.maxReturn) params.maxReturn = args.maxReturn; if (args.offset) params.offset = args.offset; if (args.status) params.status = args.status; return ok(await makeRequest("/rest/asset/v1/landingPages.json", "GET", params)); } catch (e) { return err(e); } } - src/tools/landingPages.ts:10-13 (schema)Zod schema defining inputs: maxReturn (optional number), offset (optional number), status (optional enum: approved|draft)
{ maxReturn: z.number().optional().describe("Max landing pages to return (1-200, default 20)"), offset: z.number().optional().describe("Pagination offset"), status: z.enum(["approved", "draft"]).optional().describe("Filter by approval status"), - src/client.ts:21-49 (helper)makeRequest helper that handles authenticated HTTP requests to Marketo API, used by the handler
export async function makeRequest<T = unknown>( endpoint: string, method: Method = "GET", data?: unknown, contentType?: string, ): Promise<T> { const token = await getAccessToken(); const config: AxiosRequestConfig = { url: `${MARKETO_BASE_URL}${endpoint}`, method, headers: { Authorization: `Bearer ${token}`, ...(contentType ? { "Content-Type": contentType } : {}), }, ...(data && method !== "GET" ? { data } : {}), ...(data && method === "GET" ? { params: data } : {}), }; const res = await axios(config); const body = res.data; // Marketo REST API returns errors inside the response body if (body?.errors?.length) { const e = body.errors[0]; throw new MarketoError(`${e.code}: ${e.message}`, res.status); } return body as T; } - src/index.ts:12-28 (registration)Imports and calls registerLandingPageTools(server) to wire up the tool
import { registerLandingPageTools } from "./tools/landingPages.js"; import { registerBulkExportTools } from "./tools/bulkExport.js"; const server = new McpServer({ name: "marketo-mcp", version: "0.1.0", }); // Register all tool groups registerFormTools(server); registerLeadTools(server); registerProgramTools(server); registerEmailTools(server); registerSmartListTools(server); registerListTools(server); registerChannelTools(server); registerLandingPageTools(server);