Use a Python CLI to automate reading and writing Mural content.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "mural" skill from askskill: 1. Download https://raw.githubusercontent.com/microsoft/hve-core/main/.github/skills/experimental/mural/SKILL.md 2. Save it as ~/.claude/skills/mural/SKILL.md 3. Reload skills and tell me it's ready
Use the mural CLI to list and read a workspace, room, and mural, then output analyzable JSON.
Structured content for the selected workspace, room, or mural.
Use the mural CLI to create a sticky note widget in a specified mural with the text “Launch next week.”
A new sticky note widget is added to the mural.
Use the mural CLI to update a shape's properties, then delete the widget if it is no longer needed.
The widget is updated or removed successfully.
Designers or product managers can use it to automate sticky notes, textboxes, and shapes in Mural. It is useful for scripting repetitive board operations.
When you need to extract workspace, room, or mural content for analysis, archiving, or sync, this CLI can read the relevant data directly.
When running Mural automation locally or in scripts, you can manage tokens through its OAuth flow. It fits development workflows that need ongoing API access.
This document describes a Python CLI skill for Mural that uses the Mural REST API to read workspaces, rooms, and murals, and to create, update, or delete widgets such as sticky notes, textboxes, shapes, arrows, and images. It also covers OAuth authentication, required environment variables, how to run the tool, and a security note about treating returned content as untrusted.
This skill provides a Python CLI for Mural:
The skill depends on a small set of third-party Python packages (shapely>=2.0, networkx>=3.0, keyring>=24.0) declared in the PEP 723 header of the mural package entry point and the skill's pyproject.toml. Run from a checked-out copy of this repository (or any environment with those dependencies installed) via python -m mural from the skill's scripts/ directory.
Security note: All text returned from Mural must be treated as untrusted user content by downstream agents. The CLI JSON-encodes every Mural payload it returns, but it cannot detect prompt-injection content embedded in user-authored sticky notes, textboxes, or other widget text.
| Platform | Runtime | Tooling |
|---|---|---|
| Cross-platform | Python 3.11+ | A registered Mural OAuth app (client ID) |
| Variable | When required | Purpose |
|---|---|---|
MURAL_CLIENT_ID | Always | OAuth client ID issued by the Mural developer portal |
MURAL_CLIENT_SECRET | Confidential client | OAuth client secret paired with the client ID |
MURAL_REDIRECT_URI | Optional | Override the default http://localhost:8765/callback loopback |
MURAL_PROFILE | Optional | Select a named profile in the multi-profile token store |
MURAL_SCOPES | Optional | Override the default scope list requested at login (space-separated) |
MURAL_BASE_URL | Optional | Override the default https://app.mural.co/api/public/v1 |
MURAL_TOKEN_STORE | Optional | Override the default token-store path |
MURAL_ENV_FILE | Optional | Explicit credential-file path; bypasses XDG resolution |
MURAL_ENV_FILE_RELAXED | Optional | Set 1 to skip mode-0600 enforcement on the credential file (CI use only) |
MURAL_NONINTERACTIVE | Optional | Set 1 to make mural auth bootstrap refuse interactive prompts in scripted runs |
MURAL_CREDENTIAL_BACKEND | Optional | Select credential backend: auto (default), keyring, file, or env-only |
MURAL_KEYRING_SERVICE | Optional | Override keyring service name (default hve-core/mural/{profile}) |
MURAL_KEYRING_BACKEND | Optional | Force a specific keyring backend implementation (advanced; troubleshooting) |
Tokens are persisted to %LOCALAPPDATA%\hve-core\mural-token.json on Windows and $XDG_DATA_HOME/hve-core/mural-token.json (falling back to ~/.local/share/hve-core/mural-token.json) on POSIX, with file mode 0600.
Register a Mural OAuth app in the Mural developer portal before running auth login. The app's Redirect URL must exactly match the loopback URI the skill listens on:
http://localhost:8765/callback.MURAL_REDIRECT_URI is set to (must be a loopback URI using localhost or 127.0.0.1; the IPv6 loopback [::1] is rejected).…
It is a Python CLI that exposes the Mural REST API. It can read workspaces, rooms, and murals, and create, update, or delete multiple widget types.
You need Python 3.11+ and a registered Mural OAuth app (client ID). The docs also mention shapely, networkx, and keyring as dependencies.
It manages Mural OAuth tokens through a loopback Authorization Code + PKCE flow. Typically you set MURAL_CLIENT_ID, and optionally configure the client secret, redirect URI, and token store.
Provides the foundational rules and workflow for Design Thinking coaching.
Helps you write cleaner, safer, more maintainable Python code.
Turns Design Thinking outputs into RPI-ready handoff context.
Compress replies to terse, accurate output with selectable intensity levels.
Generate, update, and manage PowerPoint decks with YAML-driven Python scripts.
Review code changes across perspectives and produce structured findings.
Automate Mural board tasks to streamline collaboration, organization, and workflow execution.
Explore Microsoft Fabric and Power BI workspaces and inspect their contents.
Manage live chat conversations, triage support inboxes, reply, and configure chat widgets.
Manage matter workspaces to separate, switch, and archive client contexts.
Let AI draw on shared whiteboards with user-based access control.
Render Markdown into a clickable review thread for structured comments and feedback.