@withpica/mcp-server 2.72.0 → 2.73.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 +124 -0
- 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/resources/agent-guide.d.ts +1 -1
- package/dist/resources/agent-guide.d.ts.map +1 -1
- package/dist/resources/agent-guide.js +1 -3
- package/dist/resources/agent-guide.js.map +1 -1
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js.map +1 -1
- package/dist/resources/required-schemas.generated.d.ts +5 -1
- package/dist/resources/required-schemas.generated.d.ts.map +1 -1
- package/dist/resources/required-schemas.generated.js +9 -1
- 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 +7 -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 +3 -3
- package/dist/skills/skills.generated.js.map +1 -1
- package/dist/tools/audio-files.js +1 -1
- package/dist/tools/audio-files.js.map +1 -1
- package/dist/tools/credits.d.ts +11 -0
- package/dist/tools/credits.d.ts.map +1 -1
- package/dist/tools/credits.js +161 -0
- package/dist/tools/credits.js.map +1 -1
- package/dist/tools/dashboard.d.ts +6 -1
- package/dist/tools/dashboard.d.ts.map +1 -1
- package/dist/tools/dashboard.js +28 -29
- package/dist/tools/dashboard.js.map +1 -1
- package/dist/tools/discovery.d.ts +3 -3
- package/dist/tools/discovery.d.ts.map +1 -1
- package/dist/tools/discovery.js +12 -19
- package/dist/tools/discovery.js.map +1 -1
- package/dist/tools/duplicates.d.ts +11 -0
- package/dist/tools/duplicates.d.ts.map +1 -1
- package/dist/tools/duplicates.js +66 -2
- package/dist/tools/duplicates.js.map +1 -1
- package/dist/tools/explainability.d.ts.map +1 -1
- package/dist/tools/explainability.js +3 -1
- package/dist/tools/explainability.js.map +1 -1
- package/dist/tools/exports.js +1 -1
- package/dist/tools/exports.js.map +1 -1
- package/dist/tools/import.d.ts.map +1 -1
- package/dist/tools/import.js +5 -3
- package/dist/tools/import.js.map +1 -1
- package/dist/tools/index.d.ts +9 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +9 -14
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/labels.d.ts.map +1 -1
- package/dist/tools/labels.js +40 -2
- package/dist/tools/labels.js.map +1 -1
- package/dist/tools/metadata.d.ts.map +1 -1
- package/dist/tools/metadata.js +28 -38
- package/dist/tools/metadata.js.map +1 -1
- package/dist/tools/my-reported-issues.d.ts +1 -1
- package/dist/tools/party-claims.d.ts +22 -0
- package/dist/tools/party-claims.d.ts.map +1 -0
- package/dist/tools/party-claims.js +133 -0
- package/dist/tools/party-claims.js.map +1 -0
- package/dist/tools/recording-custody.d.ts +7 -3
- package/dist/tools/recording-custody.d.ts.map +1 -1
- package/dist/tools/recording-custody.js +25 -9
- package/dist/tools/recording-custody.js.map +1 -1
- package/dist/tools/recovery-hints.d.ts.map +1 -1
- package/dist/tools/recovery-hints.js +52 -22
- package/dist/tools/recovery-hints.js.map +1 -1
- package/dist/tools/releases.js +1 -1
- package/dist/tools/releases.js.map +1 -1
- package/dist/tools/uploads.d.ts.map +1 -1
- package/dist/tools/uploads.js +6 -5
- package/dist/tools/uploads.js.map +1 -1
- package/dist/tools/works.d.ts.map +1 -1
- package/dist/tools/works.js +26 -3
- package/dist/tools/works.js.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -11,8 +11,44 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
11
11
|
|
|
12
12
|
## [Unreleased]
|
|
13
13
|
|
|
14
|
+
## [2.73.0] - 2026-06-12
|
|
15
|
+
|
|
16
|
+
ADR-264 WS2 verify-before-assert + the WS4 front-door prerequisite (bulk
|
|
17
|
+
recording credits) + ADR-268 WS1 party claims / WS2 identifier-based party
|
|
18
|
+
dedup / WS5 ownership transfer types + the ADR-267 calibrated-question voice
|
|
19
|
+
contract. Also removes the never-functional `pica_team_*` tools and the
|
|
20
|
+
long-deprecated `pica_dashboard_pulse`.
|
|
21
|
+
|
|
14
22
|
### Added
|
|
15
23
|
|
|
24
|
+
- **`pica_party_claim_invite` + `pica_party_claim_status`** — ADR-268 WS1
|
|
25
|
+
party org claim spine. `pica_party_claim_invite` sends an artist-anchored
|
|
26
|
+
claim invite for an unclaimed label/distributor/publisher organisation
|
|
27
|
+
(the user-supplied recipient email is the consent + identity anchor; the
|
|
28
|
+
single-use link redeems on the public claim landing — redemption makes the
|
|
29
|
+
claimant the org's owner, flips verification pending→verified and billing
|
|
30
|
+
hibernated→trial, and mints an active org-to-org connection with the
|
|
31
|
+
inviting catalog, never membership). Concurrent claims freeze both sides
|
|
32
|
+
as `disputed` for founder adjudication, and the tool says so instead of
|
|
33
|
+
pretending the email went out. `pica_party_claim_status` lists the claims
|
|
34
|
+
the calling org has sent with their lifecycle status. Registered in the
|
|
35
|
+
`labels` discovery category; tool count tripwire 282 → 284.
|
|
36
|
+
- **`pica_recording_credits_bulk_update`** — ADR-264 WS4 prerequisite. Apply
|
|
37
|
+
one credit set across many recordings in a single call: target a release
|
|
38
|
+
(`release_id` — every recording on its tracklist) or an explicit
|
|
39
|
+
`recording_ids` list, plus a `credits[]` batch (`credited_name` + `role`
|
|
40
|
+
per entry, optional `person_id` / `split_percentage` / `split_type` /
|
|
41
|
+
`notes`). One album's production credits stops being 30 sequential
|
|
42
|
+
per-recording calls. Existing (recording, credited name, role) rows are
|
|
43
|
+
skipped, never overwritten — re-running is safe; `dry_run: true` previews
|
|
44
|
+
the exact per-row `would_create` / `would_skip_existing` decision set the
|
|
45
|
+
execute path uses. Validation is all-or-nothing with per-problem detail
|
|
46
|
+
(invalid input applies NOTHING); application returns per-row
|
|
47
|
+
`created` / `skipped_existing` results. Caps: 100 recordings, 50 credits,
|
|
48
|
+
500 total rows per call. Backed by the new
|
|
49
|
+
`POST /api/admin/recording-credits/bulk` route (org-scoped at every step:
|
|
50
|
+
release, tracklist, recordings, and person_ids must all belong to the
|
|
51
|
+
caller's organisation).
|
|
16
52
|
- **`pica_works_verify_registrations`** — ADR-264 WS2 truthful diagnosis. Verify
|
|
17
53
|
the registration status of up to 25 works. `mode: "check"` looks each work up
|
|
18
54
|
at the MLC (ISWC → title + writer IPI → title + primary-artist name) and
|
|
@@ -26,6 +62,94 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
26
62
|
now carry an `evidence` block (`unverified_absent` / `verified_absent` /
|
|
27
63
|
`user_confirmed_absent` with `verified_via` + `checked_at`) reflecting these
|
|
28
64
|
assertions.
|
|
65
|
+
- **`unconnected_collaborators`** attention class (taxonomy gap, f0266f09
|
|
66
|
+
gap #6): people credited on the org's works with no linked PICA account now
|
|
67
|
+
appear on `pica_dashboard_attention` / briefing totals / `pica_count_explain`
|
|
68
|
+
— one shared compute with `briefing.unconnected_collaborators` so the
|
|
69
|
+
surfaces structurally cannot drift. drill_down_skill null until a skill
|
|
70
|
+
covers collaborator connection.
|
|
71
|
+
- **Decision blocks (calibrated questions)** — `pica_find_duplicates` groups,
|
|
72
|
+
the `pica_merge_duplicates` MERGE_BLOCKED_PROVENANCE error, and
|
|
73
|
+
`pica_works_verify_registrations` mode:"check" (when works couldn't be
|
|
74
|
+
verified) now carry a `decision` field: a question with 2-3 options,
|
|
75
|
+
plain-language consequences, and a safe default — no UUIDs in any decision
|
|
76
|
+
text (a UUID-shaped title degrades by omitting the block, never failing the
|
|
77
|
+
call). Always additive: the structured payload carries everything the block
|
|
78
|
+
says. `pica_dashboard_briefing` now carries `user_message` — one
|
|
79
|
+
ready-to-say lowercase sentence in the curiosity register (no loss framing
|
|
80
|
+
on unverified counts).
|
|
81
|
+
|
|
82
|
+
### Changed
|
|
83
|
+
|
|
84
|
+
- **`pica_recording_custody_assign`** — ownership transfer types are live
|
|
85
|
+
(ADR-268 WS5, the ADR-262 fast-follow): `transfer_type` now accepts
|
|
86
|
+
`assignment` (title transfers) and `full_transfer` (ownership AND control)
|
|
87
|
+
alongside the v1 control/possession types. An ownership leg also moves the
|
|
88
|
+
recording's master ownership splits append-only in the same transaction —
|
|
89
|
+
the transferor's active era closes (`end_date`), the transferee's opens —
|
|
90
|
+
and the credit layer never moves. Honest-gap refusals (400, typed codes):
|
|
91
|
+
a partial percentage with more than one active owner
|
|
92
|
+
(`PARTIAL_TRANSFER_AMBIGUOUS`), a transfer exceeding the transferor's
|
|
93
|
+
share (`INSUFFICIENT_TRANSFEROR_SHARE`), or a percentage outside (0,100]
|
|
94
|
+
(`INVALID_PERCENTAGE`) — nothing is ever silently lost.
|
|
95
|
+
- **`pica_labels_create`** accepts an optional `identifiers` object
|
|
96
|
+
(`musicbrainz_label_id` / `isni` / `label_code` / `discogs_label_id` /
|
|
97
|
+
`wikidata_id` / `deezer_label_id`) — ADR-268 WS2. Dedup is now
|
|
98
|
+
identifier-first: supplied identifiers resolve to the global label identity
|
|
99
|
+
and an org already bridged to that identity is returned
|
|
100
|
+
`already_existed: true` EVEN when the supplied name differs;
|
|
101
|
+
case-insensitive name matching (ADR-265 behaviour) stays as the fallback,
|
|
102
|
+
and a name-matched org missing the bridge is backfilled when an identity
|
|
103
|
+
was resolved. Param addition only — no new tool.
|
|
104
|
+
- **`first-session` skill** now carries the calibrated-question library (ADR-267
|
|
105
|
+
Step 1): open-over-closed decision questions, diagnosis labels, no-oriented
|
|
106
|
+
phrasing for destructive moves, options-with-consequences, evidence-gated
|
|
107
|
+
stakes, and a no-UUIDs-in-user-facing-text contract. Specialist skills adopt
|
|
108
|
+
the same grammar incrementally; the WS4 front-door skill embeds it at birth.
|
|
109
|
+
- **`pica_works_create` / `pica_works_update` `mood` param description** now
|
|
110
|
+
states the value is stored on the work's primary recording's audio traits
|
|
111
|
+
(recording-grain, ADR-266 Stage 2c) — caller contract unchanged.
|
|
112
|
+
|
|
113
|
+
### Fixed
|
|
114
|
+
|
|
115
|
+
- **Review-link contract** — server instructions told every agent to share
|
|
116
|
+
`withpica.com/workspace?type=<entity>&id=<id>` after writes; now the
|
|
117
|
+
schema-direct `/inspect/<feature>/<id>` shape (both byte-parity copies).
|
|
118
|
+
uploads/audio/exports tool descriptions point users at `/inspect`.
|
|
119
|
+
|
|
120
|
+
### Deprecated
|
|
121
|
+
|
|
122
|
+
- **`pica_import_from_spotify`** — use `pica_import_streaming_link` (same
|
|
123
|
+
two-step flow, also supports Deezer). Structured
|
|
124
|
+
`{deprecated, removal_target: "2.74.0"}` in TOOL_METADATA; the new
|
|
125
|
+
lint-mcp-tools deprecation-expiry check BLOCKS any publish at or past the
|
|
126
|
+
removal target, so this cannot overstay like pulse did.
|
|
127
|
+
- **`briefing.unverified_writers`** count source — `briefing.unenriched_writers`
|
|
128
|
+
is the canonical name (matches the actionable-issues taxonomy class); the
|
|
129
|
+
alias shares one definition and is accepted until 2.74.
|
|
130
|
+
|
|
131
|
+
### Removed
|
|
132
|
+
|
|
133
|
+
- **`pica_team_*` (all 5: `pica_team_list` / `pica_team_get` / `pica_team_invite`
|
|
134
|
+
/ `pica_team_update_role` / `pica_team_remove`)** — founder decision
|
|
135
|
+
2026-06-11. The backing routes (`/api/admin/team/*`) are session-only BY
|
|
136
|
+
DESIGN (ADR-248: team membership is human-only), so every bearer/MCP caller
|
|
137
|
+
has always received a hard 401 — the tools never worked for any agent and
|
|
138
|
+
never could. Removing them is honesty, not a regression: agents stop being
|
|
139
|
+
advertised a capability that structurally cannot succeed. Team membership
|
|
140
|
+
stays managed by humans in `/settings`. Also removed: the `team` discovery
|
|
141
|
+
category, the `pica_team_remove` destructive-confirmation case, recovery
|
|
142
|
+
hints, cost-model entries, and the `set-up-workspace` skill's Block 5 now
|
|
143
|
+
points users at `/settings` instead of the tools. Tool count tripwire
|
|
144
|
+
287 → 282; destructive tripwire 20 → 19.
|
|
145
|
+
- **`pica_dashboard_pulse`** — deprecated since ADR-247 with a removal window
|
|
146
|
+
that passed (prod telemetry: 3 calls all-time, exploratory).
|
|
147
|
+
`pica_dashboard_briefing` is the canonical attention surface; pulse's
|
|
148
|
+
revenue-at-risk/deadline predicates retired with it (they disagreed with
|
|
149
|
+
the briefing coherence contract). Tool count tripwire 288 → 287.
|
|
150
|
+
- **`suggested_skill`** alias dropped from `pica_dashboard_attention` rows
|
|
151
|
+
(deprecated 2026-05-22; soak window long passed; zero non-test consumers).
|
|
152
|
+
`drill_down_skill` is the canonical field.
|
|
29
153
|
|
|
30
154
|
## [2.72.0] - 2026-06-10
|
|
31
155
|
|