@smartytalent/mcp-tools 0.1.33-dev.2 → 0.1.33-dev.4

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 (2) hide show
  1. package/dist/tools.json +672 -8
  2. package/package.json +1 -1
package/dist/tools.json CHANGED
@@ -6884,23 +6884,57 @@
6884
6884
  "type": "object",
6885
6885
  "properties": {
6886
6886
  "fileName": {
6887
- "type": "string"
6887
+ "type": "string",
6888
+ "description": "Display name shown in the mail client and used as the attachment filename on send."
6888
6889
  },
6889
6890
  "url": {
6890
- "type": "string"
6891
+ "type": "string",
6892
+ "description": "S3 URL of the stored file. For user-uploaded attachments this is the path returned by POST /v1/files; for system-generated attachments (job/persona/report PDFs) it is the resource's own S3 path."
6891
6893
  },
6892
6894
  "type": {
6893
6895
  "type": "string",
6894
- "description": "Resource type this attachment belongs to: jobs, personas, talents, candidates, reports, files, ads."
6896
+ "description": "Resource type this attachment belongs to. User-uploaded attachments use `files`; system-generated attachments use the owning resource type: `jobs`, `personas`, `talents`, `candidates`, `reports`, `ads`."
6897
+ },
6898
+ "fileId": {
6899
+ "type": "string",
6900
+ "description": "When `type == \"files\"`, the file resource ID so the frontend can resolve the latest file metadata (status, processing state) without parsing the URL."
6901
+ },
6902
+ "size": {
6903
+ "type": "integer",
6904
+ "description": "File size in bytes. Frontend displays it in the compose preview and mail list. Set by the upload flow from the Content-Length of the S3 object; absent on legacy rows."
6905
+ },
6906
+ "contentType": {
6907
+ "type": "string",
6908
+ "description": "MIME type (e.g. `application/pdf`, `image/png`). Drives icon selection in the UI and the Content-Type header in the outbound MIME part. Absent on legacy rows; frontend should fall back to extension inference."
6909
+ },
6910
+ "thumbnailUrl": {
6911
+ "type": "string",
6912
+ "description": "Optional S3 URL of a PNG preview (first-page render for PDFs/DOCX). Populated by the file service's conversion pipeline when a preview is available. Absent for non-previewable types."
6895
6913
  }
6896
6914
  }
6897
6915
  },
6898
- "description": "Attachments referenced by URL into the service-owned S3 buckets. Presigned fetch URLs are not included; use the corresponding resource's download flow."
6916
+ "description": "Attachments on the email. For user-uploaded attachments: frontend creates a File via POST /v1/files (which returns a presigned PUT URL), uploads to S3, then references the File here with `type: \"files\"` and the returned `url`/`fileId`. For system-generated attachments (job/persona/report PDFs) the eventbus / outbound path populates these automatically."
6899
6917
  },
6900
6918
  "conversationLanguageCode": {
6901
6919
  "type": "string",
6902
6920
  "description": "Denormalised copy of the related conversation's languageCode (e.g. `pl-PL`, `en-US`). Avoids an N+1 fetch when the list/detail view needs to pick the right locale for the multilingual subject/body dicts. Source of truth is the conversation row; read-only from the email's perspective."
6903
6921
  },
6922
+ "parentEmailId": {
6923
+ "type": "string",
6924
+ "description": "Application-layer pointer to the email this one replies to. Used by the UI to render an 'in reply to' link in thread views. Set by the compose flow (frontend passes the parent on Reply) and by the broker when an inbound email matches an outbound via RFC 5322 In-Reply-To. Separate from meta.reference which carries the raw SMTP header chain."
6925
+ },
6926
+ "fromUserId": {
6927
+ "type": "string",
6928
+ "description": "Denormalised user id of the sender for outbound emails (the boe workflow user, or the human composer). Frontend joins this against its local user cache to render avatar + display name without a per-row API call. Null on inbound mail."
6929
+ },
6930
+ "fromCandidateId": {
6931
+ "type": "string",
6932
+ "description": "Denormalised candidate id of the sender for inbound replies from a candidate in an active conversation. Frontend joins this against its local candidate cache to render initials and the candidate name. Null on outbound mail and on anonymous inbound that didn't match a candidate."
6933
+ },
6934
+ "isSystemSpam": {
6935
+ "type": "boolean",
6936
+ "description": "System-level spam verdict on this email. Set by the broker (or a future classifier) at inbound time; never reflects a single user's opinion. Distinct from `status=suppressed`, which is SES reporting we cannot deliver on OUTBOUND. Frontend's Spam folder unions (my states where isSpam=true) with (emails where isSystemSpam=true)."
6937
+ },
6904
6938
  "ttl": {
6905
6939
  "type": "string"
6906
6940
  },
@@ -7190,23 +7224,57 @@
7190
7224
  "type": "object",
7191
7225
  "properties": {
7192
7226
  "fileName": {
7193
- "type": "string"
7227
+ "type": "string",
7228
+ "description": "Display name shown in the mail client and used as the attachment filename on send."
7194
7229
  },
7195
7230
  "url": {
7196
- "type": "string"
7231
+ "type": "string",
7232
+ "description": "S3 URL of the stored file. For user-uploaded attachments this is the path returned by POST /v1/files; for system-generated attachments (job/persona/report PDFs) it is the resource's own S3 path."
7197
7233
  },
7198
7234
  "type": {
7199
7235
  "type": "string",
7200
- "description": "Resource type this attachment belongs to: jobs, personas, talents, candidates, reports, files, ads."
7236
+ "description": "Resource type this attachment belongs to. User-uploaded attachments use `files`; system-generated attachments use the owning resource type: `jobs`, `personas`, `talents`, `candidates`, `reports`, `ads`."
7237
+ },
7238
+ "fileId": {
7239
+ "type": "string",
7240
+ "description": "When `type == \"files\"`, the file resource ID so the frontend can resolve the latest file metadata (status, processing state) without parsing the URL."
7241
+ },
7242
+ "size": {
7243
+ "type": "integer",
7244
+ "description": "File size in bytes. Frontend displays it in the compose preview and mail list. Set by the upload flow from the Content-Length of the S3 object; absent on legacy rows."
7245
+ },
7246
+ "contentType": {
7247
+ "type": "string",
7248
+ "description": "MIME type (e.g. `application/pdf`, `image/png`). Drives icon selection in the UI and the Content-Type header in the outbound MIME part. Absent on legacy rows; frontend should fall back to extension inference."
7249
+ },
7250
+ "thumbnailUrl": {
7251
+ "type": "string",
7252
+ "description": "Optional S3 URL of a PNG preview (first-page render for PDFs/DOCX). Populated by the file service's conversion pipeline when a preview is available. Absent for non-previewable types."
7201
7253
  }
7202
7254
  }
7203
7255
  },
7204
- "description": "Attachments referenced by URL into the service-owned S3 buckets. Presigned fetch URLs are not included; use the corresponding resource's download flow."
7256
+ "description": "Attachments on the email. For user-uploaded attachments: frontend creates a File via POST /v1/files (which returns a presigned PUT URL), uploads to S3, then references the File here with `type: \"files\"` and the returned `url`/`fileId`. For system-generated attachments (job/persona/report PDFs) the eventbus / outbound path populates these automatically."
7205
7257
  },
7206
7258
  "conversationLanguageCode": {
7207
7259
  "type": "string",
7208
7260
  "description": "Denormalised copy of the related conversation's languageCode (e.g. `pl-PL`, `en-US`). Avoids an N+1 fetch when the list/detail view needs to pick the right locale for the multilingual subject/body dicts. Source of truth is the conversation row; read-only from the email's perspective."
7209
7261
  },
7262
+ "parentEmailId": {
7263
+ "type": "string",
7264
+ "description": "Application-layer pointer to the email this one replies to. Used by the UI to render an 'in reply to' link in thread views. Set by the compose flow (frontend passes the parent on Reply) and by the broker when an inbound email matches an outbound via RFC 5322 In-Reply-To. Separate from meta.reference which carries the raw SMTP header chain."
7265
+ },
7266
+ "fromUserId": {
7267
+ "type": "string",
7268
+ "description": "Denormalised user id of the sender for outbound emails (the boe workflow user, or the human composer). Frontend joins this against its local user cache to render avatar + display name without a per-row API call. Null on inbound mail."
7269
+ },
7270
+ "fromCandidateId": {
7271
+ "type": "string",
7272
+ "description": "Denormalised candidate id of the sender for inbound replies from a candidate in an active conversation. Frontend joins this against its local candidate cache to render initials and the candidate name. Null on outbound mail and on anonymous inbound that didn't match a candidate."
7273
+ },
7274
+ "isSystemSpam": {
7275
+ "type": "boolean",
7276
+ "description": "System-level spam verdict on this email. Set by the broker (or a future classifier) at inbound time; never reflects a single user's opinion. Distinct from `status=suppressed`, which is SES reporting we cannot deliver on OUTBOUND. Frontend's Spam folder unions (my states where isSpam=true) with (emails where isSystemSpam=true)."
7277
+ },
7210
7278
  "ttl": {
7211
7279
  "type": "string"
7212
7280
  },
@@ -12026,6 +12094,602 @@
12026
12094
  "operationId": "noteOptions"
12027
12095
  }
12028
12096
  },
12097
+ {
12098
+ "name": "list_states",
12099
+ "description": "List States",
12100
+ "inputSchema": {
12101
+ "type": "object",
12102
+ "properties": {
12103
+ "filterResourceType": {
12104
+ "type": "string",
12105
+ "description": "Only return states for this resource type.",
12106
+ "enum": [
12107
+ "emails",
12108
+ "candidates",
12109
+ "conversations",
12110
+ "jobs",
12111
+ "talents",
12112
+ "personas",
12113
+ "reports",
12114
+ "tasks"
12115
+ ]
12116
+ },
12117
+ "filterResourceIds": {
12118
+ "type": "string",
12119
+ "description": "Comma-separated list of resource ids to batch-fetch. Requires `filterResourceType`."
12120
+ },
12121
+ "filterIsStarred": {
12122
+ "type": "boolean",
12123
+ "description": "Only return starred states."
12124
+ },
12125
+ "filterIsSeen": {
12126
+ "type": "boolean",
12127
+ "description": "Only return seen (true) or unseen (false) states."
12128
+ },
12129
+ "filterIsSpam": {
12130
+ "type": "boolean",
12131
+ "description": "Only return spam-marked states. Reads from the SpamIndex."
12132
+ },
12133
+ "pageSize": {
12134
+ "type": "integer",
12135
+ "description": "Specifies the number of items to retrieve per page. The maximum value is 100."
12136
+ },
12137
+ "pageAfter": {
12138
+ "type": "string",
12139
+ "description": "Opaque base64-encoded cursor returned by a previous list response, used for forward cursor-based pagination. Pass the value verbatim; do not decode or mutate it."
12140
+ },
12141
+ "pageBefore": {
12142
+ "type": "string",
12143
+ "description": "Returns the data encoded in Base64 format, used for cursor-based pagination"
12144
+ }
12145
+ }
12146
+ },
12147
+ "_meta": {
12148
+ "method": "GET",
12149
+ "path": "/v1/states",
12150
+ "operationId": "listStates"
12151
+ }
12152
+ },
12153
+ {
12154
+ "name": "create_state",
12155
+ "description": "Upsert State",
12156
+ "inputSchema": {
12157
+ "title": "CreateStateRequestBody",
12158
+ "type": "object",
12159
+ "required": [
12160
+ "data"
12161
+ ],
12162
+ "properties": {
12163
+ "data": {
12164
+ "title": "CreateStateRequestBodyData",
12165
+ "type": "object",
12166
+ "required": [
12167
+ "type",
12168
+ "attributes"
12169
+ ],
12170
+ "properties": {
12171
+ "type": {
12172
+ "type": "string",
12173
+ "enum": [
12174
+ "states"
12175
+ ]
12176
+ },
12177
+ "attributes": {
12178
+ "title": "StateAttributesSchema",
12179
+ "type": "object",
12180
+ "properties": {
12181
+ "userId": {
12182
+ "type": "string",
12183
+ "description": "Owner of this state row. Always the authenticated user; never set by the client."
12184
+ },
12185
+ "resourceType": {
12186
+ "type": "string",
12187
+ "enum": [
12188
+ "emails",
12189
+ "candidates",
12190
+ "conversations",
12191
+ "jobs",
12192
+ "talents",
12193
+ "personas",
12194
+ "reports",
12195
+ "tasks"
12196
+ ],
12197
+ "description": "The kind of resource this state describes. Lives in the composite id as `{resourceType}:{resourceId}`."
12198
+ },
12199
+ "resourceId": {
12200
+ "type": "string",
12201
+ "description": "Id of the resource this state describes (e.g. an emailId, candidateId)."
12202
+ },
12203
+ "isSeen": {
12204
+ "type": "boolean",
12205
+ "description": "True if the user has opened the resource at least once. Derived from the presence of `seenAt`; clients can write either `isSeen` or `seenAt` on upsert."
12206
+ },
12207
+ "isStarred": {
12208
+ "type": "boolean",
12209
+ "description": "True if the user has starred/favourited the resource."
12210
+ },
12211
+ "isSpam": {
12212
+ "type": "boolean",
12213
+ "description": "True if the user marked this resource as spam. Distinct from the email service's `suppressed` status, which is SES-driven on outbound delivery; this is an inbound, per-user action."
12214
+ },
12215
+ "seenAt": {
12216
+ "type": "string",
12217
+ "description": "ISO 8601 timestamp of the user's most recent open. Absent means never seen."
12218
+ },
12219
+ "starredAt": {
12220
+ "type": "string",
12221
+ "description": "ISO 8601 timestamp of when the user starred the resource. Absent means not starred; used as the sort key for the `Starred` folder."
12222
+ },
12223
+ "spamAt": {
12224
+ "type": "string",
12225
+ "description": "ISO 8601 timestamp of when the user marked the resource as spam. Absent means not spam; used as the sort key for the `Spam` folder."
12226
+ },
12227
+ "resourceCreatedAt": {
12228
+ "type": "string",
12229
+ "description": "Denormalised copy of the underlying resource's own `created` timestamp. Used as the sparse unread-index sort key so the unread feed surfaces oldest resources first, not oldest state rows."
12230
+ },
12231
+ "flags": {
12232
+ "type": "object",
12233
+ "additionalProperties": true,
12234
+ "description": "Open-ended per-resource flags (e.g. `{muted: true}` on conversations, `{pinned: true}` on candidates). First-class state goes on the top-level attributes; ad-hoc state lives here."
12235
+ },
12236
+ "timestamps": {
12237
+ "title": "ResourceTimestampsSchema",
12238
+ "type": "object",
12239
+ "properties": {
12240
+ "created": {
12241
+ "type": "string",
12242
+ "format": "date-time"
12243
+ },
12244
+ "modified": {
12245
+ "type": "string",
12246
+ "format": "date-time"
12247
+ }
12248
+ }
12249
+ }
12250
+ }
12251
+ }
12252
+ }
12253
+ }
12254
+ }
12255
+ },
12256
+ "_meta": {
12257
+ "method": "POST",
12258
+ "path": "/v1/states",
12259
+ "operationId": "createState"
12260
+ }
12261
+ },
12262
+ {
12263
+ "name": "states_options",
12264
+ "description": "States Options",
12265
+ "inputSchema": {
12266
+ "type": "object",
12267
+ "properties": {}
12268
+ },
12269
+ "_meta": {
12270
+ "method": "OPTIONS",
12271
+ "path": "/v1/states",
12272
+ "operationId": "statesOptions"
12273
+ }
12274
+ },
12275
+ {
12276
+ "name": "show_state",
12277
+ "description": "Show State",
12278
+ "inputSchema": {
12279
+ "type": "object",
12280
+ "properties": {}
12281
+ },
12282
+ "_meta": {
12283
+ "method": "GET",
12284
+ "path": "/v1/states/{stateId}",
12285
+ "operationId": "showState"
12286
+ }
12287
+ },
12288
+ {
12289
+ "name": "update_state",
12290
+ "description": "Update State",
12291
+ "inputSchema": {
12292
+ "title": "UpdateStateRequestBody",
12293
+ "type": "object",
12294
+ "required": [
12295
+ "data"
12296
+ ],
12297
+ "properties": {
12298
+ "data": {
12299
+ "title": "UpdateStateRequestBodyData",
12300
+ "type": "object",
12301
+ "required": [
12302
+ "type",
12303
+ "id",
12304
+ "attributes"
12305
+ ],
12306
+ "properties": {
12307
+ "type": {
12308
+ "type": "string",
12309
+ "enum": [
12310
+ "states"
12311
+ ]
12312
+ },
12313
+ "id": {
12314
+ "type": "string"
12315
+ },
12316
+ "attributes": {
12317
+ "title": "StateAttributesSchema",
12318
+ "type": "object",
12319
+ "properties": {
12320
+ "userId": {
12321
+ "type": "string",
12322
+ "description": "Owner of this state row. Always the authenticated user; never set by the client."
12323
+ },
12324
+ "resourceType": {
12325
+ "type": "string",
12326
+ "enum": [
12327
+ "emails",
12328
+ "candidates",
12329
+ "conversations",
12330
+ "jobs",
12331
+ "talents",
12332
+ "personas",
12333
+ "reports",
12334
+ "tasks"
12335
+ ],
12336
+ "description": "The kind of resource this state describes. Lives in the composite id as `{resourceType}:{resourceId}`."
12337
+ },
12338
+ "resourceId": {
12339
+ "type": "string",
12340
+ "description": "Id of the resource this state describes (e.g. an emailId, candidateId)."
12341
+ },
12342
+ "isSeen": {
12343
+ "type": "boolean",
12344
+ "description": "True if the user has opened the resource at least once. Derived from the presence of `seenAt`; clients can write either `isSeen` or `seenAt` on upsert."
12345
+ },
12346
+ "isStarred": {
12347
+ "type": "boolean",
12348
+ "description": "True if the user has starred/favourited the resource."
12349
+ },
12350
+ "isSpam": {
12351
+ "type": "boolean",
12352
+ "description": "True if the user marked this resource as spam. Distinct from the email service's `suppressed` status, which is SES-driven on outbound delivery; this is an inbound, per-user action."
12353
+ },
12354
+ "seenAt": {
12355
+ "type": "string",
12356
+ "description": "ISO 8601 timestamp of the user's most recent open. Absent means never seen."
12357
+ },
12358
+ "starredAt": {
12359
+ "type": "string",
12360
+ "description": "ISO 8601 timestamp of when the user starred the resource. Absent means not starred; used as the sort key for the `Starred` folder."
12361
+ },
12362
+ "spamAt": {
12363
+ "type": "string",
12364
+ "description": "ISO 8601 timestamp of when the user marked the resource as spam. Absent means not spam; used as the sort key for the `Spam` folder."
12365
+ },
12366
+ "resourceCreatedAt": {
12367
+ "type": "string",
12368
+ "description": "Denormalised copy of the underlying resource's own `created` timestamp. Used as the sparse unread-index sort key so the unread feed surfaces oldest resources first, not oldest state rows."
12369
+ },
12370
+ "flags": {
12371
+ "type": "object",
12372
+ "additionalProperties": true,
12373
+ "description": "Open-ended per-resource flags (e.g. `{muted: true}` on conversations, `{pinned: true}` on candidates). First-class state goes on the top-level attributes; ad-hoc state lives here."
12374
+ },
12375
+ "timestamps": {
12376
+ "title": "ResourceTimestampsSchema",
12377
+ "type": "object",
12378
+ "properties": {
12379
+ "created": {
12380
+ "type": "string",
12381
+ "format": "date-time"
12382
+ },
12383
+ "modified": {
12384
+ "type": "string",
12385
+ "format": "date-time"
12386
+ }
12387
+ }
12388
+ }
12389
+ }
12390
+ }
12391
+ }
12392
+ }
12393
+ }
12394
+ },
12395
+ "_meta": {
12396
+ "method": "PATCH",
12397
+ "path": "/v1/states/{stateId}",
12398
+ "operationId": "updateState"
12399
+ }
12400
+ },
12401
+ {
12402
+ "name": "delete_state",
12403
+ "description": "Delete State",
12404
+ "inputSchema": {
12405
+ "type": "object",
12406
+ "properties": {}
12407
+ },
12408
+ "_meta": {
12409
+ "method": "DELETE",
12410
+ "path": "/v1/states/{stateId}",
12411
+ "operationId": "deleteState"
12412
+ }
12413
+ },
12414
+ {
12415
+ "name": "state_options",
12416
+ "description": "State Options",
12417
+ "inputSchema": {
12418
+ "type": "object",
12419
+ "properties": {}
12420
+ },
12421
+ "_meta": {
12422
+ "method": "OPTIONS",
12423
+ "path": "/v1/states/{stateId}",
12424
+ "operationId": "stateOptions"
12425
+ }
12426
+ },
12427
+ {
12428
+ "name": "list_labels",
12429
+ "description": "List Labels",
12430
+ "inputSchema": {
12431
+ "type": "object",
12432
+ "properties": {
12433
+ "filterStatus": {
12434
+ "type": "string",
12435
+ "description": "filterStatus parameter",
12436
+ "enum": [
12437
+ "active",
12438
+ "archived"
12439
+ ]
12440
+ },
12441
+ "pageSize": {
12442
+ "type": "integer",
12443
+ "description": "Specifies the number of items to retrieve per page. The maximum value is 100."
12444
+ }
12445
+ }
12446
+ },
12447
+ "_meta": {
12448
+ "method": "GET",
12449
+ "path": "/v1/labels",
12450
+ "operationId": "listLabels"
12451
+ }
12452
+ },
12453
+ {
12454
+ "name": "create_label",
12455
+ "description": "Create Label",
12456
+ "inputSchema": {
12457
+ "title": "CreateLabelRequestBody",
12458
+ "type": "object",
12459
+ "required": [
12460
+ "data"
12461
+ ],
12462
+ "properties": {
12463
+ "data": {
12464
+ "title": "CreateLabelRequestBodyData",
12465
+ "type": "object",
12466
+ "required": [
12467
+ "type",
12468
+ "attributes"
12469
+ ],
12470
+ "properties": {
12471
+ "type": {
12472
+ "type": "string",
12473
+ "enum": [
12474
+ "labels"
12475
+ ]
12476
+ },
12477
+ "attributes": {
12478
+ "title": "LabelAttributesSchema",
12479
+ "type": "object",
12480
+ "properties": {
12481
+ "name": {
12482
+ "type": "string",
12483
+ "description": "Display name. Unique within a scope by convention but not enforced."
12484
+ },
12485
+ "color": {
12486
+ "type": "string",
12487
+ "description": "Hex or CSS-named color the UI uses to render the label pill."
12488
+ },
12489
+ "description": {
12490
+ "type": "string"
12491
+ },
12492
+ "scope": {
12493
+ "type": "string",
12494
+ "enum": [
12495
+ "tenant",
12496
+ "user"
12497
+ ],
12498
+ "description": "tenant = visible to every user in the tenant; user = visible only to the owner."
12499
+ },
12500
+ "ownerId": {
12501
+ "type": "string",
12502
+ "description": "Set server-side from the caller. Tenant-scope: tenantId. User-scope: the authenticated user's full userId."
12503
+ },
12504
+ "resourceTypes": {
12505
+ "type": "array",
12506
+ "items": {
12507
+ "type": "string"
12508
+ },
12509
+ "description": "Optional UI hint: if set, the frontend only exposes this label in the picker for these resource types (emails, candidates, ...). Not enforced server-side."
12510
+ },
12511
+ "status": {
12512
+ "type": "string",
12513
+ "enum": [
12514
+ "active",
12515
+ "archived"
12516
+ ],
12517
+ "description": "Archived labels stay readable (for historical assignments) but disappear from the default list."
12518
+ },
12519
+ "timestamps": {
12520
+ "title": "ResourceTimestampsSchema",
12521
+ "type": "object",
12522
+ "properties": {
12523
+ "created": {
12524
+ "type": "string",
12525
+ "format": "date-time"
12526
+ },
12527
+ "modified": {
12528
+ "type": "string",
12529
+ "format": "date-time"
12530
+ }
12531
+ }
12532
+ }
12533
+ }
12534
+ }
12535
+ }
12536
+ }
12537
+ }
12538
+ },
12539
+ "_meta": {
12540
+ "method": "POST",
12541
+ "path": "/v1/labels",
12542
+ "operationId": "createLabel"
12543
+ }
12544
+ },
12545
+ {
12546
+ "name": "labels_options",
12547
+ "description": "Labels Options",
12548
+ "inputSchema": {
12549
+ "type": "object",
12550
+ "properties": {}
12551
+ },
12552
+ "_meta": {
12553
+ "method": "OPTIONS",
12554
+ "path": "/v1/labels",
12555
+ "operationId": "labelsOptions"
12556
+ }
12557
+ },
12558
+ {
12559
+ "name": "show_label",
12560
+ "description": "Show Label",
12561
+ "inputSchema": {
12562
+ "type": "object",
12563
+ "properties": {}
12564
+ },
12565
+ "_meta": {
12566
+ "method": "GET",
12567
+ "path": "/v1/labels/{labelId}",
12568
+ "operationId": "showLabel"
12569
+ }
12570
+ },
12571
+ {
12572
+ "name": "update_label",
12573
+ "description": "Update Label",
12574
+ "inputSchema": {
12575
+ "title": "UpdateLabelRequestBody",
12576
+ "type": "object",
12577
+ "required": [
12578
+ "data"
12579
+ ],
12580
+ "properties": {
12581
+ "data": {
12582
+ "title": "UpdateLabelRequestBodyData",
12583
+ "type": "object",
12584
+ "required": [
12585
+ "type",
12586
+ "id",
12587
+ "attributes"
12588
+ ],
12589
+ "properties": {
12590
+ "type": {
12591
+ "type": "string",
12592
+ "enum": [
12593
+ "labels"
12594
+ ]
12595
+ },
12596
+ "id": {
12597
+ "type": "string"
12598
+ },
12599
+ "attributes": {
12600
+ "title": "LabelAttributesSchema",
12601
+ "type": "object",
12602
+ "properties": {
12603
+ "name": {
12604
+ "type": "string",
12605
+ "description": "Display name. Unique within a scope by convention but not enforced."
12606
+ },
12607
+ "color": {
12608
+ "type": "string",
12609
+ "description": "Hex or CSS-named color the UI uses to render the label pill."
12610
+ },
12611
+ "description": {
12612
+ "type": "string"
12613
+ },
12614
+ "scope": {
12615
+ "type": "string",
12616
+ "enum": [
12617
+ "tenant",
12618
+ "user"
12619
+ ],
12620
+ "description": "tenant = visible to every user in the tenant; user = visible only to the owner."
12621
+ },
12622
+ "ownerId": {
12623
+ "type": "string",
12624
+ "description": "Set server-side from the caller. Tenant-scope: tenantId. User-scope: the authenticated user's full userId."
12625
+ },
12626
+ "resourceTypes": {
12627
+ "type": "array",
12628
+ "items": {
12629
+ "type": "string"
12630
+ },
12631
+ "description": "Optional UI hint: if set, the frontend only exposes this label in the picker for these resource types (emails, candidates, ...). Not enforced server-side."
12632
+ },
12633
+ "status": {
12634
+ "type": "string",
12635
+ "enum": [
12636
+ "active",
12637
+ "archived"
12638
+ ],
12639
+ "description": "Archived labels stay readable (for historical assignments) but disappear from the default list."
12640
+ },
12641
+ "timestamps": {
12642
+ "title": "ResourceTimestampsSchema",
12643
+ "type": "object",
12644
+ "properties": {
12645
+ "created": {
12646
+ "type": "string",
12647
+ "format": "date-time"
12648
+ },
12649
+ "modified": {
12650
+ "type": "string",
12651
+ "format": "date-time"
12652
+ }
12653
+ }
12654
+ }
12655
+ }
12656
+ }
12657
+ }
12658
+ }
12659
+ }
12660
+ },
12661
+ "_meta": {
12662
+ "method": "PATCH",
12663
+ "path": "/v1/labels/{labelId}",
12664
+ "operationId": "updateLabel"
12665
+ }
12666
+ },
12667
+ {
12668
+ "name": "delete_label",
12669
+ "description": "Delete Label",
12670
+ "inputSchema": {
12671
+ "type": "object",
12672
+ "properties": {}
12673
+ },
12674
+ "_meta": {
12675
+ "method": "DELETE",
12676
+ "path": "/v1/labels/{labelId}",
12677
+ "operationId": "deleteLabel"
12678
+ }
12679
+ },
12680
+ {
12681
+ "name": "label_options",
12682
+ "description": "Label Options",
12683
+ "inputSchema": {
12684
+ "type": "object",
12685
+ "properties": {}
12686
+ },
12687
+ "_meta": {
12688
+ "method": "OPTIONS",
12689
+ "path": "/v1/labels/{labelId}",
12690
+ "operationId": "labelOptions"
12691
+ }
12692
+ },
12029
12693
  {
12030
12694
  "name": "list_meetings",
12031
12695
  "description": "List Meetings",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartytalent/mcp-tools",
3
- "version": "0.1.33-dev.2",
3
+ "version": "0.1.33-dev.4",
4
4
  "description": "MCP tool definitions for SmartyTalent API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",