Muse Command Protocol
MuseHub speaks MCP 2025-11-25 — full Streamable HTTP with elicitation, progress streaming, and server-sent events. AI agents and human tools connect identically, as first-class citizens.
Connecting
POST /mcp
GET /mcp
2025-11-25
Authorization: Bearer <jwt>
token_type: "agent" claim → higher rate limits + activity badge
GET /mcp/docs.json
Agent quick-start
- Send
initialize→ receiveMcp-Session-Id - Call
musehub_list_domainsto discover available domain plugins - Call
musehub_get_domain(scoped_id="@author/slug")to read a manifest - Call
musehub_browse_repo+musehub_get_viewto inspect state - Use
musehub/agent-onboardprompt for a full guided walkthrough
Tools 43
musehub_browse_repo
server
Get an overview of a MuseHub repository: metadata, branches, and recent commits. Use this to orient yourself before reading files or analysing commit history. Example: musehub_browse_repo(repo_id='a3f2-...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
musehub_list_branches
server
List all branches in a MuseHub repository with their head commit IDs. Call before musehub_list_commits to identify the target branch ref. Example: musehub_list_branches(repo_id='a3f2-...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
musehub_list_commits
server
List commits on a MuseHub repository (newest first). Optionally filter by branch name and cap the result count. Example: musehub_list_commits(repo_id='a3f2-...', branch='main', limit=10).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
branch |
string | — | Branch name filter (e.g. 'main'). Omit to list across all branches. |
limit |
integer | — | Maximum commits to return (default: 20, max: 100). |
musehub_read_file
server
Read the metadata for a stored artifact (MIDI, MP3, WebP piano roll) in a MuseHub repo. Returns path, size_bytes, mime_type, and object_id. Binary content is not returned — discover object IDs via musehub_browse_repo first. Example: musehub_read_file(repo_id='a3f2-...', object_id='sha256:abc...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
object_id |
string | yes | Content-addressed object ID (e.g. 'sha256:abc...'). |
musehub_get_analysis
server
[Deprecated — use musehub_get_domain_insights] Get structured analysis for a MuseHub repository. Dimensions: 'overview' returns repo stats + branch/commit/object counts; 'commits' returns commit activity summary; 'objects' returns artifact inventory grouped by MIME type. Example: musehub_get_analysis(repo_id='a3f2-...', dimension='overview').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
dimension |
string | — | Analysis dimension: 'overview', 'commits', or 'objects'. |
musehub_search
server
Search within a MuseHub repository by substring query. Mode 'path' matches artifact file paths (e.g. 'tracks/jazz'); mode 'commit' searches commit messages (e.g. 'add bass'). Returns matching items with their metadata. Example: musehub_search(repo_id='a3f2-...', query='bass', mode='path').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository to search within. |
query |
string | yes | Substring query string (case-insensitive). |
mode |
string | — | Search mode: 'path' searches object paths; 'commit' searches commit messages. |
musehub_get_context
server
Get the full AI context document for a MuseHub repository. This is the primary read-side interface for domain agents: it returns a structured summary of the repo's current state — domain plugin, branches, recent commits, artifact inventory, and repo metadata — in a single call. Feed this document to the agent before creating state changes to ensure coherence with the existing multidimensional state. Example: musehub_get_context(repo_id='a3f2-...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
musehub_get_commit
server
Get detailed information about a single commit, including its message, author, timestamp, parent IDs, and the full list of artifact paths at that snapshot. Use to inspect what changed at a specific point in history. Example: musehub_get_commit(repo_id='a3f2-...', commit_id='sha256:abc...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
commit_id |
string | yes | Commit ID (SHA or short ID). |
musehub_compare
server
Compare two refs (branches or commit IDs) in a MuseHub repository. Returns a multidimensional state diff: which artifacts were added, removed, or modified, and per-dimension change scores sourced from the repo's domain plugin capabilities. Example: musehub_compare(repo_id='a3f2-...', base_ref='main', head_ref='feature/new-section').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
base_ref |
string | yes | Base branch name or commit ID. |
head_ref |
string | yes | Head branch name or commit ID to compare against base. |
musehub_list_issues
server
List issues for a MuseHub repository. Filter by state (open/closed/all), label string, or assignee. Example: musehub_list_issues(repo_id='a3f2-...', state='open', label='bug').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
state |
string | — | Filter by state: 'open', 'closed', or 'all'. |
label |
string | — | Filter to issues with this label string. |
musehub_get_issue
server
Get a single issue by its per-repo number, including the full comment thread. Example: musehub_get_issue(repo_id='a3f2-...', issue_number=42).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
issue_number |
integer | yes | Per-repo issue number. |
musehub_list_prs
server
List pull requests for a MuseHub repository. Filter by state (open/merged/closed/all) and/or target branch. Example: musehub_list_prs(repo_id='a3f2-...', state='open').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
state |
string | — | Filter by state: 'open', 'merged', 'closed', or 'all'. |
musehub_get_pr
server
Get a single pull request by ID, including reviews and inline comments. Example: musehub_get_pr(repo_id='a3f2-...', pr_id='b5e8-...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
pr_id |
string | yes | UUID of the pull request. |
musehub_list_releases
server
List all releases for a MuseHub repository, ordered newest first. Each release includes tag, title, release notes, and asset counts. Example: musehub_list_releases(repo_id='a3f2-...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
musehub_search_repos
server
Discover public MuseHub repositories across all domains by text query, domain plugin, or free-text tags. Filter by domain scoped ID (e.g. '@cgcardona/midi') to browse repos of a specific type. Returns repos sorted by relevance. Example: musehub_search_repos(query='jazz', domain='@cgcardona/midi').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
query |
string | — | Free-text query matched against repo names and descriptions. |
domain |
string | — | Filter by domain scoped ID, e.g. '@cgcardona/midi' or '@cgcardona/code'. |
tags |
array | — | Filter repos that have all of these tags. |
limit |
integer | — | Maximum results to return (default: 20, max: 100). |
musehub_list_domains
server
List and search all registered Muse domain plugins. Domains are the extensibility layer that give Muse its domain-agnostic power — each domain defines its own dimensions, viewer, merge semantics, CLI commands, and artifact types. Filter by query string, viewer_type, or verified status. Returns scoped_id (@author/slug), display_name, description, capabilities, repo_count, and install_count for each domain. Example: musehub_list_domains(query='genomics', verified=true).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
query |
string | — | Full-text search across name and description. |
viewer_type |
string | — | Filter by viewer type (e.g. 'piano_roll', 'code_graph', 'generic'). |
verified |
boolean | — | When true, return only officially-verified domains. |
limit |
integer | — | Maximum results (default 20, max 100). |
offset |
integer | — | Pagination offset. |
musehub_get_domain
server
Fetch the full manifest for a specific Muse domain plugin by its scoped ID. Returns all capabilities: dimensions list, viewer_type, merge_semantics, cli_commands, artifact_types, manifest_hash (content-addressed, immutable), version, repo_count, and install_count. Use this to understand what a domain can do before creating repos or generating domain-specific content. Example: musehub_get_domain(scoped_id='@cgcardona/midi').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
scoped_id |
string | yes | Domain scoped identifier in '@author/slug' format. |
musehub_get_domain_insights
server
Get structured insights for a MuseHub repository across any of its domain's dimensions. The available dimensions are defined by the repo's domain plugin — call musehub_get_domain first to learn the dimension names. dimension='overview' always returns cross-domain stats (commits, objects, collaborators). Domain-specific dimensions return per-dimension analytics (e.g. 'harmonic' for MIDI, 'syntax' for Code). Example: musehub_get_domain_insights(repo_id='a3f2-...', dimension='harmonic').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
dimension |
string | — | Insight dimension to fetch. 'overview' is always available; other values depend on the repo's domain plugin. |
ref |
string | — | Branch name, tag, or commit SHA to scope the insights to. Defaults to HEAD. |
musehub_get_view
server
Fetch the universal viewer payload for a repo at a given ref. Returns a structured representation of the multidimensional state as rendered by the domain's viewer — including dimension slices, navigation strip entries, and any domain-specific viewer metadata. This is the MCP equivalent of the /{owner}/{repo}/view/{ref} page. Useful for agents that need to inspect or reason about the full state without screen-scraping the HTML viewer. Example: musehub_get_view(repo_id='a3f2-...', ref='main').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
ref |
string | — | Branch name, tag, or commit SHA. Defaults to HEAD of default branch. |
dimension |
string | — | Optional: restrict the view payload to a single dimension slice. Omit to get the full multi-dimensional view. |
musehub_whoami
server
Return identity information for the currently authenticated caller. Call this first to confirm authentication, get your user_id, and see how many repos you own. Works for both human users and AI agent tokens. Returns {authenticated: false} when called without a Bearer token. Example: musehub_whoami().
muse_clone
server
Return the clone URL and Muse CLI command for a MuseHub repository. Use this to get the information needed to run 'muse clone' locally, or to fetch repo metadata before calling muse_pull. Example: muse_clone(owner='cgcardona', slug='neo-soul-experiment').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
owner |
string | yes | Repository owner username. |
slug |
string | yes | Repository slug (URL-safe name). |
ref |
string | — | Optional branch or tag to clone. Defaults to the default branch. |
muse_pull
server
Fetch missing commits and objects from a MuseHub repository. Equivalent to 'muse pull' — returns new commits and object metadata since the given commit ID. Use since_commit_id to fetch incrementally. Pass object_ids to download specific binary objects. Example: muse_pull(repo_id='a3f2-...', branch='main', since_commit_id='abc123').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the source repository. |
branch |
string | — | Branch to pull from. Defaults to the default branch. |
since_commit_id |
string | — | Only return commits newer than this commit ID. |
object_ids |
array | — | Specific object IDs to fetch (content-addressed). |
muse_remote
server
Return the remote URL and API endpoints for a MuseHub repository. Equivalent to 'muse remote -v' — returns the origin URL, push/pull API endpoints, and the CLI commands to add this repo as a remote. Example: muse_remote(owner='cgcardona', slug='neo-soul-experiment').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
owner |
string | yes | Repository owner username. |
slug |
string | yes | Repository slug (URL-safe name). |
musehub_create_repo
server
Create a new MuseHub repository for any Muse domain. The slug is auto-generated from the name. Specify a domain scoped ID (e.g. '@cgcardona/midi') to associate the repo with a domain plugin — this unlocks domain-specific viewers, insights, and CLI commands. Set initialize=true (default) to get an initial commit and default branch. Example: musehub_create_repo(name='Genome Edit Session', domain='@alice/genomics', visibility='public').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Human-readable repository name (slug auto-generated). |
description |
string | — | Optional markdown description of the repository. |
visibility |
string | — | Repository visibility: 'public' or 'private'. |
domain |
string | — | Domain plugin scoped ID (e.g. '@cgcardona/midi', '@cgcardona/code'). Call musehub_list_domains first to discover available domains. |
domain_meta |
object | — | Domain-specific metadata dict declared by the domain plugin (e.g. {"key_signature": "F# minor", "tempo_bpm": 120} for MIDI). |
tags |
array | — | Free-form tags for discovery (e.g. ['jazz', 'trio']). |
initialize |
boolean | — | When true (default), creates an initial commit and default branch. |
musehub_create_issue
server
Open a new issue in a MuseHub repository. Use issues to track musical problems, feature requests, or collaboration needs. Example: musehub_create_issue(repo_id='a3f2-...', title='Bass too muddy in bars 8-16').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
title |
string | yes | Issue title. |
body |
string | — | Optional markdown description. |
labels |
array | — | Label strings to apply on creation. |
musehub_update_issue
server
Update an existing issue's title, body, labels, state, or assignee. Only provided fields are modified. Set state='closed' to close the issue, state='open' to reopen it. Example: musehub_update_issue(repo_id='a3f2-...', issue_number=42, state='closed').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
issue_number |
integer | yes | Per-repo issue number. |
title |
string | — | New title (optional). |
body |
string | — | New markdown body (optional). |
labels |
array | — | Replacement label list (replaces existing labels). |
state |
string | — | New state: 'open' or 'closed'. |
assignee |
string | — | Username to assign, or empty string to unassign. |
musehub_create_issue_comment
server
Add a comment to an existing issue. Example: musehub_create_issue_comment(repo_id='a3f2-...', issue_number=42, body='Fixed in commit abc...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
issue_number |
integer | yes | Per-repo issue number. |
body |
string | yes | Markdown comment body. |
musehub_create_pr
server
Open a new pull request proposing to merge from_branch into to_branch. Call musehub_list_branches first to confirm both branches exist. Example: musehub_create_pr(repo_id='a3f2-...', title='Add jazz bridge', from_branch='feature/jazz-bridge', to_branch='main').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
title |
string | yes | Pull request title. |
from_branch |
string | yes | Source branch name to merge from. |
to_branch |
string | yes | Target branch name to merge into. |
body |
string | — | Optional markdown description. |
musehub_merge_pr
server
Merge an open pull request. Creates a merge commit on the target branch. The PR must be in 'open' state. Obtain pr_id from musehub_list_prs. Example: musehub_merge_pr(repo_id='a3f2-...', pr_id='b5e8-...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
pr_id |
string | yes | UUID of the pull request to merge. |
merge_strategy |
string | — | Merge strategy: 'merge_commit' (default), 'squash', or 'rebase'. |
musehub_create_pr_comment
server
Post a comment on a pull request, optionally anchored to a specific dimension reference. Pass a dimension_ref object to pinpoint exactly where in the multidimensional state the comment applies — the shape of this object is defined by the repo's domain plugin. For MIDI: {"dimension": "rhythmic", "track": "Drums", "beat_start": 8.0, "beat_end": 12.0}. For Code: {"dimension": "syntax", "file": "src/main.py", "line_start": 42, "line_end": 55}. Omit dimension_ref for a general (PR-level) comment. Example: musehub_create_pr_comment(repo_id='a3f2-...', pr_id='b5e8-...', body='Unexpected state divergence here', dimension_ref={"dimension": "structural", "node": "bridge"}).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
pr_id |
string | yes | UUID of the pull request. |
body |
string | yes | Markdown comment body. |
dimension_ref |
object | — | Optional domain-specific anchor identifying where in the multidimensional state this comment applies. Schema is defined by the repo's domain plugin. |
musehub_submit_pr_review
server
Submit a formal review on a pull request. event='approve' approves the PR; event='request_changes' blocks merge; event='comment' adds a neutral review comment. Example: musehub_submit_pr_review(repo_id='a3f2-...', pr_id='b5e8-...', event='approve', body='Sounds great! The bridge lands perfectly.').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
pr_id |
string | yes | UUID of the pull request. |
event |
string | yes | Review verdict: 'approve', 'request_changes', or 'comment'. |
body |
string | — | Optional review summary. |
musehub_create_release
server
Publish a new release for a MuseHub repository. A release pins a version tag to a commit and packages the musical snapshot. Tags must be unique per repo (e.g. 'v1.0', 'final-mix'). Example: musehub_create_release(repo_id='a3f2-...', tag='v1.0', title='First Release', body='Initial jazz session recording.').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
tag |
string | yes | Version tag string (e.g. 'v1.0'). Must be unique per repo. |
title |
string | yes | Human-readable release title. |
body |
string | — | Markdown release notes. |
commit_id |
string | — | Optional commit UUID to pin this release to. |
is_prerelease |
boolean | — | When true, marks as pre-release. |
musehub_star_repo
server
Star a MuseHub repository to show appreciation and follow its activity. Starred repos appear in the user's starred list. Idempotent. Example: musehub_star_repo(repo_id='a3f2-...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository to star. |
musehub_fork_repo
server
Fork a public MuseHub repository under the authenticated user's account. Creates a new repo with all branches and establishes fork lineage. Only public repos can be forked. Example: musehub_fork_repo(repo_id='a3f2-...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the public repository to fork. |
musehub_create_label
server
Create a repo-scoped label with a name and hex colour. Labels can be applied to issues and PRs for categorisation. Label names must be unique within the repository. Example: musehub_create_label(repo_id='a3f2-...', name='harmonic-issue', color='e11d48').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
name |
string | yes | Label name (must be unique per repo). |
color |
string | yes | 6-character hex colour without '#' (e.g. 'e11d48'). |
description |
string | — | Optional label description. |
musehub_create_agent_token
server
Mint a long-lived JWT agent token for programmatic MuseHub access. Agent tokens have higher rate limits than user tokens and appear with an 'agent' badge in the MuseHub activity feed. After creating a token, store it with: muse config set musehub.token <token>. Requires an authenticated session (the token is issued for the calling user). Example: musehub_create_agent_token(agent_name='my-composer-bot/1.0', expires_in_days=90).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
agent_name |
string | yes | Human-readable agent identifier, e.g. 'my-bot/1.0'. Appears in the activity feed alongside agent actions. |
expires_in_days |
integer | — | Token validity in days (default: 90, max: 365). |
muse_push
server
Push commits and binary objects to a MuseHub repository. Equivalent to 'muse push' — uploads new commits and base64-encoded binary objects in a single batch. Enforces fast-forward semantics unless force=true. Authentication required: call musehub_whoami or musehub_create_agent_token first. Example: muse_push(repo_id='a3f2-...', branch='main', head_commit_id='abc123', commits=[...], objects=[...]).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the target repository. |
branch |
string | yes | Target branch name (e.g. 'main'). |
head_commit_id |
string | yes | SHA of the new HEAD commit after this push. |
commits |
array | — | List of CommitInput objects to push. Each has: commit_id (str), parent_ids (list[str]), message (str), author (str), timestamp (ISO-8601 str), snapshot_id (str). |
objects |
array | — | List of ObjectInput objects to upload. Each has: object_id (str, e.g. 'sha256:abc...'), path (str, e.g. 'tracks/bass.mid'), content_b64 (str, base64-encoded bytes). |
force |
boolean | — | Allow non-fast-forward push (overwrites remote head). Use with caution. |
muse_config
server
Read info about Muse configuration keys or generate a 'muse config set' command. Equivalent to 'muse config get <key>' or 'muse config set <key> <value>'. Call without arguments to list all known MuseHub-related config keys. Pass key and value to get the exact CLI command to run. Key examples: musehub.token, musehub.url, musehub.username, user.name. Example: muse_config(key='musehub.token', value='eyJhbGc...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
key |
string | — | Configuration key to query or set (e.g. 'musehub.token', 'musehub.url', 'user.name'). Omit to list all known keys. |
value |
string | — | When provided together with key, returns the CLI command 'muse config set <key> <value>'. |
musehub_compose_with_preferences
server
elicitation
Interactively compose a musical piece by collecting user preferences via form-mode elicitation. Asks the user for key signature, tempo, time signature, mood, genre, reference artist, and duration. Returns a complete composition plan with chord progressions, section structure, harmonic tension profile, and a step-by-step Muse project workflow. Requires an active MCP session with elicitation capability. Example: musehub_compose_with_preferences(repo_id='a3f2-...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | — | Optional repository to scaffold the composition into. |
musehub_review_pr_interactive
server
elicitation
Review a pull request interactively by first eliciting the reviewer's focus dimension (melodic / harmonic / rhythmic / structural / dynamic / all) and depth (quick / standard / thorough). Returns a deep structured review targeting the user-chosen dimensions with harmonic tension and rhythmic consistency checks. Requires an active MCP session with elicitation capability. Example: musehub_review_pr_interactive(repo_id='a3f2-...', pr_id='pr-uuid').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the MuseHub repository. |
pr_id |
string | yes | UUID of the pull request to review. |
musehub_connect_streaming_platform
server
elicitation
Connect a streaming platform account (Spotify, SoundCloud, Bandcamp, YouTube Music, Apple Music, TIDAL, Amazon Music, Deezer) via URL-mode elicitation (OAuth). Directs the user to a MuseHub OAuth start page; once authorised, the agent can distribute Muse releases directly to the platform. Requires an active MCP session with URL elicitation capability. Example: musehub_connect_streaming_platform(platform='Spotify', repo_id='a3f2-...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
platform |
string | — | Streaming platform name. Elicited from user if omitted. |
repo_id |
string | — | Optional repository context for release distribution. |
musehub_connect_daw_cloud
server
elicitation
Connect a cloud DAW or mastering service (LANDR, Splice, Soundtrap, BandLab, Audiotool) via URL-mode elicitation (OAuth). Once connected, agents can trigger cloud renders, stems exports, and AI mastering jobs directly from MuseHub workflows. Requires an active MCP session with URL elicitation capability. Example: musehub_connect_daw_cloud(service='LANDR').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
service |
string | — | Cloud DAW / mastering service name. Elicited if omitted. |
musehub_create_release_interactive
server
elicitation
Create a release interactively in two chained elicitation steps: (1) form-mode: collects tag, title, release notes, changelog highlight, and pre-release flag; (2) URL-mode (optional): offers streaming platform OAuth connection. Creates the release then returns distribution guidance for connected platforms. Requires an active MCP session with elicitation capability. Example: musehub_create_release_interactive(repo_id='a3f2-...').
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
repo_id |
string | yes | UUID of the repository to create the release in. |
Resources 12
musehub://trending
Trending Repositories
Top public MuseHub repositories ranked by recent star count across all domains. Use this to discover popular state repositories before browsing or forking.
musehub://me
My Profile
Authenticated user's profile, public stats, and pinned repositories. Requires authentication.
musehub://me/notifications
My Notifications
Unread notification inbox for the authenticated user: PR reviews, issue mentions, and new comments. Requires authentication.
musehub://me/starred
My Starred Repositories
Repositories the authenticated user has starred. Requires authentication.
musehub://me/feed
My Activity Feed
Recent activity (commits, PRs, issues) across repositories the authenticated user watches. Requires authentication.
muse://docs/overview
Muse Paradigm Overview
High-level introduction to the Muse paradigm: State, Commit, Branch, Merge, and Drift. Explains how Muse extends version control from text/code to any multidimensional state space. Essential first read for any agent new to Muse.
muse://docs/protocol
MuseDomainPlugin Protocol Spec
Full specification of the MuseDomainPlugin protocol — the six interfaces every domain plugin must implement: StateSerializer, DiffEngine, MergeStrategy, InsightProvider, ViewRenderer, and ArtifactManager. Read this to understand how domains work or to build a new one.
muse://docs/crdt
Muse CRDT Reference
Reference for the CRDT data structures used in Muse's multi-agent merge engine: VectorClock, RGA (Replicated Growable Array), ORSet, and AWMap. Required reading for understanding conflict-free concurrent editing.
muse://docs/domains
Domain Plugin Authoring Guide
Step-by-step guide for authoring and registering a new Muse domain plugin. Covers the MuseDomainPlugin scaffold, capability manifest schema, viewer registration, and publishing to the MuseHub domain registry.
muse://docs/merge
Muse Merge Semantics
Three-way merge semantics and Operational Transform (OT) specification. Covers per-dimension conflict detection, domain-supplied merge strategies, and the Drift protocol for divergent branch reconciliation.
muse://domains
Registered Domain Plugins
All domain plugins registered on this MuseHub instance, with their scoped IDs (@author/slug), dimension counts, viewer types, and install counts. Use musehub_list_domains for richer filtering.
musehub://me/tokens
My Active Agent Tokens
Active agent JWT tokens issued to the authenticated user. Returns token metadata (never the raw token itself): agent_name, issued_at, expires_at, and last_used. Use musehub_create_agent_token to mint new tokens. Requires authentication.
Resource Templates 17
musehub://repos/{owner}/{slug}
Repository Overview
Metadata, stats, and recent activity for a public repository.
musehub://repos/{owner}/{slug}/branches
Repository Branches
All branches with their head commit IDs.
musehub://repos/{owner}/{slug}/commits
Repository Commits
Paginated commit history (newest first) across all branches.
musehub://repos/{owner}/{slug}/commits/{commit_id}
Single Commit
Detailed commit metadata including parent IDs and artifact snapshot.
musehub://repos/{owner}/{slug}/tree/{ref}
File Tree
All artifact paths and MIME types at the given branch or commit ref.
musehub://repos/{owner}/{slug}/blob/{ref}/{path}
File Metadata
Metadata for a single artifact (path, size, MIME type, object ID).
musehub://repos/{owner}/{slug}/issues
Issues
Open issues for the repository.
musehub://repos/{owner}/{slug}/issues/{number}
Single Issue
A single issue with its full comment thread.
musehub://repos/{owner}/{slug}/pulls
Pull Requests
Pull requests for the repository.
musehub://repos/{owner}/{slug}/pulls/{number}
Single Pull Request
A single pull request with reviews and inline musical comments.
musehub://repos/{owner}/{slug}/releases
Releases
All releases ordered newest first.
musehub://repos/{owner}/{slug}/releases/{tag}
Single Release
A specific release by tag with asset download counts.
musehub://repos/{owner}/{slug}/insights/{ref}
Domain Insights
Domain-specific insight dimensions at a given ref. The dimensions returned are sourced from the repo's domain plugin capabilities — e.g. harmony/rhythm/melody for MIDI repos, or symbols/hotspots/coupling for code repos.
musehub://repos/{owner}/{slug}/timeline
State Timeline
Chronological evolution of the repository's state across all dimensions. Shows commits, branch divergences, and structural milestones over time.
musehub://users/{username}
User Profile
Public profile and list of public repositories for a user.
muse://domains/{author}/{slug}
Domain Plugin Manifest
Full manifest for a specific registered domain plugin: capabilities, dimensions, viewer type, artifact types, merge semantics, and install instructions. Use {author}=cgcardona and {slug}=midi to read the built-in MIDI domain.
musehub://repos/{owner}/{slug}/remote
Repository Remote Info
Remote URL, push/pull API endpoints, and Muse CLI commands for a repository. Returns origin URL, push endpoint, pull endpoint, clone command, and the 'muse remote add origin' command. Equivalent to 'muse remote -v' for a MuseHub repo.
Prompts 12
musehub/orientation
Explains MuseHub's model (repos, commits, branches, domains, multidimensional state) and which tools to use for what. The essential first read for any new agent or human.
musehub/contribute
End-to-end contribution workflow: discover repo → browse → open issue → push commit → create PR → request review → merge.
repo_id
*
— UUID of the target repository.
owner
— Repository owner username.
slug
— Repository slug.
musehub/create
Domain-agnostic state creation workflow: get context → understand existing dimensions → push new state commit → verify via domain insights. Works for any Muse domain (MIDI, Code, Genomics, etc.).
repo_id
*
— UUID of the repository to create state in.
domain
— Domain scoped ID (e.g. '@cgcardona/midi'). Auto-resolved from repo if omitted.
musehub/review_pr
Dimension-aware PR review: get PR → read domain insights → compare branches → submit review with dimension_ref-anchored comments.
repo_id
*
— UUID of the repository.
pr_id
*
— UUID of the pull request to review.
musehub/issue_triage
Triage open issues: list → label → assign → link to milestones.
repo_id
*
— UUID of the repository whose issues to triage.
musehub/release_prep
Prepare a release: check merged PRs → write release notes → create release with version tag.
repo_id
*
— UUID of the repository to release.
musehub/onboard
Interactive creator onboarding (MCP 2025-11-25 elicitation-aware). Guides a new MuseHub creator through: profile setup → domain selection (via musehub_list_domains) → first repo creation → initial state scaffold → optional cloud integration. Requires an active session with elicitation capability.
username
— MuseHub username of the creator being onboarded.
musehub/release_to_world
Full elicitation-powered release and distribution pipeline (MCP 2025-11-25). Step 1: interactively create a release via musehub_create_release_interactive (form-mode for metadata). Step 2: connect streaming platforms via musehub_connect_streaming_platform (URL-mode OAuth). Step 3: distribute and share the release across all connected services. Requires an active session with elicitation capability.
repo_id
*
— UUID of the repository to release.
musehub/domain-discovery
Guide for discovering, evaluating, and selecting a Muse domain plugin. Covers: listing domains → reading manifests → understanding capabilities (dimensions, viewer, merge semantics, CLI commands) → choosing the right domain for a given use case.
use_case
— Optional description of what you want to version-control.
musehub/domain-authoring
End-to-end guide for building and publishing a new Muse domain plugin. Covers: designing dimensions → writing the domain manifest → implementing the viewer and merge semantics → publishing to MuseHub via the domains API → verifying the manifest hash.
domain_name
— Name of the domain you want to build (e.g. 'Genomics', 'Circuit Design').
musehub/agent-onboard
Onboard an AI agent as a first-class Muse citizen (MCP 2025-11-25). Covers: authenticating with an agent JWT → reading the MCP resource catalogue → discovering domains → creating or forking a repo → running the first read-modify-commit cycle → understanding rate limits and agent-specific claims.
agent_name
— Identifier or name of the agent being onboarded.
domain
— Domain scoped ID the agent will primarily work with.
musehub/push-workflow
Step-by-step guide for pushing a local Muse repository to MuseHub. Covers authentication setup, remote configuration, and the push command. Use this when an agent or user needs to publish work to MuseHub for the first time.
repo_id
— UUID of the target MuseHub repository (if already created).
owner
— Repository owner username.
slug
— Repository slug.