music-attribution-scaffold
Research scaffold for multi-source music attribution with transparent confidence scoring. Companion code to Teikari, Petteri. 2026. “Governing Generative Music: Attribution Limits, Platform Incentives, and the Future of Creator Income.” SSRN Scholarly Paper No. 6109087.
Install / Use
claude mcp add petteriTeikari -- npx -y github:petteriTeikari/music-attribution-scaffoldIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Education & ResearchSupported Platforms
Our assessment of music-attribution-scaffold
music-attribution-scaffold scores 69/100 on our quality scale, 420th of 447 Education & Research skills we index.
Its MCP Server is 47 KB long, well organised into 49 sections with 10 code examples: long enough that it reads more like full documentation than a focused instruction file, which agents can find harder to follow.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated about 8 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 86/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
music-attribution-scaffold compared with similar skills
All 4 of these similar skills score higher than music-attribution-scaffold; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| music-attribution-scaffold (this skill)by petteriTeikari | 69 | 3 | 8mo ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 106.6k | 5d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.3k | today | CLAUDE.md |
| last30days-skillby mvanhorn | 100 | 66.0k | 1d ago | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.7k | today | CLAUDE.md |
Frequently asked questions
- How do I install music-attribution-scaffold?
- Run
claude mcp add petteriTeikari -- npx -y github:petteriTeikari/music-attribution-scaffold. The install tabs above show the steps for each supported agent. - Which AI agents does music-attribution-scaffold work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is music-attribution-scaffold safe to use?
- It is MIT-licensed and scores 86/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is music-attribution-scaffold still maintained?
- The repository was last updated about 8 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
Skill content
View source on GitHubMusic Attribution Scaffold
<p align="center"> <a href="https://youtu.be/7wuUiH8YmSQ?si=6TwuK7evAKFHoi_i"> <img src="docs/figures/repo-figures/screenshots/youtube_demo.png" width="720" alt="Watch the 1-minute MVP demo on YouTube — confidence scoring, provenance timelines, and MCP permission queries in action." /> </a> </p> <p align="center"><strong>▶ <a href="https://youtu.be/7wuUiH8YmSQ?si=6TwuK7evAKFHoi_i">Watch the 1-minute demo</a></strong> · <strong>📄 <a href="https://dx.doi.org/10.2139/ssrn.6109087">Read the paper</a></strong> (supplementary material includes an annotated screenshot walkthrough)</p>Research-grade music attribution infrastructure with calibrated confidence scoring, multi-source entity resolution, and machine-readable consent.
<p align="center"> <img src="docs/figures/repo-figures/assets/fig-repo-01-hero-overview.jpg" width="720" alt="Overview of the Music Attribution Scaffold: editorial frontend with confidence gauges, assurance badges, review queue, and agentic sidebar for natural-language attribution queries across multi-source music metadata." /> </p> <p align="center"><em>The scaffold unifies fragmented music metadata into confidence-scored attribution records with transparent provenance.</em></p>Music metadata is broken — over 40% of records are incorrect or incomplete across databases that don't talk to each other. When generative AI adds millions of new tracks per month, knowing who made what becomes both a legal and economic emergency. This scaffold provides the open-source infrastructure to address it.
What It Does
| Capability | What It Means | Deep Dive |
|---|---|---|
| Multi-source ETL | Fetches and normalizes metadata from MusicBrainz, Discogs, AcoustID, audio file tags, and artist self-reports | src/music_attribution/etl/ · Docs |
| Entity resolution | 5-strategy cascade: identifiers → fuzzy strings → embeddings → graph → LLM disambiguation | src/music_attribution/resolution/ · Docs |
| Calibrated confidence | Per-field scores via conformal prediction — "90% confident" actually means ≥90% coverage | src/music_attribution/attribution/ · Docs |
| Permission patchbay | MCP server for machine-readable AI training consent (ALLOW / DENY / ASK) | src/music_attribution/mcp/ · Docs |
| Agentic UI | PydanticAI agent + CopilotKit sidebar for natural-language attribution queries | src/music_attribution/chat/ · Docs |
| Voice agent | Pipecat voice pipeline with 5-dimension persona, drift detection, and domain tools | src/music_attribution/voice/ · Guide |
| Editorial frontend | Next.js 15 with confidence gauges, assurance badges, review queue | frontend/ · Docs |
Entity resolution answers: "Is the 'Imogen Heap' in MusicBrainz the same person as 'I. Heap' in a Discogs release?" The cascade progresses from cheap/certain to expensive/uncertain:
- Identifier matching — Exact ISRC, ISWC, ISNI, or MBID match. Cheapest and most reliable.
- String similarity — Jaro-Winkler and token-sort ratio on canonical names and aliases. Handles typos and transliterations.
- Embedding similarity — Sentence-transformer embeddings compared via cosine similarity. Catches semantic equivalences that string metrics miss (e.g., "紫雨林" ↔ "Jaurim").
- Graph evidence — Shared collaborators, labels, or recordings boost match probability via Jaccard coefficient.
- LLM disambiguation — For remaining ambiguous cases, an LLM evaluates contextual evidence. Cost-gated and cached.
Each stage produces a confidence score. The cascade short-circuits: if Stage 1 finds a high-confidence match, Stages 2–5 are skipped.
References: Fellegi & Sunter (1969) — foundational probabilistic record linkage model; Papadakis et al. (2021) — modern entity resolution survey.
</details>Architecture
Five sequential pipelines connected by typed Pydantic boundary objects:
<p align="center"> <img src="docs/figures/repo-figures/assets/fig-repo-02-five-pipeline-architecture.jpg" width="720" alt="Architecture diagram: five-pipeline data flow for music attribution showing ETL ingestion from MusicBrainz and Discogs, entity resolution with fuzzy matching, transparent confidence scoring engine, FastAPI REST and MCP permission server, and PydanticAI chat interface." /> </p> I. ETL II. ENTITY III. ATTRIBUTION IV. API/MCP V. CHAT
PIPELINE RESOLUTION ENGINE
┌─────────┐ ┌─────────────┐ ┌────────────┐ ┌──────────┐ ┌──────┐
│ Discogs │ │ Fuzzy match │ │ Confidence │ │ FastAPI │ │ AI │
│ MBrainz │────▶│ + dedupe │───▶│ scoring + │────▶│ REST + │───▶│ Chat │
│ AcoustID│ │ + graph │ │ provenance │ │ MCP │ │ │
└─────────┘ └─────────────┘ └────────────┘ └──────────┘ └──────┘
│ │ │ │ │
NormalizedRecord ResolvedEntity AttributionRecord JSON + MCP AG-UI SSE
Cross-cutting: BatchEnvelope · DriftDetector · PipelineFeedback
Storage: PostgreSQL + pgvector
Each boundary crossing carries validation, confidence scores, and provenance metadata. Reverse feedback flows (dispute signals, recalibration requests) travel upstream via PipelineFeedback objects.
Full architecture docs: Architecture Overview · Backend Guide · docs/architecture/
Quick Start
Prerequisites
- Python 3.13+ and uv
- Docker and Docker Compose (for PostgreSQL + pgvector)
- Node.js 18+ and npm (for the frontend)
Setup
git clone https://github.com/petteriTeikari/music-attribution-scaffold.git
cd music-attribution-scaffold
# Install deps, start Docker, run migrations, seed Imogen Heap data
make setup
# Start the backend API + PostgreSQL
make dev
# → http://localhost:8000 (Swagger at /docs)
# In a second terminal: start the frontend
make dev-frontend
# → http://localhost:3000
# Or: full agentic UI (backend + CopilotKit sidebar)
make agent
<details>
<summary><strong>Environment variables</strong></summary>
| Variable | Required | Default | Purpose |
|---|---|---|---|
| DATABASE_URL | Yes | — | PostgreSQL connection string |
| ANTHROPIC_API_KEY | For agent | — | Anthropic API key for the PydanticAI agent |
| ATTRIBUTION_AGENT_MODEL | No | anthropic:claude-haiku-4-5 | PydanticAI model string |
| CORS_ORIGINS | No | http://localhost:3000 | Comma-separated CORS origins |
| NEXT_PUBLIC_API_URL | No | http://localhost:8000 | Backend URL for the frontend |
| LOG_LEVEL | No | INFO | Python logging level |
| ENVIRONMENT | No | development | Runtime environment |
Create a .env file in the project root, or export directly. See src/music_attribution/config.py for all options.
| Command | What It Does |
|---|---|
| make setup | Full setup: deps + Docker + migrations + seed data |
| make dev | Start backend API + PostgreSQL |
| make dev-frontend | Start frontend dev server |
| make agent | Start full agentic UI (backend + CopilotKit) |
| make test-local | Run 687 unit + 43 integration tests locally |
| make test | Run 744 tests in Docker (CI-parity) |
| make test-frontend | Run 560 Vitest tests + WCAG checks |
| make test-all | Full CI: lint + typecheck + backend + frontend |
| make lint-local | ruff check + ruff format --check |
| make typecheck | mypy (strict) |
| make test-cov | pytest with coverage report |
| make format | Auto-format with ruff |
Assurance Levels (A0–A3)
Every attribution carries an assurance level indicating verification depth. These are mapped to international music industry identifiers:
<p align="center"> <img src="docs/figures/repo-figures/assets/fig-frontend-05-assurance-badge-system.jpg" width="720" alt="Assurance badge system: four tiers from A0 (no data, unverified) through A1 (single source, ISRC), A2 (multi-source agreement, ISWC), to A3 (artist-verified identity, ISNI) showing progressive verification depth for music attribution." /> </p>| Level | Verification | Evidence | Typical Identifier | Example | |---|---|---|---|---| | A0 | None | Self-declared | — | "I wrote this song" (no external confirmation) | | A1 | Single source | One database confirms | ISRC | MusicBrainz lists the recording | | A2 | Multi-source | Independent sources agree | ISWC | MusicBrainz + Discogs + file metadata agree | | A3 | Identity-verified | Full provenance chain | ISNI / IPI | Artist self-report + ISNI + multiple databases |
<details> <summary><strong>How are assurance levels computed?</strong></summary>Assurance levels are determined by the entity resolution cascade and the number of independent sources that agree:
- A0: No external data available. The system has only what the user claimed.
- A1: Exactly one external source confirms (e.g., MusicBrainz has a matching ISRC). Confidence is moderate but un-corroborated.
- A2: Two or more independent sources produce consistent information. Cross-source agreement significantly increases confidence.
- A3: Identity-verified through a chain that includes artist self-report AND an identity standard (ISNI or IPI) AND at least one database match. This is the highest tier — reserved for attributions where the creator's identity is cryptographically or administratively confirmed.
The mapping between assurance levels and identifiers is project-defined and reflects industry best practices, not a formal standard.
Concept page: [Assurance Levels](https://petteriTeikari.github.io/music-a
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
106.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
78.3kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
last30days-skill
66.0kAI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary
CowAgent
47.7kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
