@withpica/mcp-server 2.46.0 → 2.48.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 +81 -2
- package/dist/apps/generated/shared-bundle.d.ts +1 -1
- package/dist/apps/generated/shared-bundle.d.ts.map +1 -1
- package/dist/apps/generated/shared-bundle.js +1 -1
- package/dist/apps/generated/shared-bundle.js.map +1 -1
- package/dist/resources/required-schemas.generated.d.ts +65 -0
- package/dist/resources/required-schemas.generated.d.ts.map +1 -1
- package/dist/resources/required-schemas.generated.js +131 -0
- 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 +76 -0
- package/dist/resources/required-schemas.source.js.map +1 -1
- package/dist/tools/agreement-types.js +1 -1
- package/dist/tools/agreement-types.js.map +1 -1
- package/dist/tools/agreements.js +1 -1
- package/dist/tools/agreements.js.map +1 -1
- package/dist/tools/app-tools.js +2 -2
- package/dist/tools/app-tools.js.map +1 -1
- package/dist/tools/assets.d.ts.map +1 -1
- package/dist/tools/assets.js +40 -14
- package/dist/tools/assets.js.map +1 -1
- package/dist/tools/audio-files.js +3 -3
- package/dist/tools/audio-files.js.map +1 -1
- package/dist/tools/bulk.js +2 -2
- package/dist/tools/bulk.js.map +1 -1
- package/dist/tools/collaborators.js +6 -6
- package/dist/tools/collaborators.js.map +1 -1
- package/dist/tools/credits.js +3 -3
- package/dist/tools/credits.js.map +1 -1
- package/dist/tools/discovery.d.ts.map +1 -1
- package/dist/tools/discovery.js +26 -0
- package/dist/tools/discovery.js.map +1 -1
- package/dist/tools/enrichment.js +13 -13
- package/dist/tools/enrichment.js.map +1 -1
- package/dist/tools/feedback.js +1 -1
- package/dist/tools/feedback.js.map +1 -1
- package/dist/tools/forbidden-keywords.d.ts +62 -0
- package/dist/tools/forbidden-keywords.d.ts.map +1 -0
- package/dist/tools/forbidden-keywords.js +99 -0
- package/dist/tools/forbidden-keywords.js.map +1 -0
- package/dist/tools/groups.d.ts +29 -0
- package/dist/tools/groups.d.ts.map +1 -0
- package/dist/tools/groups.js +186 -0
- package/dist/tools/groups.js.map +1 -0
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +13 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/metadata.d.ts.map +1 -1
- package/dist/tools/metadata.js +62 -0
- package/dist/tools/metadata.js.map +1 -1
- package/dist/tools/notifications.js +3 -3
- package/dist/tools/notifications.js.map +1 -1
- package/dist/tools/people.d.ts.map +1 -1
- package/dist/tools/people.js +5 -0
- package/dist/tools/people.js.map +1 -1
- package/dist/tools/projects.d.ts.map +1 -1
- package/dist/tools/projects.js +6 -7
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/public-filter.d.ts.map +1 -1
- package/dist/tools/public-filter.js +8 -36
- package/dist/tools/public-filter.js.map +1 -1
- package/dist/tools/recordings.d.ts.map +1 -1
- package/dist/tools/recordings.js +75 -27
- package/dist/tools/recordings.js.map +1 -1
- package/dist/tools/recovery-hints.d.ts +26 -0
- package/dist/tools/recovery-hints.d.ts.map +1 -1
- package/dist/tools/recovery-hints.js +615 -0
- package/dist/tools/recovery-hints.js.map +1 -1
- package/dist/tools/release-rich.d.ts.map +1 -1
- package/dist/tools/release-rich.js +10 -6
- package/dist/tools/release-rich.js.map +1 -1
- package/dist/tools/settings.d.ts.map +1 -1
- package/dist/tools/settings.js +14 -15
- package/dist/tools/settings.js.map +1 -1
- package/dist/tools/signup.js +1 -1
- package/dist/tools/signup.js.map +1 -1
- package/dist/tools/split-sheets.js +1 -1
- package/dist/tools/split-sheets.js.map +1 -1
- package/dist/tools/storage-config.js +2 -2
- package/dist/tools/storage-config.js.map +1 -1
- package/dist/tools/subscription.d.ts.map +1 -1
- package/dist/tools/subscription.js +4 -6
- package/dist/tools/subscription.js.map +1 -1
- package/dist/tools/sync-placements.d.ts +31 -0
- package/dist/tools/sync-placements.d.ts.map +1 -0
- package/dist/tools/sync-placements.js +431 -0
- package/dist/tools/sync-placements.js.map +1 -0
- package/dist/tools/works.d.ts.map +1 -1
- package/dist/tools/works.js +50 -22
- package/dist/tools/works.js.map +1 -1
- package/package.json +3 -3
- package/server.json +2 -2
- package/.claude/settings.local.json +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,87 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
11
11
|
|
|
12
12
|
## [Unreleased]
|
|
13
13
|
|
|
14
|
+
## [2.48.0] - 2026-05-03
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- **Tool description scrub (PR #188).** Stripped internal-only ADR pointers and
|
|
19
|
+
email-vendor names from user-visible tool descriptions across batch A
|
|
20
|
+
(agreement-types, agreements, bulk, collaborators, credits), batch B
|
|
21
|
+
(app-tools, feedback, projects, enrichment, recordings), and batch C.
|
|
22
|
+
Replaced ADR-N references with the concept the ADR documented (e.g.
|
|
23
|
+
"ADR-198 round-trip" → "verify the credit persisted") and removed
|
|
24
|
+
Postmark from collaborator bulk-invite description and elicitation
|
|
25
|
+
warning text. Tool descriptions surface to third-party agents and shouldn't
|
|
26
|
+
reveal internal infrastructure choices.
|
|
27
|
+
|
|
28
|
+
- **recovery_hints expansion (PR #188).** Annotation fix + additional
|
|
29
|
+
recovery hints for tools that fan out across sections.
|
|
30
|
+
|
|
31
|
+
- **`pica_releases_show` best-effort catch markers (ADR-224 convention).** Marked
|
|
32
|
+
the two best-effort catches in `releases-rich.show()` (tracks + cover-art
|
|
33
|
+
fallbacks) with `/* best-effort */` to match the ADR-224 Phase 4 lint
|
|
34
|
+
convention. No behaviour change — the catches were already documented inline;
|
|
35
|
+
this just makes the marker greppable so future scope extensions to `_show`
|
|
36
|
+
tools recognise the intent. Surface audit confirmed all 9 `_inspect` tools
|
|
37
|
+
addressed, 22 `_list` tools clean, no swallow patterns elsewhere.
|
|
38
|
+
|
|
39
|
+
## [2.47.0] - 2026-05-02
|
|
40
|
+
|
|
41
|
+
### Added
|
|
42
|
+
|
|
43
|
+
- **ADR-222 W3 — sync placements MCP tool surface (6 tools).**
|
|
44
|
+
- `pica_sync_placements_query` — list placements with filters (work_id, status, verification_status, brand, production_company, person_id, recording_id, source_license_enquiry_id, min_fee, currency).
|
|
45
|
+
- `pica_sync_placements_inspect` — fetch one placement with linked recordings, sources, agreement, and parties.
|
|
46
|
+
- `pica_sync_placements_create` — atomic create (placement + draft sync_license agreement + ≥1 agreement_party + recordings + evidence sources in a single Postgres transaction). Empty `contacts[]` rejects with structured `MISSING_CONTACT` (`next_tool: "pica_people_query"`). New people auto-created inline via `person_name` instead of `person_id`.
|
|
47
|
+
- `pica_sync_placements_update` — patch placement fields. Operator-only when `verification_status='operator_verified'|'disputed'` or `confidentiality_level` changes (throws structured `OPERATOR_REQUIRED`); illegal status transitions throw `INVALID_TRANSITION`.
|
|
48
|
+
- `pica_sync_placements_delete` — operator-only hard delete (two-step confirmation token). Customer agents receive structured `OPERATOR_REQUIRED` with `next_tool: "pica_sync_placements_update"` pointing at the soft-delete path (`status: 'terminated'`).
|
|
49
|
+
- `pica_sync_placements_cite` — attach an evidence source; auto-recomputes `verification_status` (any non-attestation kind → `evidence_attached`).
|
|
50
|
+
|
|
51
|
+
All 4 mutating tools wrapped with `withBillingGate`. Stdio path delegates to `pica.syncPlacements.*` (new `@withpica/mcp-sdk` resource). HTTP transport mirrors via the shared `ToolRegistry`. Paired with W4's REST routes at `/api/admin/sync-placements`.
|
|
52
|
+
|
|
53
|
+
- **`pica://schemas/sync-placement-required` workflow schema resource (ADR-214).** Required + recommended fields for `pica_sync_placements_create` plus 4 companion call entries (inspect / update / cite / delete) and a worked example. Embeds the three `sync_placements` CHECK enums (`status` 5 values, `verification_status` 5 values, `confidentiality_level` 3 values) via the build-time generator + `schema-mirror.json` extension. Lives on both stdio (via the schema generator) and HTTP transport (`UI_RESOURCE_DEFS` in `app/api/mcp/route.ts`).
|
|
54
|
+
|
|
55
|
+
- **`WorkflowTag` union expanded 15 → 16 values** (added `sync-placement-required`). All 6 sync-placement tools tagged with this workflow; `lint-required-schemas` enforces forward + inverse coverage.
|
|
56
|
+
|
|
57
|
+
- **`schema-mirror.json` extended with `sync_placements` table** for status / verification_status / confidentiality_level CHECK enum embedding.
|
|
58
|
+
|
|
59
|
+
- **6 cost-model entries in `lib/billing/tool-cost-model.ts`** (READ for query/inspect, WRITE for create/update/delete/cite). Unblocks ADR-180 lint cost-model coverage check; ADR-215 shadow-metering will record `billable_events` rows on these tools from first call.
|
|
60
|
+
|
|
61
|
+
- **`sync_placements` discovery category** in `mcp-server/src/tools/discovery.ts` — layered-discovery agents (ChatGPT, Claude.ai connectors with `MCP_LAYERED_DISCOVERY=1`) can find the 6 tools via `pica_discover`.
|
|
62
|
+
|
|
63
|
+
- **MCP scope mapping** for the 6 tools under existing `read:agreements` (query + inspect) and `write:agreements` (create + update + delete + cite). Bundled under the agreements scope rather than minting a new public scope for one feature — every placement is backed by a sync_license agreement.
|
|
64
|
+
|
|
65
|
+
- **Four group-membership tools (ADR-223 Phase 5).** Customers can now
|
|
66
|
+
manage group → member relationships on people directly via AI:
|
|
67
|
+
- `pica_group_add_member` — add a person to a group person row.
|
|
68
|
+
Server-side trigger enforces parent.is_group=true and same-org
|
|
69
|
+
constraint; tool surfaces friendly errors at the route layer.
|
|
70
|
+
Defaults: `role='member'`, `receive_notifications=true` (opt-out
|
|
71
|
+
per membership). Wrapped in `withBillingGate`.
|
|
72
|
+
- `pica_group_remove_member` — set `left_at` on the active row.
|
|
73
|
+
Rows are never deleted; member history is preserved.
|
|
74
|
+
- `pica_group_list_members` — active members by default;
|
|
75
|
+
`include_inactive=true` for history.
|
|
76
|
+
- `pica_person_list_groups` — inverse: every group a person is or
|
|
77
|
+
was a member of.
|
|
78
|
+
Role enum: `member`, `founder`, `lead`, `touring_member`,
|
|
79
|
+
`session`, `guest`, `producer_in_residence`. Free-text `role_label`
|
|
80
|
+
for variants outside the enum. Tools route through `mcp-sdk`
|
|
81
|
+
`groups` resource → `/admin/groups/*` and
|
|
82
|
+
`/admin/people/{id}/groups` HTTP routes.
|
|
83
|
+
|
|
84
|
+
### Changed
|
|
85
|
+
|
|
86
|
+
- **`@withpica/mcp-sdk` peer bumped to `^1.20.0`.** Required for the
|
|
87
|
+
new `groups` and `syncPlacements` resources; older SDK versions lack
|
|
88
|
+
`PicaClient.groups` and `PicaClient.syncPlacements`.
|
|
89
|
+
|
|
90
|
+
### Notes
|
|
91
|
+
|
|
92
|
+
- The 4 mutating sync-placement tools (`_create`, `_update`, `_delete`, `_cite`) need ADR-198 holdout contract specs in the sibling `Good-FM/pica-holdout-tests` repo. Coordinator follow-up — Path A from W3 Stage 1 audit §11.E.
|
|
93
|
+
- The brief's references to a `mcp-server/src/__tests__/contract-baseline.json` file and a `lint:contract-baseline` script are out of date; both were removed in ADR-180 Phase 3 (the lint chain is now fully strict by default — `scripts/lint-mcp-tools.ts` runs as part of `prepublishOnly`). W3 reinterpreted Stage 4 as ADR-180 metadata + cost-model + taxonomy entries (all added) plus ADR-198 holdout contracts (sibling repo, follow-up).
|
|
94
|
+
|
|
14
95
|
## [2.46.0] - 2026-05-02
|
|
15
96
|
|
|
16
97
|
### Changed
|
|
@@ -23,8 +104,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
23
104
|
edit-symmetry gap surfaced during the SEV-1 sprint: previously the
|
|
24
105
|
user could AI-rename their org but not their own name.
|
|
25
106
|
|
|
26
|
-
### Changed
|
|
27
|
-
|
|
28
107
|
- **`pica_update_organisation_profile` now accepts `name`.** Customers can
|
|
29
108
|
rename their organisation via AI (e.g., fix signup typos, replace the
|
|
30
109
|
default "My Organization" placeholder). Updates `organisations.name`
|