@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.
Files changed (81) hide show
  1. package/CHANGELOG.md +124 -0
  2. package/dist/lib/changelog.generated.d.ts +2 -2
  3. package/dist/lib/changelog.generated.d.ts.map +1 -1
  4. package/dist/lib/changelog.generated.js +2 -2
  5. package/dist/lib/changelog.generated.js.map +1 -1
  6. package/dist/resources/agent-guide.d.ts +1 -1
  7. package/dist/resources/agent-guide.d.ts.map +1 -1
  8. package/dist/resources/agent-guide.js +1 -3
  9. package/dist/resources/agent-guide.js.map +1 -1
  10. package/dist/resources/index.d.ts.map +1 -1
  11. package/dist/resources/index.js.map +1 -1
  12. package/dist/resources/required-schemas.generated.d.ts +5 -1
  13. package/dist/resources/required-schemas.generated.d.ts.map +1 -1
  14. package/dist/resources/required-schemas.generated.js +9 -1
  15. package/dist/resources/required-schemas.generated.js.map +1 -1
  16. package/dist/resources/required-schemas.source.d.ts.map +1 -1
  17. package/dist/resources/required-schemas.source.js +7 -1
  18. package/dist/resources/required-schemas.source.js.map +1 -1
  19. package/dist/server-instructions.d.ts +2 -2
  20. package/dist/server-instructions.d.ts.map +1 -1
  21. package/dist/server-instructions.js +1 -1
  22. package/dist/skills/skills.generated.js +3 -3
  23. package/dist/skills/skills.generated.js.map +1 -1
  24. package/dist/tools/audio-files.js +1 -1
  25. package/dist/tools/audio-files.js.map +1 -1
  26. package/dist/tools/credits.d.ts +11 -0
  27. package/dist/tools/credits.d.ts.map +1 -1
  28. package/dist/tools/credits.js +161 -0
  29. package/dist/tools/credits.js.map +1 -1
  30. package/dist/tools/dashboard.d.ts +6 -1
  31. package/dist/tools/dashboard.d.ts.map +1 -1
  32. package/dist/tools/dashboard.js +28 -29
  33. package/dist/tools/dashboard.js.map +1 -1
  34. package/dist/tools/discovery.d.ts +3 -3
  35. package/dist/tools/discovery.d.ts.map +1 -1
  36. package/dist/tools/discovery.js +12 -19
  37. package/dist/tools/discovery.js.map +1 -1
  38. package/dist/tools/duplicates.d.ts +11 -0
  39. package/dist/tools/duplicates.d.ts.map +1 -1
  40. package/dist/tools/duplicates.js +66 -2
  41. package/dist/tools/duplicates.js.map +1 -1
  42. package/dist/tools/explainability.d.ts.map +1 -1
  43. package/dist/tools/explainability.js +3 -1
  44. package/dist/tools/explainability.js.map +1 -1
  45. package/dist/tools/exports.js +1 -1
  46. package/dist/tools/exports.js.map +1 -1
  47. package/dist/tools/import.d.ts.map +1 -1
  48. package/dist/tools/import.js +5 -3
  49. package/dist/tools/import.js.map +1 -1
  50. package/dist/tools/index.d.ts +9 -0
  51. package/dist/tools/index.d.ts.map +1 -1
  52. package/dist/tools/index.js +9 -14
  53. package/dist/tools/index.js.map +1 -1
  54. package/dist/tools/labels.d.ts.map +1 -1
  55. package/dist/tools/labels.js +40 -2
  56. package/dist/tools/labels.js.map +1 -1
  57. package/dist/tools/metadata.d.ts.map +1 -1
  58. package/dist/tools/metadata.js +28 -38
  59. package/dist/tools/metadata.js.map +1 -1
  60. package/dist/tools/my-reported-issues.d.ts +1 -1
  61. package/dist/tools/party-claims.d.ts +22 -0
  62. package/dist/tools/party-claims.d.ts.map +1 -0
  63. package/dist/tools/party-claims.js +133 -0
  64. package/dist/tools/party-claims.js.map +1 -0
  65. package/dist/tools/recording-custody.d.ts +7 -3
  66. package/dist/tools/recording-custody.d.ts.map +1 -1
  67. package/dist/tools/recording-custody.js +25 -9
  68. package/dist/tools/recording-custody.js.map +1 -1
  69. package/dist/tools/recovery-hints.d.ts.map +1 -1
  70. package/dist/tools/recovery-hints.js +52 -22
  71. package/dist/tools/recovery-hints.js.map +1 -1
  72. package/dist/tools/releases.js +1 -1
  73. package/dist/tools/releases.js.map +1 -1
  74. package/dist/tools/uploads.d.ts.map +1 -1
  75. package/dist/tools/uploads.js +6 -5
  76. package/dist/tools/uploads.js.map +1 -1
  77. package/dist/tools/works.d.ts.map +1 -1
  78. package/dist/tools/works.js +26 -3
  79. package/dist/tools/works.js.map +1 -1
  80. package/package.json +1 -1
  81. 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