@withpica/mcp-sdk 4.2.0 → 4.4.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 CHANGED
@@ -11,6 +11,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [4.4.0] - 2026-11-03
15
+
16
+ ### Added
17
+
18
+ - Profile claim invite outcomes carry `address_bounced?: boolean`: true when the invite was made but the email did not go out because the address bounced before.
19
+ - `works.search({ has_audio })`: filter works by whether audio is attached to the work or one of its recordings.
20
+
21
+ ## [4.3.0] - 2026-11-02
22
+
23
+ ### Added
24
+
25
+ - `bulk.updateWorksWithResult(workIds, updates)`: a works bulk update's whole answer,
26
+ `{ data, count, refused, message? }`. `refused` lists the works not updated, each
27
+ `{ id, code, error }` (`status_move_not_allowed`, `not_found` or `not_updated`).
28
+ `bulk.updateWorks` is unchanged: it still returns only the updated works, which is why it
29
+ could not say which were refused. Backs `pica_works_bulk_update` in `@withpica/mcp-server`
30
+ 2.115.0.
31
+
14
32
  ## [4.2.0] - 2026-10-31
15
33
 
16
34
  ### Added
package/dist/index.d.ts CHANGED
@@ -1135,6 +1135,8 @@ declare class WorksResource extends BaseResource {
1135
1135
  * (works.lyrics; blank counts as lacking).
1136
1136
  */
1137
1137
  has_lyrics?: boolean;
1138
+ /** Audio on the work or one of its recordings. */
1139
+ has_audio?: boolean;
1138
1140
  }): Promise<PaginatedResult<Work>>;
1139
1141
  /**
1140
1142
  * The agreements linked to ONE work (GET /admin/works/:id/agreements).
@@ -3773,8 +3775,28 @@ declare class AnalyticsResource extends BaseResource {
3773
3775
  provenanceCertificateGet(workId: string): Promise<any>;
3774
3776
  catalogDiligence(): Promise<any>;
3775
3777
  }
3778
+ /** A works bulk update's whole answer (POST /admin/works/bulk-update). */
3779
+ export interface WorksBulkUpdateResult {
3780
+ /** The works updated. */
3781
+ data: unknown[];
3782
+ /** How many were updated. */
3783
+ count: number;
3784
+ /** The works not updated, each with why (e.g. a refused status move). */
3785
+ refused: Array<{
3786
+ id: string;
3787
+ code: string;
3788
+ error: string;
3789
+ }>;
3790
+ message?: string;
3791
+ }
3776
3792
  declare class BulkResource extends BaseResource {
3777
3793
  updateWorks(workIds: string[], updates: Record<string, any>): Promise<any>;
3794
+ /**
3795
+ * Like updateWorks, but the whole answer: updateWorks returns only the
3796
+ * updated works (`request()` narrows to `.data`), which drops `count` and
3797
+ * `refused`, so a caller can't tell which works were not updated.
3798
+ */
3799
+ updateWorksWithResult(workIds: string[], updates: Record<string, any>): Promise<WorksBulkUpdateResult>;
3778
3800
  updatePeopleRoles(personIds: string[], roles: string[], action?: string): Promise<any>;
3779
3801
  addPeopleTags(personIds: string[], tags: string[]): Promise<unknown>;
3780
3802
  linkArtist(workIds: string[], personId: string, artistName: string, dryRun?: boolean): Promise<unknown>;
@@ -5249,6 +5271,11 @@ export interface ProfileClaimInviteOutcome {
5249
5271
  outcome: "invited" | "would_invite" | "skipped" | "failed";
5250
5272
  /** invited: "sent" | "held" (waiting for approval) | "failed". */
5251
5273
  send_status?: string;
5274
+ /**
5275
+ * invited: true when the email failed because this address bounced
5276
+ * before. Inviting again can't reach it until the address changes.
5277
+ */
5278
+ address_bounced?: boolean;
5252
5279
  /** would_invite: the address the invite would go to. */
5253
5280
  email?: string;
5254
5281
  /** skipped: why (PERSON_HAS_NO_EMAIL, ALREADY_INVITED, ...). */