@smartytalent/mcp-tools 0.9.35 → 0.9.37

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 +55 -30
  2. package/package.json +1 -1
package/dist/tools.json CHANGED
@@ -166,20 +166,24 @@
166
166
  "type": "object",
167
167
  "properties": {
168
168
  "ad": {
169
- "type": "object"
169
+ "type": "object",
170
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. Ads and their images are built for every recruitment process; `enabled` never gated anything, `generateImages` is always on (the env kill switch AD_IMAGE_GENERATION remains), `platforms` were never read (the platform lists are fixed in code). Removed in a later, breaking release together with settings.feedback; declared until then because the generated model whitelists keys."
170
171
  },
171
172
  "brand": {
172
173
  "type": "object",
173
174
  "description": "Brand rules the ad and careers generators read. Split by who can\nact on what: exact colours are applied by CODE (an image model\nonly ever approximates a hex), while the look-and-feel strings\nare fed to the image prompt. Keys: primaryColor / secondaryColor\n(^#[0-9a-fA-F]{6}$), photography, avoid, tone. Freeform for now;\na dedicated brand service is the endgame once logo variants,\ntypefaces and versioning arrive."
174
175
  },
175
176
  "conversation": {
176
- "type": "object"
177
+ "type": "object",
178
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. The AI interview is part of the recruitment process (settings.automation on the job); `jobInterview.enabled` never had a reader. Removed in a later, breaking release; declared until then because the generated model whitelists keys."
177
179
  },
178
180
  "report": {
179
- "type": "object"
181
+ "type": "object",
182
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. Reports run for EVERY active tenant (daily, weekly, monthly) and are downloaded in the report app (showReport meta.pdf); e-mail delivery is gone (a per-user preference is a later phase), so `emails` and `period` gate nothing. Removed in a later, breaking release; declared until then because the generated model whitelists keys."
180
183
  },
181
184
  "email": {
182
- "type": "object"
185
+ "type": "object",
186
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. `domains` (trusted e-mail domains) never had a reader - inbound trust comes from the user registry and SPF/DKIM alignment. Removed in a later, breaking release; declared until then because the generated model whitelists keys."
183
187
  },
184
188
  "operation": {
185
189
  "type": "object",
@@ -188,7 +192,7 @@
188
192
  "feedback": {
189
193
  "title": "TenantAttributesSettingsFeedbackSchema",
190
194
  "type": "object",
191
- "description": "Organisation-wide switch for outbound candidate feedback. Absent = enabled. enabled=false makes feedback:resolve return enabled=false with reason disabled:tenant BEFORE any policy lookup; default and per-job feedback rows stay stored and come back to life when re-enabled. Explicitly validated: enabled must be a JSON boolean (a string is a 400). NOTE: the generated model whitelists keys, so this property MUST be declared for the SDK to carry it. Since the automation switches (2026-09-24) this is the legacy kill switch; the three-state default is settings.automation.feedback.",
195
+ "description": "DEPRECATED (2026-09-24, S.K.: settings.automation.feedback is the ONE control of feedback; this field will be removed in a later, breaking release). Organisation-wide legacy switch for outbound candidate feedback: absent = enabled; enabled=false makes feedback:resolve return enabled=false with reason disabled:tenant ONLY while settings.automation.feedback is absent on both the job and the tenant - once the new key is set at either level this field is ignored; default and per-job feedback rows stay stored. Explicitly validated: enabled must be a JSON boolean (a string is a 400). NOTE: the generated model whitelists keys, so this property MUST stay declared until the removal release.",
192
196
  "properties": {
193
197
  "enabled": {
194
198
  "type": "boolean"
@@ -738,20 +742,24 @@
738
742
  "type": "object",
739
743
  "properties": {
740
744
  "ad": {
741
- "type": "object"
745
+ "type": "object",
746
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. Ads and their images are built for every recruitment process; `enabled` never gated anything, `generateImages` is always on (the env kill switch AD_IMAGE_GENERATION remains), `platforms` were never read (the platform lists are fixed in code). Removed in a later, breaking release together with settings.feedback; declared until then because the generated model whitelists keys."
742
747
  },
743
748
  "brand": {
744
749
  "type": "object",
745
750
  "description": "Brand rules the ad and careers generators read. Split by who can\nact on what: exact colours are applied by CODE (an image model\nonly ever approximates a hex), while the look-and-feel strings\nare fed to the image prompt. Keys: primaryColor / secondaryColor\n(^#[0-9a-fA-F]{6}$), photography, avoid, tone. Freeform for now;\na dedicated brand service is the endgame once logo variants,\ntypefaces and versioning arrive."
746
751
  },
747
752
  "conversation": {
748
- "type": "object"
753
+ "type": "object",
754
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. The AI interview is part of the recruitment process (settings.automation on the job); `jobInterview.enabled` never had a reader. Removed in a later, breaking release; declared until then because the generated model whitelists keys."
749
755
  },
750
756
  "report": {
751
- "type": "object"
757
+ "type": "object",
758
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. Reports run for EVERY active tenant (daily, weekly, monthly) and are downloaded in the report app (showReport meta.pdf); e-mail delivery is gone (a per-user preference is a later phase), so `emails` and `period` gate nothing. Removed in a later, breaking release; declared until then because the generated model whitelists keys."
752
759
  },
753
760
  "email": {
754
- "type": "object"
761
+ "type": "object",
762
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. `domains` (trusted e-mail domains) never had a reader - inbound trust comes from the user registry and SPF/DKIM alignment. Removed in a later, breaking release; declared until then because the generated model whitelists keys."
755
763
  },
756
764
  "operation": {
757
765
  "type": "object",
@@ -760,7 +768,7 @@
760
768
  "feedback": {
761
769
  "title": "TenantAttributesSettingsFeedbackSchema",
762
770
  "type": "object",
763
- "description": "Organisation-wide switch for outbound candidate feedback. Absent = enabled. enabled=false makes feedback:resolve return enabled=false with reason disabled:tenant BEFORE any policy lookup; default and per-job feedback rows stay stored and come back to life when re-enabled. Explicitly validated: enabled must be a JSON boolean (a string is a 400). NOTE: the generated model whitelists keys, so this property MUST be declared for the SDK to carry it. Since the automation switches (2026-09-24) this is the legacy kill switch; the three-state default is settings.automation.feedback.",
771
+ "description": "DEPRECATED (2026-09-24, S.K.: settings.automation.feedback is the ONE control of feedback; this field will be removed in a later, breaking release). Organisation-wide legacy switch for outbound candidate feedback: absent = enabled; enabled=false makes feedback:resolve return enabled=false with reason disabled:tenant ONLY while settings.automation.feedback is absent on both the job and the tenant - once the new key is set at either level this field is ignored; default and per-job feedback rows stay stored. Explicitly validated: enabled must be a JSON boolean (a string is a 400). NOTE: the generated model whitelists keys, so this property MUST stay declared until the removal release.",
764
772
  "properties": {
765
773
  "enabled": {
766
774
  "type": "boolean"
@@ -5397,7 +5405,7 @@
5397
5405
  "feedback": {
5398
5406
  "title": "JobAttributesSettingsFeedbackSchema",
5399
5407
  "type": "object",
5400
- "description": "Per-job switch for outbound candidate feedback. Absent = enabled. enabled=false makes feedback:resolve return enabled=false with reason disabled:job for candidates of this job, before the job override / tenant default lookup. The tenant-level switch (tenant.settings.feedback.enabled) wins over this one. Explicitly validated: enabled must be a JSON boolean. Since the automation switches (2026-09-24) this is the legacy kill switch; the three-state control is settings.automation.feedback.",
5408
+ "description": "DEPRECATED (2026-09-24, S.K.: settings.automation.feedback is the ONE control of feedback; this field will be removed in a later, breaking release). Per-job legacy switch for outbound candidate feedback: absent = enabled; enabled=false makes feedback:resolve return enabled=false with reason disabled:job ONLY while settings.automation.feedback is absent on both the job and the tenant - once the new key is set at either level this field is ignored. Between the two legacy switches the tenant's wins. Explicitly validated: enabled must be a JSON boolean.",
5401
5409
  "properties": {
5402
5410
  "enabled": {
5403
5411
  "type": "boolean"
@@ -5407,7 +5415,7 @@
5407
5415
  "automation": {
5408
5416
  "title": "JobAttributesSettingsAutomationSchema",
5409
5417
  "type": "object",
5410
- "description": "Per-job automation switches (PLAN_PROCESS_AUTOMATION, 2026-09-24): who runs each stage of THIS recruitment process. Values per key: auto = Boe runs the stage, manual = a human runs it (Boe leaves a task on the RecOps board and waits), off = the stage is not part of this process (the candidate moves on). Every key is optional: absent = the organisation's default (tenant.settings.automation), else the platform default (sourcing manual, everything else auto); the job overrides the tenant in BOTH directions. Read by the automation:resolve action at the head of the candidate-facing workflows and by feedback:resolve (feedback). PATCH merges this block PER KEY (send one switch at a time; a key sent as null clears the override). Writable only by sysowner / owner / admin / recops - any other role gets 403 on a payload that carries it, on POST and PATCH. Validated in code: interview and offer accept auto|manual, surveys accepts auto|off, the rest auto|manual|off; an unknown key or value is a 400 naming it. The legacy settings.feedback.enabled=false (job or tenant) still disables feedback with kill-switch precedence. The job build (Create Job From Brief) never generates this block: it keeps the row's values and seeds `off` for the stages the manager declared out of the process in the intake (brief.intakeContext.process).",
5418
+ "description": "Per-job automation switches (PLAN_PROCESS_AUTOMATION, 2026-09-24): who runs each stage of THIS recruitment process. Values per key: auto = Boe runs the stage, manual = a human runs it (Boe leaves a task on the RecOps board and waits), off = the stage is not part of this process (the candidate moves on). Every key is optional: absent = the organisation's default (tenant.settings.automation), else the platform default (sourcing manual, everything else auto); the job overrides the tenant in BOTH directions. Read by the automation:resolve action at the head of the candidate-facing workflows and by feedback:resolve (feedback). PATCH merges this block PER KEY (send one switch at a time; a key sent as null clears the override). Writable only by sysowner / owner / admin / recops - any other role gets 403 on a payload that carries it, on POST and PATCH. Validated in code: interview and offer accept auto|manual, surveys accepts auto|off, the rest auto|manual|off; an unknown key or value is a 400 naming it. `feedback` here is the ONE control of feedback e-mails (S.K. 2026-09-24): the deprecated settings.feedback.enabled counts only while this key is absent on both the job and the tenant. The job build (Create Job From Brief) never generates this block: it keeps the row's values and seeds `off` for the stages the manager declared out of the process in the intake (brief.intakeContext.process).",
5411
5419
  "properties": {
5412
5420
  "sourcing": {
5413
5421
  "type": "string",
@@ -6297,7 +6305,7 @@
6297
6305
  "feedback": {
6298
6306
  "title": "JobAttributesSettingsFeedbackSchema",
6299
6307
  "type": "object",
6300
- "description": "Per-job switch for outbound candidate feedback. Absent = enabled. enabled=false makes feedback:resolve return enabled=false with reason disabled:job for candidates of this job, before the job override / tenant default lookup. The tenant-level switch (tenant.settings.feedback.enabled) wins over this one. Explicitly validated: enabled must be a JSON boolean. Since the automation switches (2026-09-24) this is the legacy kill switch; the three-state control is settings.automation.feedback.",
6308
+ "description": "DEPRECATED (2026-09-24, S.K.: settings.automation.feedback is the ONE control of feedback; this field will be removed in a later, breaking release). Per-job legacy switch for outbound candidate feedback: absent = enabled; enabled=false makes feedback:resolve return enabled=false with reason disabled:job ONLY while settings.automation.feedback is absent on both the job and the tenant - once the new key is set at either level this field is ignored. Between the two legacy switches the tenant's wins. Explicitly validated: enabled must be a JSON boolean.",
6301
6309
  "properties": {
6302
6310
  "enabled": {
6303
6311
  "type": "boolean"
@@ -6307,7 +6315,7 @@
6307
6315
  "automation": {
6308
6316
  "title": "JobAttributesSettingsAutomationSchema",
6309
6317
  "type": "object",
6310
- "description": "Per-job automation switches (PLAN_PROCESS_AUTOMATION, 2026-09-24): who runs each stage of THIS recruitment process. Values per key: auto = Boe runs the stage, manual = a human runs it (Boe leaves a task on the RecOps board and waits), off = the stage is not part of this process (the candidate moves on). Every key is optional: absent = the organisation's default (tenant.settings.automation), else the platform default (sourcing manual, everything else auto); the job overrides the tenant in BOTH directions. Read by the automation:resolve action at the head of the candidate-facing workflows and by feedback:resolve (feedback). PATCH merges this block PER KEY (send one switch at a time; a key sent as null clears the override). Writable only by sysowner / owner / admin / recops - any other role gets 403 on a payload that carries it, on POST and PATCH. Validated in code: interview and offer accept auto|manual, surveys accepts auto|off, the rest auto|manual|off; an unknown key or value is a 400 naming it. The legacy settings.feedback.enabled=false (job or tenant) still disables feedback with kill-switch precedence. The job build (Create Job From Brief) never generates this block: it keeps the row's values and seeds `off` for the stages the manager declared out of the process in the intake (brief.intakeContext.process).",
6318
+ "description": "Per-job automation switches (PLAN_PROCESS_AUTOMATION, 2026-09-24): who runs each stage of THIS recruitment process. Values per key: auto = Boe runs the stage, manual = a human runs it (Boe leaves a task on the RecOps board and waits), off = the stage is not part of this process (the candidate moves on). Every key is optional: absent = the organisation's default (tenant.settings.automation), else the platform default (sourcing manual, everything else auto); the job overrides the tenant in BOTH directions. Read by the automation:resolve action at the head of the candidate-facing workflows and by feedback:resolve (feedback). PATCH merges this block PER KEY (send one switch at a time; a key sent as null clears the override). Writable only by sysowner / owner / admin / recops - any other role gets 403 on a payload that carries it, on POST and PATCH. Validated in code: interview and offer accept auto|manual, surveys accepts auto|off, the rest auto|manual|off; an unknown key or value is a 400 naming it. `feedback` here is the ONE control of feedback e-mails (S.K. 2026-09-24): the deprecated settings.feedback.enabled counts only while this key is absent on both the job and the tenant. The job build (Create Job From Brief) never generates this block: it keeps the row's values and seeds `off` for the stages the manager declared out of the process in the intake (brief.intakeContext.process).",
6311
6319
  "properties": {
6312
6320
  "sourcing": {
6313
6321
  "type": "string",
@@ -22466,12 +22474,23 @@
22466
22474
  "properties": {
22467
22475
  "filterStatus": {
22468
22476
  "type": "string",
22469
- "description": "Returns reports with the current status (active, archived). If not provided, the default value will be set to 'active'.",
22477
+ "description": "Returns reports with the given status. Pass it explicitly - the backend applies NO default, so without it pending and failed rows come back too. The report app's history query is `filterStatus=active&sort=-created&pageNumber=1` (newest first): the sort is honoured next to filterStatus ONLY with page-number pagination (`pageNumber`); the cursor pagination (`pageAfter` / `pageBefore`, the default without pageNumber) keeps the index order and ignores `sort` (measured on dev03 2026-09-24). One filter at a time: the backend serves a single index per request.",
22470
22478
  "enum": [
22471
22479
  "active",
22472
- "archived"
22480
+ "inactive",
22481
+ "pending",
22482
+ "archived",
22483
+ "failed"
22473
22484
  ]
22474
22485
  },
22486
+ "filterResourceId": {
22487
+ "type": "string",
22488
+ "description": "Returns the reports of ONE resource (a job id, or the tenant id for the scheduled tenant reports). Served from the ResourceIndex in index order: `sort` is IGNORED next to it, and it cannot be combined with filterStatus or the created/modified window (one filter at a time). For the tenant history use `filterStatus=active&sort=-created` instead and read `resourceType` / `period` off the rows."
22489
+ },
22490
+ "sort": {
22491
+ "type": "string",
22492
+ "description": "`created` / `-created` / `modified` / `-modified`. Honoured alone (any pagination) and next to filterStatus with page-number pagination only (`pageNumber`; the cursor pagination ignores it there); ignored next to filterResourceId (index order); the date windows keep their own index order."
22493
+ },
22475
22494
  "filterCreatedFrom": {
22476
22495
  "type": "string",
22477
22496
  "description": "Filters results to include only those created from the specified date and time. The value must be in ISO 8601 format."
@@ -22546,7 +22565,7 @@
22546
22565
  "properties": {
22547
22566
  "resourceId": {
22548
22567
  "type": "string",
22549
- "description": "Identifier of the resource this report is associated with (job ID or tenant ID)"
22568
+ "description": "Identifier of the resource this report is associated with: the tenant id for the scheduled tenant reports (resourceType tenants), a job id for a job report. On the wire since 2026-09-24 (it was stored but not returned)."
22550
22569
  },
22551
22570
  "resourceType": {
22552
22571
  "type": "string",
@@ -22568,12 +22587,14 @@
22568
22587
  ]
22569
22588
  },
22570
22589
  "reportContent": {
22571
- "type": "string",
22572
- "description": "Merged analytics and AI analysis content"
22590
+ "type": "object",
22591
+ "additionalProperties": true,
22592
+ "description": "Merged analytics and AI analysis content, an OBJECT (declared as a string until 2026-09-24): keyed by locale for a non-English tenant (`en-US` + the tenant language, each holding the sections kpis / alerts / notes / insights / dailyData / topJobs / ...), the sections directly at the top level for an en-US tenant; `{}` while the row is pending."
22573
22593
  },
22574
22594
  "settings": {
22575
- "type": "string",
22576
- "description": "Report configuration including email recipients and period preferences"
22595
+ "type": "object",
22596
+ "additionalProperties": true,
22597
+ "description": "The analysis window the broker stamps at creation, an OBJECT (declared as a string until 2026-09-24): startDate, endDate (naive calendar stamps `YYYY-MM-DD HH:MM:SS`), reportPeriod, displayName and the period's own fields (day / month / year, isoWeek / isoYear / dateRange, monthName / daysCount). Since 2026-09-24 (PLAN_TENANT_SETTINGS_CLEANUP) no `emails`: reports are downloaded in the report app, not mailed."
22577
22598
  },
22578
22599
  "shortCode": {
22579
22600
  "type": "string",
@@ -22595,8 +22616,9 @@
22595
22616
  ]
22596
22617
  },
22597
22618
  "ttl": {
22598
- "type": "string",
22599
- "description": "Time-to-live value for automatic report expiration"
22619
+ "type": "integer",
22620
+ "format": "int64",
22621
+ "description": "Epoch seconds at which DynamoDB expires the row (an INTEGER, declared as a string until 2026-09-24): created + 400 days on every scheduled report since 2026-09-24; null on rows born before that."
22600
22622
  },
22601
22623
  "timestamps": {
22602
22624
  "title": "ResourceTimestampsSchema",
@@ -22713,7 +22735,7 @@
22713
22735
  "properties": {
22714
22736
  "resourceId": {
22715
22737
  "type": "string",
22716
- "description": "Identifier of the resource this report is associated with (job ID or tenant ID)"
22738
+ "description": "Identifier of the resource this report is associated with: the tenant id for the scheduled tenant reports (resourceType tenants), a job id for a job report. On the wire since 2026-09-24 (it was stored but not returned)."
22717
22739
  },
22718
22740
  "resourceType": {
22719
22741
  "type": "string",
@@ -22735,12 +22757,14 @@
22735
22757
  ]
22736
22758
  },
22737
22759
  "reportContent": {
22738
- "type": "string",
22739
- "description": "Merged analytics and AI analysis content"
22760
+ "type": "object",
22761
+ "additionalProperties": true,
22762
+ "description": "Merged analytics and AI analysis content, an OBJECT (declared as a string until 2026-09-24): keyed by locale for a non-English tenant (`en-US` + the tenant language, each holding the sections kpis / alerts / notes / insights / dailyData / topJobs / ...), the sections directly at the top level for an en-US tenant; `{}` while the row is pending."
22740
22763
  },
22741
22764
  "settings": {
22742
- "type": "string",
22743
- "description": "Report configuration including email recipients and period preferences"
22765
+ "type": "object",
22766
+ "additionalProperties": true,
22767
+ "description": "The analysis window the broker stamps at creation, an OBJECT (declared as a string until 2026-09-24): startDate, endDate (naive calendar stamps `YYYY-MM-DD HH:MM:SS`), reportPeriod, displayName and the period's own fields (day / month / year, isoWeek / isoYear / dateRange, monthName / daysCount). Since 2026-09-24 (PLAN_TENANT_SETTINGS_CLEANUP) no `emails`: reports are downloaded in the report app, not mailed."
22744
22768
  },
22745
22769
  "shortCode": {
22746
22770
  "type": "string",
@@ -22762,8 +22786,9 @@
22762
22786
  ]
22763
22787
  },
22764
22788
  "ttl": {
22765
- "type": "string",
22766
- "description": "Time-to-live value for automatic report expiration"
22789
+ "type": "integer",
22790
+ "format": "int64",
22791
+ "description": "Epoch seconds at which DynamoDB expires the row (an INTEGER, declared as a string until 2026-09-24): created + 400 days on every scheduled report since 2026-09-24; null on rows born before that."
22767
22792
  },
22768
22793
  "timestamps": {
22769
22794
  "title": "ResourceTimestampsSchema",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartytalent/mcp-tools",
3
- "version": "0.9.35",
3
+ "version": "0.9.37",
4
4
  "description": "MCP tool definitions for SmartyTalent API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",