@smartytalent/mcp-tools 0.8.14 → 0.8.16

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 +62 -8
  2. package/package.json +1 -1
package/dist/tools.json CHANGED
@@ -168,6 +168,10 @@
168
168
  "ad": {
169
169
  "type": "object"
170
170
  },
171
+ "brand": {
172
+ "type": "object",
173
+ "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
+ },
171
175
  "conversation": {
172
176
  "type": "object"
173
177
  },
@@ -638,6 +642,10 @@
638
642
  "ad": {
639
643
  "type": "object"
640
644
  },
645
+ "brand": {
646
+ "type": "object",
647
+ "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."
648
+ },
641
649
  "conversation": {
642
650
  "type": "object"
643
651
  },
@@ -8532,6 +8540,10 @@
8532
8540
  "type": "integer",
8533
8541
  "description": "Optimistic-concurrency token, bumped atomically on every write.\nSend it back as `If-Match: \"<revision>\"` on PATCH to make the\nwrite conditional; a mismatch is a 409 `SM_FORM_STALE`, meaning\nsomeone else saved since your read. Without the header the write\nis unconditional and the last writer wins - which for a form\nmeans silently replacing the whole field schema."
8534
8542
  },
8543
+ "translate": {
8544
+ "type": "boolean",
8545
+ "description": "Fill missing locales on the field schema, asynchronously. Fires\nafter the write lands, so it can ride the same PATCH as an edit or\nbe sent alone. Targets the tenant's active languages plus the\nform's own `languageCode`, translating FROM the `en-US` text - a\nfield with no `en-US` label is skipped rather than invented.\n\nFill-only-missing: text already present in a locale is never\noverwritten, and an operator edit that lands mid-run wins (the\nfill re-merges only what is still missing). Field ids,\n`options[].value`, `knockout`, `verifies` and `expectedAnswer` are\nnever touched, so the tokens the submission gate compares survive.\n\nThe outcome lands in `meta.translation`\n(`status`, `translated`, `locales`, `startedAt`, `finishedAt`);\npoll `showForm` for it. Publishing is separate: the filled text\nreaches the apply page on the next `publish: true`."
8546
+ },
8535
8547
  "publishedUrl": {
8536
8548
  "type": "string",
8537
8549
  "description": "Where the published document lives. Server-managed: the server\nowns the key it wrote, so never compose this URL client-side - a\nURL built from the wrong tenant shortCode is indistinguishable\nfrom a correct one."
@@ -8670,6 +8682,10 @@
8670
8682
  "type": "integer",
8671
8683
  "description": "Optimistic-concurrency token, bumped atomically on every write.\nSend it back as `If-Match: \"<revision>\"` on PATCH to make the\nwrite conditional; a mismatch is a 409 `SM_FORM_STALE`, meaning\nsomeone else saved since your read. Without the header the write\nis unconditional and the last writer wins - which for a form\nmeans silently replacing the whole field schema."
8672
8684
  },
8685
+ "translate": {
8686
+ "type": "boolean",
8687
+ "description": "Fill missing locales on the field schema, asynchronously. Fires\nafter the write lands, so it can ride the same PATCH as an edit or\nbe sent alone. Targets the tenant's active languages plus the\nform's own `languageCode`, translating FROM the `en-US` text - a\nfield with no `en-US` label is skipped rather than invented.\n\nFill-only-missing: text already present in a locale is never\noverwritten, and an operator edit that lands mid-run wins (the\nfill re-merges only what is still missing). Field ids,\n`options[].value`, `knockout`, `verifies` and `expectedAnswer` are\nnever touched, so the tokens the submission gate compares survive.\n\nThe outcome lands in `meta.translation`\n(`status`, `translated`, `locales`, `startedAt`, `finishedAt`);\npoll `showForm` for it. Publishing is separate: the filled text\nreaches the apply page on the next `publish: true`."
8688
+ },
8673
8689
  "publishedUrl": {
8674
8690
  "type": "string",
8675
8691
  "description": "Where the published document lives. Server-managed: the server\nowns the key it wrote, so never compose this URL client-side - a\nURL built from the wrong tenant shortCode is indistinguishable\nfrom a correct one."
@@ -20904,7 +20920,17 @@
20904
20920
  "type": "string"
20905
20921
  },
20906
20922
  "status": {
20907
- "type": "string"
20923
+ "type": "string",
20924
+ "enum": [
20925
+ "active",
20926
+ "inactive",
20927
+ "pending",
20928
+ "draft",
20929
+ "accepted",
20930
+ "archived",
20931
+ "failed"
20932
+ ],
20933
+ "description": "Lifecycle of the ad. Clients do NOT drive `accepted`: the gate-2\nworkflow's job:accept-artifacts step flips draft -> accepted when the\noperator activates the job. A build-phase ad lands `draft`, a legacy\ncreate-on-activate ad lands `active`, and `failed` is stamped by the\npipeline's own failure handler."
20908
20934
  },
20909
20935
  "platforms": {
20910
20936
  "type": "object",
@@ -20912,7 +20938,7 @@
20912
20938
  },
20913
20939
  "files": {
20914
20940
  "type": "array",
20915
- "description": "Generated ad artifacts: master images per aspect variant, platform\ncrops, and a zip. Stored in the PRIVATE ad bucket; each entry carries\na short-lived presigned `url` the govern UI renders during review.\nThe public CDN copy is written only when the job is accepted\n(ad:publish). Replaces the never-emitted legacy `images` field.",
20941
+ "description": "Generated ad artifacts: master images per aspect variant, platform\ncrops, and a zip. Stored in the PRIVATE ad bucket; each entry carries\na short-lived presigned `url` the govern UI renders during review.\n\nThe PUBLIC CDN copy of the apply hero and listing card is written by\nthe `apply:publish` workflow action, which runs automatically as a\nstep of the gate-2 workflow (Activate Job From Operator). There is no\n`ad:publish` action and no status a client can write to trigger\npublication. The published URLs are `heroUrl` / `cardUrl` inside\n`tenants/{tenantShortCode}/apply/{jobShortCode}.json` on the CDN, and\nthey are content-addressed (a regenerated creative gets a new path)\nso they can be cached immutably.\n\nReplaces the never-emitted legacy `images` field.",
20916
20942
  "items": {
20917
20943
  "type": "object",
20918
20944
  "properties": {
@@ -20927,11 +20953,20 @@
20927
20953
  },
20928
20954
  "variant": {
20929
20955
  "type": "string",
20930
- "description": "Aspect variant for a master (square / landscape / portrait)."
20956
+ "enum": [
20957
+ "square",
20958
+ "landscape"
20959
+ ],
20960
+ "description": "Aspect variant for a master. `portrait` was removed - nothing consumed it."
20931
20961
  },
20932
20962
  "platform": {
20933
20963
  "type": "string",
20934
- "description": "Target platform for a crop (linkedin / indeed / ...)."
20964
+ "description": "Target platform for a crop (linkedin_short / indeed / apply / apply_card / ...)."
20965
+ },
20966
+ "language": {
20967
+ "type": "string",
20968
+ "pattern": "^[a-z]{2}-[A-Z]{2}$",
20969
+ "description": "Locale of the text composited onto this crop. Present only on\n`type: image`; masters are text-free artwork and the zip is a\nbundle, so both omit it. Absent on crops generated before\nper-locale banners shipped - treat as the job's languageCode."
20935
20970
  },
20936
20971
  "s3Key": {
20937
20972
  "type": "string"
@@ -21073,7 +21108,17 @@
21073
21108
  "type": "string"
21074
21109
  },
21075
21110
  "status": {
21076
- "type": "string"
21111
+ "type": "string",
21112
+ "enum": [
21113
+ "active",
21114
+ "inactive",
21115
+ "pending",
21116
+ "draft",
21117
+ "accepted",
21118
+ "archived",
21119
+ "failed"
21120
+ ],
21121
+ "description": "Lifecycle of the ad. Clients do NOT drive `accepted`: the gate-2\nworkflow's job:accept-artifacts step flips draft -> accepted when the\noperator activates the job. A build-phase ad lands `draft`, a legacy\ncreate-on-activate ad lands `active`, and `failed` is stamped by the\npipeline's own failure handler."
21077
21122
  },
21078
21123
  "platforms": {
21079
21124
  "type": "object",
@@ -21081,7 +21126,7 @@
21081
21126
  },
21082
21127
  "files": {
21083
21128
  "type": "array",
21084
- "description": "Generated ad artifacts: master images per aspect variant, platform\ncrops, and a zip. Stored in the PRIVATE ad bucket; each entry carries\na short-lived presigned `url` the govern UI renders during review.\nThe public CDN copy is written only when the job is accepted\n(ad:publish). Replaces the never-emitted legacy `images` field.",
21129
+ "description": "Generated ad artifacts: master images per aspect variant, platform\ncrops, and a zip. Stored in the PRIVATE ad bucket; each entry carries\na short-lived presigned `url` the govern UI renders during review.\n\nThe PUBLIC CDN copy of the apply hero and listing card is written by\nthe `apply:publish` workflow action, which runs automatically as a\nstep of the gate-2 workflow (Activate Job From Operator). There is no\n`ad:publish` action and no status a client can write to trigger\npublication. The published URLs are `heroUrl` / `cardUrl` inside\n`tenants/{tenantShortCode}/apply/{jobShortCode}.json` on the CDN, and\nthey are content-addressed (a regenerated creative gets a new path)\nso they can be cached immutably.\n\nReplaces the never-emitted legacy `images` field.",
21085
21130
  "items": {
21086
21131
  "type": "object",
21087
21132
  "properties": {
@@ -21096,11 +21141,20 @@
21096
21141
  },
21097
21142
  "variant": {
21098
21143
  "type": "string",
21099
- "description": "Aspect variant for a master (square / landscape / portrait)."
21144
+ "enum": [
21145
+ "square",
21146
+ "landscape"
21147
+ ],
21148
+ "description": "Aspect variant for a master. `portrait` was removed - nothing consumed it."
21100
21149
  },
21101
21150
  "platform": {
21102
21151
  "type": "string",
21103
- "description": "Target platform for a crop (linkedin / indeed / ...)."
21152
+ "description": "Target platform for a crop (linkedin_short / indeed / apply / apply_card / ...)."
21153
+ },
21154
+ "language": {
21155
+ "type": "string",
21156
+ "pattern": "^[a-z]{2}-[A-Z]{2}$",
21157
+ "description": "Locale of the text composited onto this crop. Present only on\n`type: image`; masters are text-free artwork and the zip is a\nbundle, so both omit it. Absent on crops generated before\nper-locale banners shipped - treat as the job's languageCode."
21104
21158
  },
21105
21159
  "s3Key": {
21106
21160
  "type": "string"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartytalent/mcp-tools",
3
- "version": "0.8.14",
3
+ "version": "0.8.16",
4
4
  "description": "MCP tool definitions for SmartyTalent API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",