@withpica/mcp-server 2.91.1 → 2.93.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 (101) hide show
  1. package/CHANGELOG.md +147 -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/prompts/creator-question-atlas.d.ts.map +1 -1
  7. package/dist/prompts/creator-question-atlas.js +23 -0
  8. package/dist/prompts/creator-question-atlas.js.map +1 -1
  9. package/dist/resources/agent-guide.d.ts +1 -1
  10. package/dist/resources/agent-guide.d.ts.map +1 -1
  11. package/dist/resources/agent-guide.js +1 -1
  12. package/dist/resources/required-schemas.generated.d.ts +3 -11
  13. package/dist/resources/required-schemas.generated.d.ts.map +1 -1
  14. package/dist/resources/required-schemas.generated.js +5 -14
  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 +0 -10
  18. package/dist/resources/required-schemas.source.js.map +1 -1
  19. package/dist/skills/skills.generated.js +3 -3
  20. package/dist/skills/skills.generated.js.map +1 -1
  21. package/dist/tools/credits.d.ts.map +1 -1
  22. package/dist/tools/credits.js +16 -3
  23. package/dist/tools/credits.js.map +1 -1
  24. package/dist/tools/dashboard.d.ts.map +1 -1
  25. package/dist/tools/dashboard.js +20 -3
  26. package/dist/tools/dashboard.js.map +1 -1
  27. package/dist/tools/deprecations.d.ts +15 -1
  28. package/dist/tools/deprecations.d.ts.map +1 -1
  29. package/dist/tools/deprecations.js +41 -56
  30. package/dist/tools/deprecations.js.map +1 -1
  31. package/dist/tools/discovery.d.ts.map +1 -1
  32. package/dist/tools/discovery.js +10 -6
  33. package/dist/tools/discovery.js.map +1 -1
  34. package/dist/tools/duplicates.d.ts +2 -0
  35. package/dist/tools/duplicates.d.ts.map +1 -1
  36. package/dist/tools/duplicates.js +10 -2
  37. package/dist/tools/duplicates.js.map +1 -1
  38. package/dist/tools/enrichment.d.ts.map +1 -1
  39. package/dist/tools/enrichment.js +27 -12
  40. package/dist/tools/enrichment.js.map +1 -1
  41. package/dist/tools/import.d.ts.map +1 -1
  42. package/dist/tools/import.js +32 -3
  43. package/dist/tools/import.js.map +1 -1
  44. package/dist/tools/index.d.ts +1 -1
  45. package/dist/tools/index.d.ts.map +1 -1
  46. package/dist/tools/index.js +8 -1
  47. package/dist/tools/index.js.map +1 -1
  48. package/dist/tools/integrity-hints.d.ts +44 -0
  49. package/dist/tools/integrity-hints.d.ts.map +1 -0
  50. package/dist/tools/integrity-hints.js +33 -0
  51. package/dist/tools/integrity-hints.js.map +1 -0
  52. package/dist/tools/integrity.d.ts +32 -0
  53. package/dist/tools/integrity.d.ts.map +1 -0
  54. package/dist/tools/integrity.js +194 -0
  55. package/dist/tools/integrity.js.map +1 -0
  56. package/dist/tools/metadata.d.ts.map +1 -1
  57. package/dist/tools/metadata.js +30 -69
  58. package/dist/tools/metadata.js.map +1 -1
  59. package/dist/tools/notes.d.ts +4 -2
  60. package/dist/tools/notes.d.ts.map +1 -1
  61. package/dist/tools/notes.js +14 -25
  62. package/dist/tools/notes.js.map +1 -1
  63. package/dist/tools/people.d.ts +12 -0
  64. package/dist/tools/people.d.ts.map +1 -1
  65. package/dist/tools/people.js +29 -2
  66. package/dist/tools/people.js.map +1 -1
  67. package/dist/tools/projects.d.ts +4 -2
  68. package/dist/tools/projects.d.ts.map +1 -1
  69. package/dist/tools/projects.js +5 -24
  70. package/dist/tools/projects.js.map +1 -1
  71. package/dist/tools/recordings.d.ts.map +1 -1
  72. package/dist/tools/recordings.js +29 -3
  73. package/dist/tools/recordings.js.map +1 -1
  74. package/dist/tools/recovery-hints.d.ts.map +1 -1
  75. package/dist/tools/recovery-hints.js +14 -0
  76. package/dist/tools/recovery-hints.js.map +1 -1
  77. package/dist/tools/releases.d.ts.map +1 -1
  78. package/dist/tools/releases.js +24 -3
  79. package/dist/tools/releases.js.map +1 -1
  80. package/dist/tools/royalties.d.ts +15 -5
  81. package/dist/tools/royalties.d.ts.map +1 -1
  82. package/dist/tools/royalties.js +12 -43
  83. package/dist/tools/royalties.js.map +1 -1
  84. package/dist/tools/search.d.ts.map +1 -1
  85. package/dist/tools/search.js +20 -1
  86. package/dist/tools/search.js.map +1 -1
  87. package/dist/tools/sessions.d.ts +4 -2
  88. package/dist/tools/sessions.d.ts.map +1 -1
  89. package/dist/tools/sessions.js +4 -46
  90. package/dist/tools/sessions.js.map +1 -1
  91. package/dist/tools/share-links.d.ts +3 -2
  92. package/dist/tools/share-links.d.ts.map +1 -1
  93. package/dist/tools/share-links.js +5 -28
  94. package/dist/tools/share-links.js.map +1 -1
  95. package/dist/tools/sharing.js +1 -1
  96. package/dist/tools/sharing.js.map +1 -1
  97. package/dist/tools/works.d.ts.map +1 -1
  98. package/dist/tools/works.js +111 -15
  99. package/dist/tools/works.js.map +1 -1
  100. package/package.json +2 -2
  101. package/server.json +2 -2
package/CHANGELOG.md CHANGED
@@ -9,6 +9,153 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
  > matching entry here in the same commit. See the project's "npm publish
10
10
  > discipline" memory entry for the enforcement rationale.
11
11
 
12
+ ## [2.93.0] - 2026-07-12
13
+
14
+ ### Removed
15
+
16
+ - **WS5 removal sweep — 6 zero-traffic deprecated aliases DELETED** after a
17
+ 30-day prod-telemetry gate (`agent_events`): `pica_projects_get`,
18
+ `pica_notes_get`, `pica_sessions_list`, `pica_sessions_get`,
19
+ `pica_statements_get`, `pica_share_links_list`. Each had 0 calls in the last
20
+ 30 days in production. Their standalone `ToolDefinition`, `TOOL_METADATA`,
21
+ cost-model, discovery, and required-schemas rows were all removed; the shared
22
+ executors (getProject, getNote, listSessions, getSession, getStatement,
23
+ listShareLinks) stay because they back the canonical `_query` / `_inspect`
24
+ tools. The 10 deprecated aliases that still carry live traffic
25
+ (`pica_releases_list/_get`, `pica_releases_attach_track_by_identifier`,
26
+ `pica_releases_bulk_attach_tracks`, `pica_projects_list`, `pica_notes_list`,
27
+ `pica_documents_list/_read`, `pica_statements_list`,
28
+ `pica_recording_credits_bulk_update`) STAY callable — their `removal_target`
29
+ is consciously extended from 2.93.0 to 2.95.0 so the "expire loudly" lint
30
+ does not block this publish. Re-run the traffic gate before 2.95.0.
31
+
32
+ ### Changed
33
+
34
+ - **Royalty / statement read tools re-scoped to finance visibility.** The
35
+ `pica_royalties_*` read tools (`_list`, `_get`, `_summary`, `_unmatched`) and
36
+ the `pica_statements_query` / `_inspect` / `_list` reads move from
37
+ `read:catalog` to `read:finances`; `pica_royalties_attribute` moves from
38
+ `write:catalog` to `write:finances`. This aligns the MCP tool declaration
39
+ with the backing routes' `callerHasFinanceAccess` gate (#1623) and the proxy
40
+ bearer-write floor — gated callers are now filtered from `tools/list` at
41
+ discovery instead of getting a 403 after calling. `read:finances` /
42
+ `write:finances` are admin-tier (not user-grantable); admin satisfies both.
43
+
44
+ ### Added
45
+
46
+ - **`dossier` section on `pica_works_inspect`.** `sections: ["dossier"]`
47
+ returns the full song dossier — everything PICA holds about a song
48
+ (recordings, releases, composition credits, people, provenance, AI
49
+ disclosure, consent) in one structured payload, via
50
+ `WorksResource.dossier()` (SDK 3.7.0). Rendered as a compact one-line text
51
+ summary plus the full JSON under `structuredContent.data.dossier`. Opt-in
52
+ only (never part of the default all-sections response, as it is a heavy
53
+ superset); a downloadable PDF of the same dossier is available from the web
54
+ UI. Not a new tool — folded onto the existing inspect tool per the
55
+ tool-surface-consolidation preference so it rides the batched OpenAI
56
+ resubmission rather than forcing a new one.
57
+
58
+ ## [2.92.0] - 2026-07-09
59
+
60
+ ### Added
61
+
62
+ - **`pica_find_duplicates` (works) surfaces fuzzy near-title duplicate groups**
63
+ (WS4 agentic fixes, 2026-07-10). The backing service adds a conservative
64
+ Levenshtein pass (≥85% on version-stripped base titles ≥5 chars,
65
+ exclusion-aware, only among works no exact key grouped); groups arrive
66
+ labelled `match_kind: "fuzzy_title"` with a `similarity` score (exact-key
67
+ groups are labelled `match_kind: "exact"`), and fuzzy groups get a
68
+ confidence-honest decision question ("look very similar … are they the same
69
+ song?") with the safe default unchanged at "keep them separate". No
70
+ inputSchema change — the fields are additive on the existing response.
71
+ - **`pica_catalog_health_plan` / `pica_catalog_health_fix` can now carry two
72
+ new action shapes** (WS4): `merge_pair` with `preview.grain: "release"`
73
+ (duplicate releases by normalized UPC, survivor = oldest, applied via the
74
+ same engine as `pica_merge_duplicates`) and `normalize_work_splits`
75
+ (work-collaborator splits summing ≠ 100 proportionally rescaled to exactly
76
+ 100.00 — propose-only, per-collaborator before→after preview, live-row
77
+ recompute + post-apply verification at apply time). Replaces the previously
78
+ un-appliable work-grain `set_splits_to_template` emission. Tool descriptions
79
+ updated; schemas unchanged.
80
+
81
+ - **`pica_people_create` / `pica_people_update` gain `affiliation_kind` on
82
+ `society_affiliations` items and a new `origin_countries` field** (ADR-292).
83
+ `affiliation_kind` distinguishes a society the person is a current _member_
84
+ of from their home-country _origin_ society for that code (defaults to
85
+ `member`). `origin_countries` is an array of ISO 3166-1 alpha-2 heritage
86
+ countries — the creator's self-identified origin, stored on a real
87
+ `public.people` column and sanitized server-side.
88
+
89
+ - **New tool `pica_integrity_waive`** (registration integrity floor, PR
90
+ #1595). Waives a registration-integrity gap the user has confirmed is
91
+ intentional or unresolvable (cover writer, deceased collaborator,
92
+ unreleased demo) — requires explicit user confirmation, and waivers are
93
+ reversible. Completes the integrity-assess surface the write-tool
94
+ pressure hints and dashboard-briefing nag point at.
95
+
96
+ - **`pica_works_create` / `pica_recordings_create` gain a `create_twin`
97
+ flag + twin completion hints** (auto-twin, commit 689298e3c). The
98
+ backing create routes auto-mint the twin entity (work↔recording);
99
+ agents can now opt out via `create_twin: false`, and when a twin WAS
100
+ minted the executor appends a completion hint ("also created the
101
+ linked <recording|work> <id> — pass create_twin: false to skip").
102
+ Backed by the SDK's new `requestWithEnvelope()` so the routes'
103
+ `twin`/`twin_error` sibling fields survive the response unwrap.
104
+
105
+ ### Fixed
106
+
107
+ - **`pica_enrichment_proposals_list` failed 100% of real calls with
108
+ `UNEXPECTED_RESPONSE_SHAPE`** (since 2026-06-10; ops_issues
109
+ 18f25b41/20c76911). The route returns `{success, data: {proposals,
110
+ count, filters}}` and the SDK narrows to `.data`, so the tool receives
111
+ the OBJECT — the `Array.isArray` guard rejected every real response.
112
+ The tool now unwraps `.proposals` (guard retained for genuinely bad
113
+ shapes). The `pica_enrichment_proposals_bulk_reject` dry-run filter preview had
114
+ the sibling bug (normalised via a `.data` key that never exists —
115
+ always previewed 0 ids) and is fixed in the same stroke.
116
+ - **`pica_releases_detach_track` reported "preview — call again with
117
+ confirm:true" AFTER the delete executed** (ops_issue 0137b1b8,
118
+ user_feedback e6320d08). The tool checked `result.data.confirmed` on a
119
+ response the SDK had already unwrapped — always undefined — so an
120
+ executed destructive mutation rendered as a pending preview. Now checks
121
+ the unwrapped `{confirmed, preview|removed}` shape; both paths render
122
+ correctly.
123
+ - **`pica_notes_list` / `pica_notes_query` silently returned an empty
124
+ list on every call** (same envelope-unwrap class, found in the sweep).
125
+ `GET /admin/notes` nests `{data, count, pagination}` under `data`; the
126
+ tool's bare-array check discarded the object. Now unwraps the inner
127
+ `data` array.
128
+
129
+ ### Changed
130
+
131
+ - Deprecation `removal_target` on the 16 ADR-149/tool-consolidation aliases
132
+ in `TOOL_ALIASES` / `TOOL_METADATA` extended from `2.92.0` to `2.93.0` —
133
+ this release reaches `2.92.0`, so the prior target would have tripped the
134
+ ADR-180 deprecation-expiry lint. No removal decision made; purely
135
+ housekeeping to keep the aliases alive one more minor.
136
+
137
+ ## [2.91.2] - 2026-07-09
138
+
139
+ ### Added
140
+
141
+ - **WS3 "Confident Recall" — ambiguity signalling on `pica_search_all`.** When the top fuzzy matches
142
+ are too close to call, the response carries an additive `ambiguity` block
143
+ (`ambiguous: true`, the close candidates with confidences, and guidance)
144
+ and the text content leads with an "⚠ AMBIGUOUS MATCH" banner — the agent
145
+ is told to ask the user which entity they mean instead of acting on a
146
+ guess. Absent on clear wins; identifier-exact lookups (ISRC/ISWC/IPI)
147
+ never signal.
148
+ - **`pica_people_inspect` gains a `connections` section** — the one-call
149
+ org-catalog neighbourhood of a person: works, recordings, releases, and
150
+ agreements as `{kind, id, name, via}` with per-kind counts and a capped
151
+ flag. Answers "everything connected to X" / "what have I done with X"
152
+ without stitching sections. Creator Question Atlas backing added;
153
+ `pica_graph_traverse` (global graph, identifier-only) cross-references it.
154
+ - **Accent parity, last mile.** The releases free-text query and the
155
+ collaborator/contributor searches now match accent-insensitively
156
+ ("fez" finds "Féz"), completing the parity the catalog entity searches
157
+ gained on 2026-07-06.
158
+
12
159
  ## [2.91.1] - 2026-07-08
13
160
 
14
161
  ### Added