# Mural — Pipedream Connect

> Work better together with Mural's visual work platform.

- API slug: `mural` (use in MCP headers and tool keys)
- Auth: OAuth (Pipedream-managed)
- Categories: Productivity
- Website: https://mural.co/
- Managed OAuth scopes: `workspaces:read` · `users:read` · `murals:write` · `murals:read` · `rooms:read` · `identity:read` · `templates:read`
- This page (HTML): https://pipedream.com/apps/mural
- Tools: 12 actions · 3 triggers

## Connect via MCP (recommended)

- Endpoint: `https://remote.mcp.pipedream.net/v3`
- Headers: `Authorization: Bearer <token>` · `x-pd-project-id` · `x-pd-environment` · `x-pd-external-user-id` · `x-pd-app-slug: mural`

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "mural",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// e.g. run Create Image:
const result = await mcp.callTool({
  name: "mural-create-image",
  arguments: {
    workspaceId: "Workspace ID",
    muralId: "Mural ID",
  },
})
```

Docs: [MCP guide](https://pipedream.com/docs/connect/mcp/developers.md)

## API proxy

For a Mural endpoint with no pre-built tool, the proxy forwards your request with the connected user's credentials attached.

```bash
# The path segment is the target URL, URL-safe base64 encoded:
# https://app.mural.co/api/public/v1/users/me

curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcHAubXVyYWwuY28vYXBpL3B1YmxpYy92MS91c2Vycy9tZQ?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
  -H "Authorization: Bearer {access_token}" \
  -H "x-pd-environment: production"
```

Docs: [API proxy guide](https://pipedream.com/docs/connect/api-proxy.md)

## SDK

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "mural-create-image",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    mural: { authProvisionId: "apn_xxxxxxx" },
    workspaceId: "Workspace ID",
    muralId: "Mural ID",
  },
})
```

Docs: [Managed auth guide](https://pipedream.com/docs/connect/managed-auth/quickstart.md) · [Tools guide](https://pipedream.com/docs/connect/components.md)

## Actions (12)

### `mural-create-image` — Create Image (Write)

Upload an image and create an image widget on a mural. The image is uploaded to Mural's storage first and the widget is created from the uploaded asset, so the file must be reachable when the action runs. Only bmp, ico, gif, jpeg, jpg, png, and webp files are accepted; the format is detected from…

Full schema: https://pipedream.com/apps/mural/actions/create-image.md

### `mural-create-mural` — Create Mural (Write)

Create a new mural within a specified workspace. See the documentation

Full schema: https://pipedream.com/apps/mural/actions/create-mural.md

### `mural-create-room` — Create Room (Write)

Create a new room to group related murals within a workspace. Choose an open room to let any workspace member join, or a private room to restrict access to invited members only. Confidential rooms add a further layer of security but are Enterprise-only and cannot have share links. Requires the…

Full schema: https://pipedream.com/apps/mural/actions/create-room.md

### `mural-create-shape` — Create Shape (Write)

Create a new shape widget within a given mural, useful for diagram nodes, callouts, and arrows drawn on the canvas. Shape names are the API's own enum values rather than display names, so a triangle is triangle_smart and a diamond is rhombus_smart. The legacy values circle, diamond, hexagon…

Full schema: https://pipedream.com/apps/mural/actions/create-shape.md

### `mural-create-sticky` — Create Sticky (Write)

Create a new sticky note within a given mural. See the documentation

Full schema: https://pipedream.com/apps/mural/actions/create-sticky.md

### `mural-create-textbox` — Create Textbox (Write)

Create a new textbox widget within a given mural. Use a textbox for section headings, instructions, or longer prose that should read as plain text on the canvas rather than as a sticky note. Position is set in pixels and, unless Parent ID is given, is measured from the top-left corner of the mural…

Full schema: https://pipedream.com/apps/mural/actions/create-textbox.md

### `mural-invite-to-mural` — Invite to Mural (Write)

Share a mural by inviting a user to it. Supply either Email or Username: an email invitation must be accepted by the recipient before they gain access, while inviting by username adds the user to the mural immediately. Users invited to a mural without being members of its room become restricted…

Full schema: https://pipedream.com/apps/mural/actions/invite-to-mural.md

### `mural-list-murals` — List Murals (Read-only)

List murals in a workspace. See the documentation

Full schema: https://pipedream.com/apps/mural/actions/list-murals.md

### `mural-list-rooms` — List Rooms (Read-only)

List rooms in a workspace. See the documentation

Full schema: https://pipedream.com/apps/mural/actions/list-rooms.md

### `mural-list-widgets` — List Widgets (Read-only)

List widgets in a mural. See the documentation

Full schema: https://pipedream.com/apps/mural/actions/list-widgets.md

### `mural-search-murals` — Search Murals (Read-only)

Search murals in a workspace. See the documentation

Full schema: https://pipedream.com/apps/mural/actions/search-murals.md

### `mural-update-sticky` — Update Sticky (Write)

Update or move an existing sticky note on a mural. Every field except the mural and widget is optional, and only the fields you set are sent, so you can reposition a note by supplying just X Position and Y Position or reword it by supplying just Text. At least one updatable field must be set. See…

Full schema: https://pipedream.com/apps/mural/actions/update-sticky.md

## Triggers (3)

### `mural-new-area` — New Area Created (Polling)

Emit new event when a new area is created in the user's mural

Full schema: https://pipedream.com/apps/mural/triggers/new-area.md

### `mural-new-mural` — New Mural Created (Polling)

Emit new event when a new mural is created.

Full schema: https://pipedream.com/apps/mural/triggers/new-mural.md

### `mural-new-sticky` — New Sticky Note Created (Polling)

Emit new event each time a new sticky note is created in a specified mural

Full schema: https://pipedream.com/apps/mural/triggers/new-sticky.md

---

- All apps: https://pipedream.com/apps — index: https://pipedream.com/llms.txt
- Pipedream docs for agents: https://pipedream.com/docs/llms.txt
