Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Mural

Scalekit connector
Open markdown

The Mural connector lets your AI agent act in each user's Mural account. Each user signs in to Mural once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 61 tools.

Tools
61
What they doRead · write · destructive
25 · 30 · 625 read30 write6 destructive
Users sign in with
OAuth app
Your own Mural app

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Mural connection

    In AgentKit > Connections, create a Mural connection and copy its redirect URI. The name you give it is the connection_name your code passes. See Configure connections.

  4. Register an OAuth app

    Mural connections use your own OAuth app. Register one with Mural and add the redirect URI you copied.

    Then enter the app's Client ID and Client Secret on the Mural connection.

  5. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'mural'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Mural:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'mural_get_current_user',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • mural_get_current_userGet the profile of the authenticated Mural user.Read-only

    Get Current User

    Get the profile of the authenticated Mural user. Returns a value object with the user's id, name, avatar, and company information. Use to confirm which account is connected. Requires the identity:read scope.

    Inputs

    This tool takes no inputs.

  • mural_get_muralGet one mural the authenticated user can read.Read-only

    Get Mural

    Get one mural the authenticated user can read. Returns a value object with the mural's id, title, dimensions, timestamps, sharing and visitor settings. Use after a list or search tool to read full mural details.

    Inputs

    mural_idstringrequired
    Unique identifier of the mural, in the form <workspaceId>.<timestamp>. Get it from mural list or search tools.
  • mural_get_mural_chatGet the chat messages of a mural.Read-only

    Get Mural Chat

    Get the chat messages of a mural. Returns a value array of chat messages and a next token. Use to read discussion that happened in a mural.

    Inputs

    mural_idstringrequired
    Unique identifier of the mural, in the form <workspaceId>.<timestamp>. Get it from mural list or search tools.
    limitinteger
    Maximum number of results to return in one page. Omit to use the server default.
    nextstring
    Pagination token from the 'next' field of a previous response. Omit to start at the first page.
  • mural_get_mural_exportGet the download URL of a mural export started with mural_export_mural.Read-only

    Get Mural Export

    Get the download URL of a mural export started with mural_export_mural. Returns a value object with exportId, muralId, url, createdOn, and expireOn. Use after mural_export_mural. The URL expires at expireOn.

    Inputs

    export_idstringrequired
    Identifier returned by mural_export_mural.
    mural_idstringrequired
    Unique identifier of the mural, in the form <workspaceId>.<timestamp>. Get it from mural list or search tools.
  • mural_get_roomGet one room the authenticated user can read.Read-only

    Get Room

    Get one room the authenticated user can read. Returns a value object with the room's id, name, description, type, confidential flag, workspaceId, and timestamps. Use after a list or search tool to read full room details.

    Inputs

    room_idintegerrequired
    Numeric identifier of the room. Get it from the list rooms tools.
  • mural_get_tagGet one tag on a mural.Read-only

    Get Tag

    Get one tag on a mural. Returns a value object with the tag's id, text, and colors. Use mural_list_tags to see all tags.

    Inputs

    mural_idstringrequired
    Unique identifier of the mural, in the form <workspaceId>.<timestamp>. Get it from mural list or search tools.
    tag_idstringrequired
    Unique identifier of the tag. Get it from mural_list_tags.
  • mural_get_widgetGet one widget on a mural by ID.Read-only

    Get Widget

    Get one widget on a mural by ID. Returns a value object with the widget's type, position, size, text, and style. Use mural_list_widgets to discover widget IDs.

    Inputs

    mural_idstringrequired
    Unique identifier of the mural, in the form <workspaceId>.<timestamp>. Get it from mural list or search tools.
    widget_idstringrequired
    Unique identifier of the widget on the mural. Get it from the list widgets tool.
  • mural_get_workspaceGet one workspace the authenticated user can read.Read-only

    Get Workspace

    Get one workspace the authenticated user can read. Returns a value object with the workspace's id, name, and settings. Use mural_list_workspaces to browse workspaces instead.

    Inputs

    workspace_idstringrequired
    Identifier of the workspace. Get it from the list workspaces tool.