create_canvas
Create an Instant Experience canvas on a Facebook Page by providing the page ID and a JSON array of body elements defining the layout.
Instructions
Create a new Instant Experience (Canvas) on a Facebook Page. Requires page_id and body_elements JSON array defining the canvas layout.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Facebook Page ID to create the canvas on | |
| body_elements | Yes | JSON array of canvas body elements (buttons, carousels, photos, videos, text, etc.) | |
| name | No | Canvas name |
Implementation Reference
- src/tools/canvas.ts:49-68 (handler)The create_canvas tool handler: registers an MCP tool that creates a new Instant Experience (Canvas) on a Facebook Page. Accepts page_id (required), body_elements (required JSON string), and name (optional). Makes a POST request to /{page_id}/canvases via the AdsClient.
// ─── create_canvas ───────────────────────────────────────── server.tool( "create_canvas", "Create a new Instant Experience (Canvas) on a Facebook Page. Requires page_id and body_elements JSON array defining the canvas layout.", { page_id: z.string().describe("Facebook Page ID to create the canvas on"), body_elements: z.string().describe("JSON array of canvas body elements (buttons, carousels, photos, videos, text, etc.)"), name: z.string().optional().describe("Canvas name"), }, async ({ page_id, body_elements, name }) => { try { const params: Record<string, unknown> = { body_elements }; if (name) params.name = name; const { data, rateLimit } = await client.post(`/${page_id}/canvases`, params); return { content: [{ type: "text" as const, text: JSON.stringify({ ...data as object, _rateLimit: rateLimit }, null, 2) }] }; } catch (error) { return { content: [{ type: "text" as const, text: `Failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true }; } } ); - src/tools/canvas.ts:53-57 (schema)Zod schema for create_canvas input validation: page_id (string, required), body_elements (string, required), name (string, optional).
{ page_id: z.string().describe("Facebook Page ID to create the canvas on"), body_elements: z.string().describe("JSON array of canvas body elements (buttons, carousels, photos, videos, text, etc.)"), name: z.string().optional().describe("Canvas name"), }, - src/index.ts:58-58 (registration)Registration of the canvas tools (including create_canvas) via registerCanvasTools(server, client) in the main server setup.
registerCanvasTools(server, client); - src/index.ts:136-136 (registration)Registration of canvas tools in the sandbox/test server setup.
registerCanvasTools(sandbox, mockClient); - src/tools/canvas.ts:5-5 (helper)The registerCanvasTools export function that wraps all canvas tool registrations. Imported and called by src/index.ts.
export function registerCanvasTools(server: McpServer, client: AdsClient): void {