musescore-fpx
Query musescore.com (sheet music search, score/license metadata, official download links) from a shell with the fpx CLI (@fetchproxy/cli) instead of running the musescore-mcp server — one-shot HTTP calls through a signed-in browser tab. Use when you want MuseScore data without the MCP, in a script, or on a machine where the MCP isn't installed. Skill: musescore-fpx Owner: chrischall Summary: Query musescore.com (sheet music search, score/license metadata, official download links) from a shell with the fpx CLI (@fetchproxy/cli) instead of running the musescore-mcp server — one-shot HTTP calls through a signed-in browser tab. Use when you want MuseScore data without the MCP, in a script, or on a machine where the MCP isn't installed. Tags: latest:1.1.8 Versio
Rank
62
Safety
84
Downloads
1.5k
Updated
Oct 10, 2026
Version
1.1.8
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.5K downloads reported by the source. Last updated 10/10/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 10, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 10, 2026
- Adoption signal
- 1.5K downloadsadoption · observed Oct 10, 2026
- Latest release
- 1.1.8release · observed Oct 9, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:musescore-fpx- Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-musescore-fpx/snapshot"
Documentation
CLAWHUB
147,524 characters of source documentation, loaded on request.
Extracted files
4 files captured from the source.
SKILL.md
---
name: musescore-fpx
description: >-
Query musescore.com (sheet music search, score/license metadata, official
download links) from a shell with the fpx CLI (@fetchproxy/cli) instead of
running the musescore-mcp server — one-shot HTTP calls through a signed-in
browser tab. Use when you want MuseScore data without the MCP, in a script,
or on a machine where the MCP isn't installed.
---
# MuseScore via fpx (no MCP)
musescore.com has **no public API** (the old one was shut down) and sits
behind a Cloudflare managed challenge ("Just a moment…") that 403s any plain
`curl`/Node request. `fpx` routes the request through the user's own
signed-in browser tab (the ContextMint Bridge extension), which has already cleared
the challenge, so the same page loads that a browser would get. No MuseScore
login is required for search/metadata — just a normal open tab.
This is the same data the `musescore_search` / `musescore_get_score` /
`musescore_download` MCP tools return, reached with one CLI call instead of a
running server.
## One-time setup
```sh
npm install -g @fetchproxy/cli # provides `fpx`
fpx profile add musescore --domain musescore.com
fpx pair -p musescore # prints a pair code → approve in ContextMint Bridge
```
Requirements: the **ContextMint Bridge** browser extension installed (from
https://github.com/nullnet-app/contextmint-bridge/releases — Chrome: load the chrome zip
unpacked; Safari not available yet, use Chrome for now —
it is the fetchproxy extension renamed, same maintainer; verify a zip against its
`.sha256` or build from source), with an open
`musescore.com` tab (apex host — no `www`) that has cleared the Cloudflare
challenge, and its Chrome **Site access** allowing `musescore.com`. Pairing
persists — after the first approval every later `fpx` call reuses it.
## Core call — and the JSON-store extraction it needs
Every page is a plain `GET`, HTML in, HTML out:
```sh
fpx get 'https://musescore.com/sheetmusic?text=zelda&recording_type=free-download' -p musescore \
> /tmp/search.html
```
**The fetched HTML has no result cards** — MuseScore hydrates the DOM
client-side. The real data is an **HTML-entity-encoded JSON store** embedded
in the markup (MuseScore's analogue of a Next.js `__NEXT_DATA__` blob). `jq`
alone can't read it — decode the entities and bracket-match the array/object
you want first. `references/extract-store.js` is a small, dependency-free
Node script that does exactly that (mirrors `src/store.ts`'s
`recoverJson`/`findArrayByKey`/`findEnclosingObject`); pipe the saved HTML
through it, then `jq`:
```sh
node references/extract-store.js scores < /tmp/search.html | jq '.[] | {id, title, composer_name}'
```
Ready-to-run URL patterns (search, score detail, static render assets) and
their `jq` projections are in `references/endpoints.md`.
## The one rule: search returns ids, detail needs both ids
A score's canonical path is `/user/<userId>/scores/<scoreId>` — search card_meta.json
{
"ownerId": "kn700jq4sjtf2anb0rk3ft4p7n856872",
"slug": "musescore-fpx",
"version": "1.1.8",
"publishedAt": 1791588278525
}references/endpoints.md
# MuseScore endpoints for fpx
All paths are on the apex host `musescore.com` (no `www`). Every request
needs a signed-in tab with the Cloudflare challenge cleared — plain
`curl`/Node gets a "Just a moment…" 403. Live-verified shapes; taken from
`docs/MUSESCORE-API.md` and `src/*.ts` in this repo (2026-06).
`node extract-store.js` below refers to `references/extract-store.js`
(dependency-free; run it from this `references/` directory, or adjust the
path).
---
## 1. Search
```
GET https://musescore.com/sheetmusic?text=<q>&recording_type=free-download&instrument=<id>&complexity=<id>&page=<n>
```
```sh
fpx get 'https://musescore.com/sheetmusic?text=zelda&recording_type=free-download' -p musescore \
> /tmp/search.html
node extract-store.js scores < /tmp/search.html \
| jq '.[] | {id, title, composer: .composer_name, uploader: .user.name, pages: .pages_count, is_free, downloadable: .is_downloadable}'
```
Filter params (all optional besides `text`): `instrument`, `complexity`,
`genres`, `type`, `score_format`, `instrumentation`, `license`, `page`
(1-based; page 1 is the default and can be omitted).
- **`recording_type=free-download`** is MuseScore's "Free to view, play &
download" facet — omit it to search the whole (mostly download-paywalled)
catalog.
- **`instrument` and `complexity` are NUMERIC ids, not words.** A word
(`instrument=piano`) matches nothing and MuseScore silently falls back to a
"no results" recency feed. Verified ids:
| instrument | id | | instrument | id |
| --- | --- | --- | --- | --- |
| piano | 2 | | flute | 22 |
| trombone | 4 | | bassoon | 25 |
| soprano | 6 | | saxophone alto | 54 |
| alto | 7 | | violin | 68 |
| accordion | 10 | | guitar | 72 |
| harpsichord | 11 | | trombone tenor | 21 |
| organ | 12 | | vocals / voice | 16 |
| cornet | 13 | | baritone | 19 |
| euphonium | 14 | | tuba | 15 |
`complexity`: `1`=Beginner, `2`=Intermediate, `3`=Advanced.
- **The store's results array is keyed `"scores"`** — a no-match query omits
it and emits `see_other_scores` / `no_result_scores` (a generic "see these
instead" feed) plus a sponsored `scores_to_be_promoted` array instead.
Always extract `scores` specifically (as above), not "the first array of
objects", or a genuinely empty search will look like it returned results.
Per-score fields worth knowing: `id`, `user.{id,name,is_pro,is_publisher}`,
`title` (has `[b]…[/b]` + entities — decode with `decodeText`-style cleanup if
you need clean text), `composer_name`, `parts`, `pages_count`, `duration`,
`hits`/`favorite_count`/`download_count`/`comments_count`,
`instrumentations[].name`, `rating.{rating,count}`, and the flags
`is_free`/`is_downloadable`/`is_public_domain`/`is_official`/`is_purchased`.
## 2. Score detail
```
GET https://musescore.com/user/<userId>/scores/<scoreId>
```
```sh
fpx get 'https://musescore.com/user/12345/scores/67890' -p musescore > /tmp/score.html
node extract-store.js license --object < /tmp/score.html \skill-card.md
## Description: Queries MuseScore search results, score metadata, and official download links through a paired browser tab using the fpx CLI instead of an MCP server. This skill is ready for commercial/non-commercial use. ## Publisher: [chrischall](https://clawhub.ai/user/chrischall) ### License/Terms of Use: MIT-0 ## Use Case: Developers and agents use this skill to search MuseScore, inspect score and license metadata, and resolve official download links in shell workflows without running the MuseScore MCP server. ### Deployment Geography for Use: Global ## Known Risks and Mitigations: Risk: Approved bridge pairing persists, so later fpx calls can reuse access to the MuseScore browser tab. Mitigation: Verify the extension source, use a dedicated browser profile or minimally privileged tab, and revoke or reset pairing when no longer needed. Risk: A resolved score download URL does not guarantee access to the file. Mitigation: Check is_free or hasAccess before opening the official link in the browser; do not automate purchases. ## Reference(s): - [MuseScore FPX on ClawHub](https://clawhub.ai/chrischall/skills/musescore-fpx) - [MuseScore endpoint guide](references/endpoints.md) - [ContextMint Bridge releases](https://github.com/nullnet-app/contextmint-bridge/releases) ## Skill Output: **Output Type(s):** [Shell commands, JSON, Guidance] **Output Format:** [Markdown with shell commands and JSON examples] **Output Parameters:** [1D] **Other Properties Related to Output:** [Resolves official download URLs but does not download score files through fpx.] ## Skill Version(s): 1.1.8 (source: ClawHub release metadata) ## Ethical Considerations: Users should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/chrischall/skills/musescore-fpx",
"sourceUrl": "https://clawhub.ai/chrischall/skills/musescore-fpx",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T09:45:18.893Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-musescore-fpx/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-musescore-fpx/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-10T09:45:18.893Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.5K downloads",
"href": "https://clawhub.ai/chrischall/musescore-fpx",
"sourceUrl": "https://clawhub.ai/chrischall/musescore-fpx",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T09:45:18.893Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.1.8",
"href": "https://clawhub.ai/chrischall/musescore-fpx",
"sourceUrl": "https://clawhub.ai/chrischall/musescore-fpx",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-09T23:24:38.525Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-musescore-fpx/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-musescore-fpx/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.1.8",
"description": "- Removed the file: skill-card.md - No other changes to features or documentation.",
"href": "https://clawhub.ai/chrischall/musescore-fpx",
"sourceUrl": "https://clawhub.ai/chrischall/musescore-fpx",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-09T23:24:38.525Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
