@withpica/mcp-server 2.97.5 → 2.98.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +125 -0
- package/README.intro.md +1 -1
- package/README.md +7 -3
- package/dist/lib/changelog.generated.d.ts +2 -2
- package/dist/lib/changelog.generated.d.ts.map +1 -1
- package/dist/lib/changelog.generated.js +2 -2
- package/dist/lib/changelog.generated.js.map +1 -1
- package/dist/prompts/creator-question-atlas.d.ts.map +1 -1
- package/dist/prompts/creator-question-atlas.js +23 -0
- package/dist/prompts/creator-question-atlas.js.map +1 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +17 -20
- package/dist/prompts/index.js.map +1 -1
- package/dist/resources/agent-guide.d.ts.map +1 -1
- package/dist/resources/agent-guide.js +3 -1
- package/dist/resources/agent-guide.js.map +1 -1
- package/dist/resources/required-schemas.generated.d.ts +7 -5
- package/dist/resources/required-schemas.generated.d.ts.map +1 -1
- package/dist/resources/required-schemas.generated.js +14 -2
- package/dist/resources/required-schemas.generated.js.map +1 -1
- package/dist/resources/required-schemas.source.d.ts.map +1 -1
- package/dist/resources/required-schemas.source.js +8 -1
- package/dist/resources/required-schemas.source.js.map +1 -1
- package/dist/server-instructions.d.ts +2 -2
- package/dist/server-instructions.d.ts.map +1 -1
- package/dist/server-instructions.js +1 -1
- package/dist/skills/skills.generated.js +5 -5
- package/dist/skills/skills.generated.js.map +1 -1
- package/dist/tools/agreement-types.d.ts.map +1 -1
- package/dist/tools/agreement-types.js +3 -1
- package/dist/tools/agreement-types.js.map +1 -1
- package/dist/tools/agreements.d.ts.map +1 -1
- package/dist/tools/agreements.js +15 -6
- package/dist/tools/agreements.js.map +1 -1
- package/dist/tools/approvals.d.ts.map +1 -1
- package/dist/tools/approvals.js +14 -1
- package/dist/tools/approvals.js.map +1 -1
- package/dist/tools/arg-aliases.d.ts.map +1 -1
- package/dist/tools/arg-aliases.js +12 -0
- package/dist/tools/arg-aliases.js.map +1 -1
- package/dist/tools/audio-files.d.ts +39 -0
- package/dist/tools/audio-files.d.ts.map +1 -1
- package/dist/tools/audio-files.js +253 -12
- package/dist/tools/audio-files.js.map +1 -1
- package/dist/tools/catalog-enums.d.ts +20 -0
- package/dist/tools/catalog-enums.d.ts.map +1 -0
- package/dist/tools/catalog-enums.js +28 -0
- package/dist/tools/catalog-enums.js.map +1 -0
- package/dist/tools/credits.d.ts.map +1 -1
- package/dist/tools/credits.js +64 -4
- package/dist/tools/credits.js.map +1 -1
- package/dist/tools/custody-hints.js +2 -2
- package/dist/tools/custody-hints.js.map +1 -1
- package/dist/tools/custody.d.ts.map +1 -1
- package/dist/tools/custody.js +4 -1
- package/dist/tools/custody.js.map +1 -1
- package/dist/tools/deprecations.d.ts +2 -1
- package/dist/tools/deprecations.d.ts.map +1 -1
- package/dist/tools/deprecations.js +27 -11
- package/dist/tools/deprecations.js.map +1 -1
- package/dist/tools/directory.js +2 -2
- package/dist/tools/directory.js.map +1 -1
- package/dist/tools/discovery.d.ts.map +1 -1
- package/dist/tools/discovery.js +13 -3
- package/dist/tools/discovery.js.map +1 -1
- package/dist/tools/duplicates.d.ts.map +1 -1
- package/dist/tools/duplicates.js +66 -18
- package/dist/tools/duplicates.js.map +1 -1
- package/dist/tools/enrichment.d.ts.map +1 -1
- package/dist/tools/enrichment.js +36 -2
- package/dist/tools/enrichment.js.map +1 -1
- package/dist/tools/import.d.ts.map +1 -1
- package/dist/tools/import.js +19 -0
- package/dist/tools/import.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +44 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/licensing.d.ts.map +1 -1
- package/dist/tools/licensing.js +14 -9
- package/dist/tools/licensing.js.map +1 -1
- package/dist/tools/metadata.d.ts.map +1 -1
- package/dist/tools/metadata.js +52 -12
- package/dist/tools/metadata.js.map +1 -1
- package/dist/tools/notes.d.ts.map +1 -1
- package/dist/tools/notes.js +28 -5
- package/dist/tools/notes.js.map +1 -1
- package/dist/tools/people.d.ts +5 -1
- package/dist/tools/people.d.ts.map +1 -1
- package/dist/tools/people.js +8 -1
- package/dist/tools/people.js.map +1 -1
- package/dist/tools/purchases.d.ts +2 -3
- package/dist/tools/purchases.d.ts.map +1 -1
- package/dist/tools/purchases.js.map +1 -1
- package/dist/tools/recording-attribution-hints.js +1 -1
- package/dist/tools/recording-attribution-hints.js.map +1 -1
- package/dist/tools/recording-custody.d.ts +3 -1
- package/dist/tools/recording-custody.d.ts.map +1 -1
- package/dist/tools/recording-custody.js +8 -4
- package/dist/tools/recording-custody.js.map +1 -1
- package/dist/tools/recovery-hints.d.ts +0 -6
- package/dist/tools/recovery-hints.d.ts.map +1 -1
- package/dist/tools/recovery-hints.js +73 -15
- package/dist/tools/recovery-hints.js.map +1 -1
- package/dist/tools/register.d.ts.map +1 -1
- package/dist/tools/register.js +2 -1
- package/dist/tools/register.js.map +1 -1
- package/dist/tools/releases.d.ts.map +1 -1
- package/dist/tools/releases.js +7 -4
- package/dist/tools/releases.js.map +1 -1
- package/dist/tools/rights.d.ts +45 -0
- package/dist/tools/rights.d.ts.map +1 -0
- package/dist/tools/rights.js +302 -0
- package/dist/tools/rights.js.map +1 -0
- package/dist/tools/royalties.d.ts +24 -1
- package/dist/tools/royalties.d.ts.map +1 -1
- package/dist/tools/royalties.js +99 -66
- package/dist/tools/royalties.js.map +1 -1
- package/dist/tools/section-validation.d.ts +14 -0
- package/dist/tools/section-validation.d.ts.map +1 -0
- package/dist/tools/section-validation.js +68 -0
- package/dist/tools/section-validation.js.map +1 -0
- package/dist/tools/selections.d.ts +5 -2
- package/dist/tools/selections.d.ts.map +1 -1
- package/dist/tools/selections.js +10 -4
- package/dist/tools/selections.js.map +1 -1
- package/dist/tools/share-links.d.ts.map +1 -1
- package/dist/tools/share-links.js +32 -6
- package/dist/tools/share-links.js.map +1 -1
- package/dist/tools/share-send.d.ts.map +1 -1
- package/dist/tools/share-send.js +32 -7
- package/dist/tools/share-send.js.map +1 -1
- package/dist/tools/signed-split-sheet-preview.d.ts +43 -0
- package/dist/tools/signed-split-sheet-preview.d.ts.map +1 -0
- package/dist/tools/signed-split-sheet-preview.js +67 -0
- package/dist/tools/signed-split-sheet-preview.js.map +1 -0
- package/dist/tools/split-sheets.d.ts.map +1 -1
- package/dist/tools/split-sheets.js +3 -2
- package/dist/tools/split-sheets.js.map +1 -1
- package/dist/tools/works.d.ts +9 -1
- package/dist/tools/works.d.ts.map +1 -1
- package/dist/tools/works.js +194 -64
- package/dist/tools/works.js.map +1 -1
- package/dist/tools/write-receipt.d.ts +68 -0
- package/dist/tools/write-receipt.d.ts.map +1 -0
- package/dist/tools/write-receipt.js +64 -0
- package/dist/tools/write-receipt.js.map +1 -0
- package/package.json +4 -4
- package/scripts/build-required-schemas.ts +7 -1
- package/server.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,131 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
11
11
|
|
|
12
12
|
## [Unreleased]
|
|
13
13
|
|
|
14
|
+
## [2.98.0] - 2026-09-29
|
|
15
|
+
|
|
16
|
+
### Deprecated
|
|
17
|
+
|
|
18
|
+
- The 11 deprecated aliases scheduled for removal in 2.98.0 (among them
|
|
19
|
+
`pica_releases_list`, `pica_documents_list`, `pica_notes_list` and
|
|
20
|
+
`pica_royalties_summary`) stay one more version. They are now due for
|
|
21
|
+
removal in **2.99.0**. Each still answers and names its replacement.
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- **`disambiguation` on `pica_works_create` / `pica_works_update`** — a short
|
|
26
|
+
note (≤ 200 characters, e.g. "theme", "2019 song") that tells apart two
|
|
27
|
+
DIFFERENT songs sharing a title and primary artist. It is part of the
|
|
28
|
+
duplicate check, so set it only when the songs genuinely differ; a
|
|
29
|
+
`WORK_ALREADY_EXISTS` refusal for a song you know is not the existing one is
|
|
30
|
+
the cue. The refusal message and its recovery hint now name both ways
|
|
31
|
+
through: merge when it is the same song, `disambiguation` when it is not.
|
|
32
|
+
`null` or `""` clears it. Also accepted by `pica_works_bulk_update`, which
|
|
33
|
+
shares the works write schema.
|
|
34
|
+
- **`score` work type** — music composed for film, TV, games or other
|
|
35
|
+
picture. Offered wherever `work_type` is (`pica_works_create`,
|
|
36
|
+
`pica_works_update`, `pica_works_bulk_update`, `pica_works_query`,
|
|
37
|
+
`pica_register_set`).
|
|
38
|
+
|
|
39
|
+
- **Programmable rights — `pica_rights_propose`, `pica_rights_status`,
|
|
40
|
+
`pica_rights_inspect`** (ADR-321 §9, Phase 2). Agents propose, humans
|
|
41
|
+
confirm. `pica_rights_propose` proposes a song rule, a recording's master
|
|
42
|
+
rule, or a share rule that divides one party's share (a publishing deal, a
|
|
43
|
+
manager's commission with an end date), and emails every party it affects to
|
|
44
|
+
confirm. It never activates or confirms anything and never moves money.
|
|
45
|
+
Tier `destructive`, `approvalMode: "human"`, scope `write:catalog`: a
|
|
46
|
+
delegated agent's call becomes a pending approval for the org owner (poll
|
|
47
|
+
`pica_approval_status`), replayed through the same propose service the route
|
|
48
|
+
uses. Shares are basis points (100 = 1%; a share rule's parties sum to
|
|
49
|
+
10,000). A refusal writes nothing and returns its reasons. A master rule
|
|
50
|
+
needs `ownership` — the user's answer to "who owns the master of this
|
|
51
|
+
recording?" (`only_me` / `me_and_others` / `someone_else`) — and locks only
|
|
52
|
+
after every owner signs the recording's master ownership sheet; an agent can
|
|
53
|
+
never lock "only me" in one step.
|
|
54
|
+
`pica_rights_status` (`read:catalog`) reads one rule: status, who has
|
|
55
|
+
confirmed this exact version, and email delivery. `pica_rights_inspect`
|
|
56
|
+
(`read:catalog`) reads a song's rules on both sides, version history,
|
|
57
|
+
disputes, and the holds — what money would be held, why, and who clears it.
|
|
58
|
+
No amounts yet; holds are PICA's rules, not a society's.
|
|
59
|
+
- **`pica_royalties_blockers` — "why isn't this song being paid?"** (ADR-321
|
|
60
|
+
Phase 0). With `work_id`: what in that song's record is likely holding up its
|
|
61
|
+
society income — missing ISWC, writers without an IPI or society membership,
|
|
62
|
+
shares not totalling 100%, disputed credits, no confirmed registration,
|
|
63
|
+
recordings without an ISRC — each with its fix. Without it: the catalogue
|
|
64
|
+
summary plus the songs that are not clear, filterable by blocker and paged.
|
|
65
|
+
Same judgement as the `/inspect` song panel and `/inspect/money`. Scope
|
|
66
|
+
`read:catalog` (no amounts). The description and result message never call a
|
|
67
|
+
song clear unless every area was checked; unchecked areas are named.
|
|
68
|
+
- **`pica_audio_bulk_update` — metadata for up to 200 audio files in one
|
|
69
|
+
call** (ops 5c53049a). Each item sets any of `file_type`, `stem_label`,
|
|
70
|
+
`version_label`, `title` for one file id; the result is one lean row per
|
|
71
|
+
item (`updated`, or `failed` with a reason) and never the file records. A bad
|
|
72
|
+
item does not stop the others. `dry_run: true` previews. Only the caller's
|
|
73
|
+
organisation's files are touched.
|
|
74
|
+
- **`pica_share_links_create` takes `selection_id`** — share every work a saved
|
|
75
|
+
selection matches as one playlist link (a snapshot; the link does not follow
|
|
76
|
+
later changes to the selection). Refused when the selection matches no works
|
|
77
|
+
or more than 200 (ops 42be8f96).
|
|
78
|
+
- **`pica_share_links_create` takes `allow_view_lyrics`**, and its description
|
|
79
|
+
now tells agents that lyrics, credits (`allow_view_collaborators`) and splits
|
|
80
|
+
(`allow_view_financials`) are hidden unless turned on.
|
|
81
|
+
- **`pica_audio_query` takes `work_ids`** (up to 100) — the audio for several
|
|
82
|
+
works in one paged call, including files attached through a recording of
|
|
83
|
+
those works (ops 96672119).
|
|
84
|
+
|
|
85
|
+
### Changed
|
|
86
|
+
|
|
87
|
+
- **Playlist share links now record `include_all_files: true` by default**
|
|
88
|
+
(unless `included_file_ids` names a subset), matching what the playlist page
|
|
89
|
+
already shows — every version of each song, for the recipient to choose.
|
|
90
|
+
- **`pica_audio_update` and `pica_audio_assign` return the lean list row**
|
|
91
|
+
(the shape a `pica_audio_query` row has) instead of the full stored record
|
|
92
|
+
with its waveform and fingerprint data — about 8k tokens a file (ops
|
|
93
|
+
5c53049a).
|
|
94
|
+
- **`pica_works_update` answers with a compact receipt** (ops 61ce1dcc): the
|
|
95
|
+
work id, `changed` (each field sent, with the value now stored),
|
|
96
|
+
`unconfirmed` for fields the stored record did not echo, and an `integrity`
|
|
97
|
+
block listing every open gap by label and code but hinting only the gaps
|
|
98
|
+
this write opened. It no longer returns the full work (lyrics included) or
|
|
99
|
+
repeats every open gap as "next steps" on each call. Pass `verbose: true` for
|
|
100
|
+
the previous answer.
|
|
101
|
+
- **`pica_credits_update` answers in the same shape**: `work_id`,
|
|
102
|
+
`changed.credits` (person, role, share as written) and `saved` (the save
|
|
103
|
+
count and any skipped rows). `verbose: true` returns the raw save result.
|
|
104
|
+
|
|
105
|
+
### Deprecated
|
|
106
|
+
|
|
107
|
+
- **`pica_royalties_summary` retired in favour of `pica_royalties_blockers`**
|
|
108
|
+
(founder decision, 2026-09-25). It ran its own gap judgement — PRS, PPL and
|
|
109
|
+
MCPS hard-coded, a missing row read as "not registered with PRS", only the
|
|
110
|
+
first 1,000 works. It stays callable as a silent alias until 2.98.0: calls
|
|
111
|
+
now return `pica_royalties_blockers`' answer (`work_id` and `limit` carry
|
|
112
|
+
over; `gap_type` and `priority` have no equivalent). No longer listed in
|
|
113
|
+
discovery. Unmatched payments remain `pica_royalties_unmatched`. Traffic: 2
|
|
114
|
+
calls from 2 organisations in the 90 days before retirement.
|
|
115
|
+
|
|
116
|
+
### Fixed
|
|
117
|
+
|
|
118
|
+
- The "how much has this song earned?" prompt told agents to call
|
|
119
|
+
`pica_royalties_summary` for cumulative earnings; that tool never returned
|
|
120
|
+
earnings. It now names `pica_royalties_get`.
|
|
121
|
+
- **`pica_works_query` with `health_filter` honours `limit` and `offset`** and
|
|
122
|
+
stops reporting the page length as `total` (ops 314325eb).
|
|
123
|
+
`low_completeness` reports the number of works below the threshold by their
|
|
124
|
+
stored score (max 200 per page). `needs_attention` now returns only works with reconciliation problems
|
|
125
|
+
(it was returning reconciled works too), checks at most 50 works per call,
|
|
126
|
+
pages by works checked (`next_offset`), and reports `total` only when one
|
|
127
|
+
call from offset 0 checked every candidate (otherwise `null`).
|
|
128
|
+
- **An unknown `sections` name is refused instead of answering `{}`** (ops
|
|
129
|
+
dfa810f8). `pica_works_inspect { sections: ["work"] }` returned a
|
|
130
|
+
successful empty result; every tool with a fixed list of sections now
|
|
131
|
+
answers `VALIDATION_ERROR` naming the unknown entries and the valid ones.
|
|
132
|
+
- **`pica_people_create` / `pica_people_update` accept `ipi`** as the same
|
|
133
|
+
field as `cae_ipi_number` — the name the other tools use. Sending both with
|
|
134
|
+
different numbers is refused.
|
|
135
|
+
- **`work_type` is one list everywhere** — song, instrumental, library, demo,
|
|
136
|
+
sample, matching the database. `pica_works_update` refused `instrumental`
|
|
137
|
+
while create and bulk update accepted it.
|
|
138
|
+
|
|
14
139
|
## [2.97.5] - 2026-09-18
|
|
15
140
|
|
|
16
141
|
### Added
|
package/README.intro.md
CHANGED
|
@@ -78,7 +78,7 @@ Read tools are annotated read-only and are safe to call freely. Write tools repo
|
|
|
78
78
|
|
|
79
79
|
# @withpica/mcp-server-directory
|
|
80
80
|
|
|
81
|
-
MCP server for the **withPICA public directory** —
|
|
81
|
+
MCP server for the **withPICA public directory** — search over works, recordings and creators that rights holders have chosen to publish, plus one write: sending a licensing enquiry to an owner, when the user asks. Also hosted, no install: connect a remote MCP client to `https://withpica.com/api/mcp/directory`. No account, no API key, no setup.
|
|
82
82
|
|
|
83
83
|
## Install
|
|
84
84
|
|
package/README.md
CHANGED
|
@@ -65,7 +65,7 @@ Read tools are annotated read-only and are safe to call freely. Write tools repo
|
|
|
65
65
|
|
|
66
66
|
## Tools
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
341 tools, grouped below by the taxonomy `pica_discover` uses. The server's own `tools/list` is authoritative — not every registered tool is filed under a category yet, so the names below are a map, not a census.
|
|
69
69
|
|
|
70
70
|
**works** — manage your musical works
|
|
71
71
|
|
|
@@ -101,7 +101,7 @@ Read tools are annotated read-only and are safe to call freely. Write tools repo
|
|
|
101
101
|
|
|
102
102
|
**audio** — manage and analyze audio files
|
|
103
103
|
|
|
104
|
-
`pica_audio_query`, `pica_audio_inspect`, `pica_audio_presigned_upload`, `pica_audio_complete_upload`, `pica_audio_analyze`, `pica_audio_identify`, `pica_audio_assign`, `pica_audio_bulk_assign_suggested`, `pica_audio_dismiss_match`, `pica_audio_update`, `pica_audio_delete`, `pica_upload`, `pica_audio_pipeline_status`
|
|
104
|
+
`pica_audio_query`, `pica_audio_inspect`, `pica_audio_presigned_upload`, `pica_audio_complete_upload`, `pica_audio_analyze`, `pica_audio_identify`, `pica_audio_assign`, `pica_audio_bulk_assign_suggested`, `pica_audio_dismiss_match`, `pica_audio_update`, `pica_audio_bulk_update`, `pica_audio_delete`, `pica_upload`, `pica_audio_pipeline_status`
|
|
105
105
|
|
|
106
106
|
**projects** — manage albums, EPs, and work groupings
|
|
107
107
|
|
|
@@ -233,7 +233,11 @@ Read tools are annotated read-only and are safe to call freely. Write tools repo
|
|
|
233
233
|
|
|
234
234
|
**royalties statements** — view royalties and ingested statements
|
|
235
235
|
|
|
236
|
-
`
|
|
236
|
+
`pica_royalties_list`, `pica_royalties_get`, `pica_statements_query`, `pica_statements_inspect`, `pica_ingest_statement`, `pica_statements_pending`, `pica_statement_ingest_document`, `pica_royalties_blockers`, `pica_royalties_unmatched`, `pica_royalties_attribute`
|
|
237
|
+
|
|
238
|
+
**rights** — programmable rights — propose a song, master or share rule for the parties to confirm, check who has confirmed, and see what money would be held and why
|
|
239
|
+
|
|
240
|
+
`pica_rights_inspect`, `pica_rights_status`, `pica_rights_propose`
|
|
237
241
|
|
|
238
242
|
**selections** — save, recall, and resolve named catalog selections — persisted predicates over the catalogue with an honest coverage report
|
|
239
243
|
|