@withpica/mcp-server 2.46.0 → 2.47.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.
@@ -0,0 +1,431 @@
1
+ // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
+ import { formatAsText, formatList, formatSuccess } from "@withpica/mcp-utils";
3
+ import { withBillingGate } from "@withpica/mcp-utils";
4
+ export class SyncPlacementsTools {
5
+ pica;
6
+ constructor(pica) {
7
+ this.pica = pica;
8
+ }
9
+ getTools() {
10
+ return [
11
+ {
12
+ definition: {
13
+ name: "pica_sync_placements_query",
14
+ description: "List sync placements for the org. Filters: work_id, status, verification_status, brand, production_company, person_id, recording_id, source_license_enquiry_id, min_fee, currency. Returns up to `limit` (default 50) with cursor support via `offset`.",
15
+ workflows: ["sync-placement-required"],
16
+ inputSchema: {
17
+ type: "object",
18
+ properties: {
19
+ work_id: {
20
+ type: "string",
21
+ description: "Filter by work id",
22
+ },
23
+ status: {
24
+ type: "string",
25
+ enum: ["licensed", "aired", "expired", "renewed", "terminated"],
26
+ description: "Filter by placement lifecycle status",
27
+ },
28
+ verification_status: {
29
+ type: "string",
30
+ enum: [
31
+ "unverified",
32
+ "self_attested",
33
+ "evidence_attached",
34
+ "operator_verified",
35
+ "disputed",
36
+ ],
37
+ description: "Filter by evidence verification state",
38
+ },
39
+ brand: {
40
+ type: "string",
41
+ description: "Filter by advertiser/brand name",
42
+ },
43
+ production_company: {
44
+ type: "string",
45
+ description: "Filter by production company name",
46
+ },
47
+ person_id: {
48
+ type: "string",
49
+ description: "Filter to placements where this person is a contact (music supervisor, etc.)",
50
+ },
51
+ recording_id: {
52
+ type: "string",
53
+ description: "Filter to placements that licensed this recording",
54
+ },
55
+ source_license_enquiry_id: {
56
+ type: "string",
57
+ description: "Filter to placements that originated from this license enquiry",
58
+ },
59
+ min_fee: {
60
+ type: "number",
61
+ description: "Minimum fee_amount (pre-pagination SQL filter)",
62
+ },
63
+ currency: {
64
+ type: "string",
65
+ description: "ISO-4217 currency code (e.g. USD, GBP)",
66
+ },
67
+ limit: {
68
+ type: "number",
69
+ description: "Max results (default 50)",
70
+ },
71
+ offset: {
72
+ type: "number",
73
+ description: "Cursor offset",
74
+ },
75
+ },
76
+ },
77
+ },
78
+ executor: this.query.bind(this),
79
+ },
80
+ {
81
+ definition: {
82
+ name: "pica_sync_placements_inspect",
83
+ description: "Get one sync placement by id, including all linked recordings, evidence sources, the underlying agreement, and party rows.",
84
+ workflows: ["sync-placement-required"],
85
+ inputSchema: {
86
+ type: "object",
87
+ properties: {
88
+ id: {
89
+ type: "string",
90
+ description: "Sync placement id",
91
+ },
92
+ },
93
+ required: ["id"],
94
+ },
95
+ },
96
+ executor: this.inspect.bind(this),
97
+ },
98
+ {
99
+ definition: {
100
+ name: "pica_sync_placements_create",
101
+ description: "Create a sync placement (atomic — placement + draft sync_license agreement + at least one agreement_party + recordings + evidence sources, all in one Postgres transaction). Requires at least one entry in `contacts[]`. Empty contacts rejects with structured MISSING_CONTACT (next_tool: pica_people_query). New people can be auto-created inline by passing `person_name` instead of `person_id`.",
102
+ workflows: ["sync-placement-required"],
103
+ inputSchema: {
104
+ type: "object",
105
+ properties: {
106
+ work_id: {
107
+ type: "string",
108
+ description: "Work being licensed for the placement",
109
+ },
110
+ production_title: {
111
+ type: "string",
112
+ description: "The film/series/ad/game name the work is licensed into",
113
+ },
114
+ production_type: {
115
+ type: "string",
116
+ description: "Film, TV, advertising, trailer, video game, etc.",
117
+ },
118
+ brand: {
119
+ type: "string",
120
+ description: "Advertiser brand (for ad placements)",
121
+ },
122
+ production_company: {
123
+ type: "string",
124
+ description: "Production company name",
125
+ },
126
+ status: {
127
+ type: "string",
128
+ enum: ["licensed", "aired", "expired", "renewed", "terminated"],
129
+ description: "Initial status (default 'licensed')",
130
+ },
131
+ fee_amount: {
132
+ type: "number",
133
+ description: "Total fee in minor units of fee_currency",
134
+ },
135
+ fee_currency: {
136
+ type: "string",
137
+ description: "ISO-4217 currency code",
138
+ },
139
+ use_start_date: {
140
+ type: "string",
141
+ description: "ISO-8601 date — first day of licensed use",
142
+ },
143
+ use_end_date: {
144
+ type: "string",
145
+ description: "ISO-8601 date — last day of licensed use",
146
+ },
147
+ territory: {
148
+ type: "array",
149
+ items: { type: "string" },
150
+ description: "ISO-3166 country codes; ['WW'] = worldwide",
151
+ },
152
+ media_channels: {
153
+ type: "array",
154
+ items: { type: "string" },
155
+ description: "tv, online, theatrical, social, in-game, in-store, etc.",
156
+ },
157
+ notes: {
158
+ type: "string",
159
+ description: "Free-text notes",
160
+ },
161
+ confidentiality_level: {
162
+ type: "string",
163
+ enum: ["public", "redacted_in_public_car", "private"],
164
+ description: "Public-CAR redaction policy (default 'redacted_in_public_car')",
165
+ },
166
+ contacts: {
167
+ type: "array",
168
+ description: "At least one contact required. Pass `person_id` for an existing person OR `person_name` (+ optional email/company/position) to auto-create.",
169
+ items: {
170
+ type: "object",
171
+ properties: {
172
+ person_id: { type: "string" },
173
+ person_name: { type: "string" },
174
+ role: {
175
+ type: "string",
176
+ description: "music_supervisor | brand_marketing_lead | sync_agent | clearance_attorney | film_producer | director | … (see ADR-222 contact roles)",
177
+ },
178
+ email: { type: "string" },
179
+ company: { type: "string" },
180
+ position: { type: "string" },
181
+ split_percentage: {
182
+ type: "number",
183
+ description: "Optional commission split (0–100)",
184
+ },
185
+ },
186
+ required: ["role"],
187
+ },
188
+ minItems: 1,
189
+ },
190
+ recordings: {
191
+ type: "array",
192
+ description: "Specific recordings being licensed under the placement (optional but typical for sync — one master per recording).",
193
+ items: {
194
+ type: "object",
195
+ properties: {
196
+ recording_id: { type: "string" },
197
+ role: {
198
+ type: "string",
199
+ description: "main_master | re_record | instrumental | edit | trailer_cut | …",
200
+ },
201
+ master_fee: { type: "number" },
202
+ master_share_licensed_pct: { type: "number" },
203
+ notes: { type: "string" },
204
+ },
205
+ required: ["recording_id", "role"],
206
+ },
207
+ },
208
+ sources: {
209
+ type: "array",
210
+ description: "Evidence sources backing the placement. Auto-advances verification_status: any 'cue_sheet'/'invoice'/'agreement_pdf'/'email'/'screenshot'/'web'/'spreadsheet_import' → evidence_attached; 'user_attestation' only → self_attested; none → unverified.",
211
+ items: {
212
+ type: "object",
213
+ properties: {
214
+ url: { type: "string" },
215
+ kind: {
216
+ type: "string",
217
+ enum: [
218
+ "user_attestation",
219
+ "agreement_pdf",
220
+ "cue_sheet",
221
+ "invoice",
222
+ "email",
223
+ "screenshot",
224
+ "web",
225
+ "spreadsheet_import",
226
+ ],
227
+ },
228
+ agent_id: { type: "string" },
229
+ field_coverage: {
230
+ type: "array",
231
+ items: { type: "string" },
232
+ },
233
+ notes: { type: "string" },
234
+ },
235
+ required: ["url", "kind"],
236
+ },
237
+ },
238
+ },
239
+ required: ["work_id", "production_title", "contacts"],
240
+ },
241
+ },
242
+ executor: withBillingGate(this.pica, "sync placement creation", this.create.bind(this)),
243
+ },
244
+ {
245
+ definition: {
246
+ name: "pica_sync_placements_update",
247
+ description: "Patch a sync placement. Most fields are unconditional; `verification_status` (when set to 'operator_verified' or 'disputed') and `confidentiality_level` are operator-gated and will throw OPERATOR_REQUIRED for customer agents — use a soft transition like status:'terminated' for self-service retirement instead. Status transitions follow the placement state machine; illegal transitions throw INVALID_TRANSITION (inspect first to see the current state).",
248
+ workflows: ["sync-placement-required"],
249
+ inputSchema: {
250
+ type: "object",
251
+ properties: {
252
+ id: {
253
+ type: "string",
254
+ description: "Sync placement id",
255
+ },
256
+ status: {
257
+ type: "string",
258
+ enum: ["licensed", "aired", "expired", "renewed", "terminated"],
259
+ description: "Placement lifecycle status — transitions follow the sync_placement_status state machine; setting status:'terminated' is the customer-facing soft-delete path.",
260
+ },
261
+ verification_status: {
262
+ type: "string",
263
+ enum: [
264
+ "unverified",
265
+ "self_attested",
266
+ "evidence_attached",
267
+ "operator_verified",
268
+ "disputed",
269
+ ],
270
+ description: "Evidence verification state. Operator-only when set to 'operator_verified' or 'disputed'; other values throw OPERATOR_REQUIRED for customer agents.",
271
+ },
272
+ confidentiality_level: {
273
+ type: "string",
274
+ enum: ["public", "redacted_in_public_car", "private"],
275
+ description: "Public-CAR redaction policy. Operator-only — changing this throws OPERATOR_REQUIRED for customer agents.",
276
+ },
277
+ production_title: {
278
+ type: "string",
279
+ description: "The film/series/ad/game name the work is licensed into",
280
+ },
281
+ production_type: {
282
+ type: "string",
283
+ description: "Film, TV, advertising, trailer, video game, etc.",
284
+ },
285
+ brand: {
286
+ type: "string",
287
+ description: "Advertiser brand (for ad placements)",
288
+ },
289
+ production_company: {
290
+ type: "string",
291
+ description: "Production company name",
292
+ },
293
+ fee_amount: {
294
+ type: "number",
295
+ description: "Total fee in minor units of fee_currency",
296
+ },
297
+ fee_currency: {
298
+ type: "string",
299
+ description: "ISO-4217 currency code",
300
+ },
301
+ use_start_date: {
302
+ type: "string",
303
+ description: "ISO-8601 date — first day of licensed use",
304
+ },
305
+ use_end_date: {
306
+ type: "string",
307
+ description: "ISO-8601 date — last day of licensed use",
308
+ },
309
+ territory: {
310
+ type: "array",
311
+ items: { type: "string" },
312
+ description: "ISO-3166 country codes; ['WW'] = worldwide",
313
+ },
314
+ media_channels: {
315
+ type: "array",
316
+ items: { type: "string" },
317
+ description: "tv, online, theatrical, social, in-game, in-store, etc.",
318
+ },
319
+ notes: {
320
+ type: "string",
321
+ description: "Free-text notes",
322
+ },
323
+ },
324
+ required: ["id"],
325
+ },
326
+ },
327
+ executor: withBillingGate(this.pica, "sync placement update", this.update.bind(this)),
328
+ },
329
+ {
330
+ definition: {
331
+ name: "pica_sync_placements_delete",
332
+ description: "Hard-delete a sync placement. Operator-only — customer agents will receive structured OPERATOR_REQUIRED. For self-service retirement, use pica_sync_placements_update with status:'terminated' (soft-delete). Two-step confirmation pattern: first call returns a confirmation_token; second call with the token executes the delete.",
333
+ workflows: ["sync-placement-required"],
334
+ inputSchema: {
335
+ type: "object",
336
+ properties: {
337
+ id: {
338
+ type: "string",
339
+ description: "Sync placement id",
340
+ },
341
+ confirmation_token: {
342
+ type: "string",
343
+ description: "Token from a prior call; required to actually execute the delete",
344
+ },
345
+ },
346
+ required: ["id"],
347
+ },
348
+ },
349
+ executor: withBillingGate(this.pica, "sync placement deletion", this.delete.bind(this)),
350
+ },
351
+ {
352
+ definition: {
353
+ name: "pica_sync_placements_cite",
354
+ description: "Attach an evidence source to a sync placement. Auto-recomputes verification_status — any non-attestation kind ('cue_sheet'/'invoice'/'agreement_pdf'/'email'/'screenshot'/'web'/'spreadsheet_import') advances unverified/self_attested → evidence_attached. operator_verified is sticky (only an explicit operator action exits it).",
355
+ workflows: ["sync-placement-required"],
356
+ inputSchema: {
357
+ type: "object",
358
+ properties: {
359
+ id: {
360
+ type: "string",
361
+ description: "Sync placement id",
362
+ },
363
+ url: {
364
+ type: "string",
365
+ description: "Evidence URL",
366
+ },
367
+ kind: {
368
+ type: "string",
369
+ enum: [
370
+ "user_attestation",
371
+ "agreement_pdf",
372
+ "cue_sheet",
373
+ "invoice",
374
+ "email",
375
+ "screenshot",
376
+ "web",
377
+ "spreadsheet_import",
378
+ ],
379
+ description: "Source kind. Any non-attestation kind advances verification_status to evidence_attached on first attach.",
380
+ },
381
+ agent_id: {
382
+ type: "string",
383
+ description: "Optional agent identity that supplied the source",
384
+ },
385
+ field_coverage: {
386
+ type: "array",
387
+ items: { type: "string" },
388
+ description: "Which placement fields this source attests to (used by CAR attribution per ADR-222 AC14)",
389
+ },
390
+ notes: {
391
+ type: "string",
392
+ description: "Free-text notes",
393
+ },
394
+ },
395
+ required: ["id", "url", "kind"],
396
+ },
397
+ },
398
+ executor: withBillingGate(this.pica, "sync placement evidence", this.cite.bind(this)),
399
+ },
400
+ ];
401
+ }
402
+ // ── executors ──────────────────────────────────────────────────────────
403
+ async query(args) {
404
+ const result = await this.pica.syncPlacements.list(args);
405
+ return formatList(result.data, { total: result.total });
406
+ }
407
+ async inspect(args) {
408
+ const placement = await this.pica.syncPlacements.get(args.id);
409
+ return formatAsText(placement);
410
+ }
411
+ async create(args) {
412
+ const placement = await this.pica.syncPlacements.create(args);
413
+ return formatSuccess("Sync placement created", placement);
414
+ }
415
+ async update(args) {
416
+ const { id, ...patch } = args;
417
+ const placement = await this.pica.syncPlacements.update(id, patch);
418
+ return formatSuccess("Sync placement updated", placement);
419
+ }
420
+ async delete(args) {
421
+ const { id, confirmation_token } = args;
422
+ await this.pica.syncPlacements.delete(id, { confirmation_token });
423
+ return formatSuccess(`Sync placement ${id} deleted`);
424
+ }
425
+ async cite(args) {
426
+ const { id, ...source } = args;
427
+ const result = await this.pica.syncPlacements.addSource(id, source);
428
+ return formatSuccess("Evidence attached to sync placement", result);
429
+ }
430
+ }
431
+ //# sourceMappingURL=sync-placements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-placements.js","sourceRoot":"","sources":["../../src/tools/sync-placements.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@withpica/mcp-server",
3
3
  "mcpName": "io.github.withpica/pica",
4
- "version": "2.46.0",
4
+ "version": "2.47.0",
5
5
  "description": "MCP Server for PICA Platform - enables AI assistants to interact with PICA",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
@@ -33,7 +33,7 @@
33
33
  "license": "MIT",
34
34
  "dependencies": {
35
35
  "@modelcontextprotocol/sdk": "^1.27.1",
36
- "@withpica/mcp-sdk": "^1.18.0",
36
+ "@withpica/mcp-sdk": "^1.20.0",
37
37
  "@withpica/mcp-utils": "^1.17.0",
38
38
  "mppx": "^0.5.0"
39
39
  },
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/withpica/pica",
7
7
  "source": "github"
8
8
  },
9
- "version": "2.46.0",
9
+ "version": "2.47.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@withpica/mcp-server",
14
- "version": "2.46.0",
14
+ "version": "2.47.0",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  }