@smartytalent/mcp-tools 0.1.33-dev.37 → 0.1.33-dev.38

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 +591 -15
  2. package/package.json +1 -1
package/dist/tools.json CHANGED
@@ -16964,12 +16964,14 @@
16964
16964
  "name": "create_attempt",
16965
16965
  "description": "Create Attempt",
16966
16966
  "inputSchema": {
16967
+ "title": "CreateAttemptRequestBody",
16967
16968
  "type": "object",
16968
16969
  "required": [
16969
16970
  "data"
16970
16971
  ],
16971
16972
  "properties": {
16972
16973
  "data": {
16974
+ "title": "CreateAttemptRequestBodyData",
16973
16975
  "type": "object",
16974
16976
  "required": [
16975
16977
  "type",
@@ -16983,35 +16985,354 @@
16983
16985
  ]
16984
16986
  },
16985
16987
  "attributes": {
16988
+ "title": "AttemptAttributesSchema",
16986
16989
  "type": "object",
16987
16990
  "properties": {
16991
+ "status": {
16992
+ "type": "string",
16993
+ "description": "Attempt lifecycle. Set server-side; only `submitted` is candidate-writable (via guest PATCH).",
16994
+ "enum": [
16995
+ "pending",
16996
+ "inProgress",
16997
+ "submitted",
16998
+ "evaluated",
16999
+ "reviewed",
17000
+ "anonymized",
17001
+ "failed"
17002
+ ]
17003
+ },
16988
17004
  "languageCode": {
16989
- "type": "string"
17005
+ "type": "string",
17006
+ "description": "Locale the candidate is taking the assessment in (e.g. 'en-US')."
16990
17007
  },
16991
- "durationMinutes": {
16992
- "type": "number"
17008
+ "answers": {
17009
+ "type": "array",
17010
+ "description": "Candidate's answers, one per attempted question. See AnswerSchema.",
17011
+ "items": {
17012
+ "title": "AnswerSchema",
17013
+ "description": "A candidate's answer to one question. The `value` shape depends\non the question type - branch on `questionType` to know how to\nread it. File uploads (file-upload / video-recording question\ntypes) live in the separate `files` array, NOT in `value`. This\nmirrors the wire shape used by /v1/guest/attempts/{id} PATCH\nand avoids OpenAPI generator collisions on multiple array\nvariants in a single oneOf.",
17014
+ "type": "object",
17015
+ "required": [
17016
+ "questionId"
17017
+ ],
17018
+ "properties": {
17019
+ "questionId": {
17020
+ "type": "string",
17021
+ "description": "References QuestionSchema.questionId."
17022
+ },
17023
+ "questionType": {
17024
+ "type": "string",
17025
+ "description": "Mirror of the question's type for client-side discrimination.",
17026
+ "enum": [
17027
+ "single-choice",
17028
+ "multiple-choice",
17029
+ "scale",
17030
+ "open-text",
17031
+ "ranking",
17032
+ "situational-judgment",
17033
+ "file-upload",
17034
+ "video-recording"
17035
+ ]
17036
+ },
17037
+ "value": {
17038
+ "description": "Non-file answer payload. Discriminated by questionType:\n single-choice -> string (option id)\n multiple-choice -> string[] (option ids)\n scale -> number\n open-text -> string\n ranking -> string[] (option ids in order)\n situational-judgment -> { best: string; worst: string }\n file-upload -> usually empty / null (use `files`)\n video-recording -> usually empty / null (use `files`)",
17039
+ "oneOf": [
17040
+ {
17041
+ "type": "string",
17042
+ "description": "single-choice / open-text"
17043
+ },
17044
+ {
17045
+ "type": "number",
17046
+ "description": "scale"
17047
+ },
17048
+ {
17049
+ "type": "array",
17050
+ "items": {
17051
+ "type": "string"
17052
+ },
17053
+ "description": "multiple-choice / ranking - array of option ids"
17054
+ },
17055
+ {
17056
+ "type": "object",
17057
+ "description": "situational-judgment",
17058
+ "properties": {
17059
+ "best": {
17060
+ "type": "string"
17061
+ },
17062
+ "worst": {
17063
+ "type": "string"
17064
+ }
17065
+ }
17066
+ }
17067
+ ]
17068
+ },
17069
+ "files": {
17070
+ "type": "array",
17071
+ "description": "File / video uploads for `file-upload` and `video-recording`\nquestion types. Empty for all other types. Files are uploaded\nvia presigned PUT to S3 first; this carries the resulting\nreferences.",
17072
+ "items": {
17073
+ "title": "AnswerFileSchema",
17074
+ "description": "File reference for upload-type answers. fileUrl is the S3 path; FE never writes there directly - server issues presigned PUT.",
17075
+ "type": "object",
17076
+ "properties": {
17077
+ "fileUrl": {
17078
+ "type": "string",
17079
+ "description": "S3 location (s3://bucket/key) - resolves to a presigned download URL on the recruiter review screen."
17080
+ },
17081
+ "originalFilename": {
17082
+ "type": "string"
17083
+ },
17084
+ "contentType": {
17085
+ "type": "string"
17086
+ },
17087
+ "size": {
17088
+ "type": "integer",
17089
+ "description": "Bytes."
17090
+ }
17091
+ }
17092
+ }
17093
+ }
17094
+ }
17095
+ }
17096
+ },
17097
+ "evaluation": {
17098
+ "title": "AttemptEvaluationSchema",
17099
+ "description": "AI scoring output. Populated by the evaluation Step Function\nafter the candidate submits. Hidden from the candidate response\nwhile status is below `evaluated`.",
17100
+ "type": "object",
17101
+ "properties": {
17102
+ "status": {
17103
+ "type": "string",
17104
+ "enum": [
17105
+ "pending",
17106
+ "running",
17107
+ "done",
17108
+ "failed"
17109
+ ]
17110
+ },
17111
+ "overallScore": {
17112
+ "type": "number",
17113
+ "description": "Aggregate score 0-100."
17114
+ },
17115
+ "passingScore": {
17116
+ "type": "number",
17117
+ "description": "Threshold copied from the template at evaluation time."
17118
+ },
17119
+ "passed": {
17120
+ "type": "boolean"
17121
+ },
17122
+ "perQuestion": {
17123
+ "type": "array",
17124
+ "items": {
17125
+ "type": "object",
17126
+ "required": [
17127
+ "questionId",
17128
+ "score"
17129
+ ],
17130
+ "properties": {
17131
+ "questionId": {
17132
+ "type": "string"
17133
+ },
17134
+ "score": {
17135
+ "type": "number"
17136
+ },
17137
+ "maxScore": {
17138
+ "type": "number"
17139
+ },
17140
+ "feedback": {
17141
+ "type": "string",
17142
+ "description": "1-2 sentence explanation in the candidate's language."
17143
+ },
17144
+ "rubricMatched": {
17145
+ "type": "array",
17146
+ "items": {
17147
+ "type": "string"
17148
+ },
17149
+ "description": "Recruiter-only. Stripped from guest responses."
17150
+ }
17151
+ }
17152
+ }
17153
+ },
17154
+ "summary": {
17155
+ "type": "string",
17156
+ "description": "AI-generated 2-3 paragraph plain-language summary of the candidate's performance."
17157
+ },
17158
+ "evaluatedAt": {
17159
+ "type": "string",
17160
+ "format": "date-time"
17161
+ },
17162
+ "evaluatorVersion": {
17163
+ "type": "string"
17164
+ },
17165
+ "error": {
17166
+ "type": "string",
17167
+ "description": "Set only when status=failed."
17168
+ }
17169
+ }
17170
+ },
17171
+ "proctoring": {
17172
+ "title": "AttemptProctoringSchema",
17173
+ "description": "Anti-cheat telemetry collected by the candidate UI. Not used to block, only to inform recruiters.",
17174
+ "type": "object",
17175
+ "properties": {
17176
+ "tabSwitches": {
17177
+ "type": "integer"
17178
+ },
17179
+ "pasteEvents": {
17180
+ "type": "integer"
17181
+ },
17182
+ "focusLost": {
17183
+ "type": "integer",
17184
+ "description": "Total milliseconds the window was unfocused."
17185
+ },
17186
+ "suspiciousFlags": {
17187
+ "type": "array",
17188
+ "items": {
17189
+ "type": "string"
17190
+ }
17191
+ }
17192
+ }
17193
+ },
17194
+ "startedAt": {
17195
+ "type": "string",
17196
+ "format": "date-time",
17197
+ "description": "When the candidate first opened the attempt link (status pending->inProgress)."
17198
+ },
17199
+ "submittedAt": {
17200
+ "type": "string",
17201
+ "format": "date-time",
17202
+ "description": "When the candidate finalised their answers (status inProgress->submitted)."
17203
+ },
17204
+ "evaluatedAt": {
17205
+ "type": "string",
17206
+ "format": "date-time",
17207
+ "description": "When the AI evaluator wrote the evaluation block (status submitted->evaluated)."
16993
17208
  },
16994
17209
  "expiresAt": {
16995
17210
  "type": "string",
16996
- "format": "date-time"
17211
+ "format": "date-time",
17212
+ "description": "Hard cutoff for the candidate to start. After this, /v1/guest/attempts rejects with 410-style errors."
17213
+ },
17214
+ "durationMinutes": {
17215
+ "type": "integer",
17216
+ "description": "Time limit for the candidate to complete the attempt. Inherited from the template by default."
17217
+ },
17218
+ "evaluatorVersion": {
17219
+ "type": "string",
17220
+ "description": "Identifier of the AI scorer that produced the evaluation (e.g. 'gpt-5-mini-v1'). Bumped on re-evaluate."
17221
+ },
17222
+ "assessmentId": {
17223
+ "type": "string",
17224
+ "description": "FK to the assessment template - same id as relationships.assessment.data.id, exposed flat for filter convenience."
17225
+ },
17226
+ "candidateId": {
17227
+ "type": "string",
17228
+ "description": "FK to the candidate - same id as relationships.candidate.data.id."
17229
+ },
17230
+ "timestamps": {
17231
+ "title": "ResourceTimestampsSchema",
17232
+ "type": "object",
17233
+ "properties": {
17234
+ "created": {
17235
+ "type": "string",
17236
+ "format": "date-time"
17237
+ },
17238
+ "modified": {
17239
+ "type": "string",
17240
+ "format": "date-time"
17241
+ }
17242
+ }
16997
17243
  }
16998
17244
  }
16999
17245
  },
17000
17246
  "relationships": {
17247
+ "title": "AttemptRelationshipsSchema",
17001
17248
  "type": "object",
17002
- "required": [
17003
- "assessment",
17004
- "candidate"
17005
- ],
17006
17249
  "properties": {
17007
17250
  "assessment": {
17008
- "type": "object"
17251
+ "title": "AttemptRelationshipsAssessmentSchema",
17252
+ "type": "object",
17253
+ "properties": {
17254
+ "data": {
17255
+ "title": "AttemptRelationshipsAssessmentDataSchema",
17256
+ "type": "object",
17257
+ "properties": {
17258
+ "type": {
17259
+ "type": "string",
17260
+ "enum": [
17261
+ "assessments"
17262
+ ]
17263
+ },
17264
+ "id": {
17265
+ "type": "string"
17266
+ }
17267
+ }
17268
+ }
17269
+ },
17270
+ "description": "FK to the template this attempt is a run of."
17009
17271
  },
17010
17272
  "candidate": {
17011
- "type": "object"
17273
+ "title": "AttemptRelationshipsCandidateSchema",
17274
+ "type": "object",
17275
+ "properties": {
17276
+ "data": {
17277
+ "title": "AttemptRelationshipsCandidateDataSchema",
17278
+ "type": "object",
17279
+ "properties": {
17280
+ "type": {
17281
+ "type": "string",
17282
+ "enum": [
17283
+ "candidates"
17284
+ ]
17285
+ },
17286
+ "id": {
17287
+ "type": "string"
17288
+ }
17289
+ }
17290
+ }
17291
+ }
17012
17292
  },
17013
17293
  "job": {
17014
- "type": "object"
17294
+ "title": "AttemptRelationshipsJobSchema",
17295
+ "type": "object",
17296
+ "properties": {
17297
+ "data": {
17298
+ "title": "AttemptRelationshipsJobDataSchema",
17299
+ "type": "object",
17300
+ "properties": {
17301
+ "type": {
17302
+ "type": "string",
17303
+ "enum": [
17304
+ "jobs"
17305
+ ]
17306
+ },
17307
+ "id": {
17308
+ "type": "string"
17309
+ }
17310
+ }
17311
+ }
17312
+ },
17313
+ "description": "Denormalised from the assessment template - the role this attempt is screening for."
17314
+ },
17315
+ "report": {
17316
+ "title": "AttemptRelationshipsReportSchema",
17317
+ "type": "object",
17318
+ "properties": {
17319
+ "data": {
17320
+ "title": "AttemptRelationshipsReportDataSchema",
17321
+ "type": "object",
17322
+ "properties": {
17323
+ "type": {
17324
+ "type": "string",
17325
+ "enum": [
17326
+ "files"
17327
+ ]
17328
+ },
17329
+ "id": {
17330
+ "type": "string"
17331
+ }
17332
+ }
17333
+ }
17334
+ },
17335
+ "description": "Generated PDF report for this attempt's evaluation. Populated post-evaluation."
17015
17336
  }
17016
17337
  }
17017
17338
  }
@@ -17122,12 +17443,14 @@
17122
17443
  "name": "update_attempt",
17123
17444
  "description": "Update Attempt",
17124
17445
  "inputSchema": {
17446
+ "title": "UpdateAttemptRequestBody",
17125
17447
  "type": "object",
17126
17448
  "required": [
17127
17449
  "data"
17128
17450
  ],
17129
17451
  "properties": {
17130
17452
  "data": {
17453
+ "title": "UpdateAttemptRequestBodyData",
17131
17454
  "type": "object",
17132
17455
  "required": [
17133
17456
  "type",
@@ -17144,10 +17467,263 @@
17144
17467
  "type": "string"
17145
17468
  },
17146
17469
  "attributes": {
17147
- "type": "object"
17148
- },
17149
- "relationships": {
17150
- "type": "object"
17470
+ "title": "AttemptAttributesSchema",
17471
+ "type": "object",
17472
+ "properties": {
17473
+ "status": {
17474
+ "type": "string",
17475
+ "description": "Attempt lifecycle. Set server-side; only `submitted` is candidate-writable (via guest PATCH).",
17476
+ "enum": [
17477
+ "pending",
17478
+ "inProgress",
17479
+ "submitted",
17480
+ "evaluated",
17481
+ "reviewed",
17482
+ "anonymized",
17483
+ "failed"
17484
+ ]
17485
+ },
17486
+ "languageCode": {
17487
+ "type": "string",
17488
+ "description": "Locale the candidate is taking the assessment in (e.g. 'en-US')."
17489
+ },
17490
+ "answers": {
17491
+ "type": "array",
17492
+ "description": "Candidate's answers, one per attempted question. See AnswerSchema.",
17493
+ "items": {
17494
+ "title": "AnswerSchema",
17495
+ "description": "A candidate's answer to one question. The `value` shape depends\non the question type - branch on `questionType` to know how to\nread it. File uploads (file-upload / video-recording question\ntypes) live in the separate `files` array, NOT in `value`. This\nmirrors the wire shape used by /v1/guest/attempts/{id} PATCH\nand avoids OpenAPI generator collisions on multiple array\nvariants in a single oneOf.",
17496
+ "type": "object",
17497
+ "required": [
17498
+ "questionId"
17499
+ ],
17500
+ "properties": {
17501
+ "questionId": {
17502
+ "type": "string",
17503
+ "description": "References QuestionSchema.questionId."
17504
+ },
17505
+ "questionType": {
17506
+ "type": "string",
17507
+ "description": "Mirror of the question's type for client-side discrimination.",
17508
+ "enum": [
17509
+ "single-choice",
17510
+ "multiple-choice",
17511
+ "scale",
17512
+ "open-text",
17513
+ "ranking",
17514
+ "situational-judgment",
17515
+ "file-upload",
17516
+ "video-recording"
17517
+ ]
17518
+ },
17519
+ "value": {
17520
+ "description": "Non-file answer payload. Discriminated by questionType:\n single-choice -> string (option id)\n multiple-choice -> string[] (option ids)\n scale -> number\n open-text -> string\n ranking -> string[] (option ids in order)\n situational-judgment -> { best: string; worst: string }\n file-upload -> usually empty / null (use `files`)\n video-recording -> usually empty / null (use `files`)",
17521
+ "oneOf": [
17522
+ {
17523
+ "type": "string",
17524
+ "description": "single-choice / open-text"
17525
+ },
17526
+ {
17527
+ "type": "number",
17528
+ "description": "scale"
17529
+ },
17530
+ {
17531
+ "type": "array",
17532
+ "items": {
17533
+ "type": "string"
17534
+ },
17535
+ "description": "multiple-choice / ranking - array of option ids"
17536
+ },
17537
+ {
17538
+ "type": "object",
17539
+ "description": "situational-judgment",
17540
+ "properties": {
17541
+ "best": {
17542
+ "type": "string"
17543
+ },
17544
+ "worst": {
17545
+ "type": "string"
17546
+ }
17547
+ }
17548
+ }
17549
+ ]
17550
+ },
17551
+ "files": {
17552
+ "type": "array",
17553
+ "description": "File / video uploads for `file-upload` and `video-recording`\nquestion types. Empty for all other types. Files are uploaded\nvia presigned PUT to S3 first; this carries the resulting\nreferences.",
17554
+ "items": {
17555
+ "title": "AnswerFileSchema",
17556
+ "description": "File reference for upload-type answers. fileUrl is the S3 path; FE never writes there directly - server issues presigned PUT.",
17557
+ "type": "object",
17558
+ "properties": {
17559
+ "fileUrl": {
17560
+ "type": "string",
17561
+ "description": "S3 location (s3://bucket/key) - resolves to a presigned download URL on the recruiter review screen."
17562
+ },
17563
+ "originalFilename": {
17564
+ "type": "string"
17565
+ },
17566
+ "contentType": {
17567
+ "type": "string"
17568
+ },
17569
+ "size": {
17570
+ "type": "integer",
17571
+ "description": "Bytes."
17572
+ }
17573
+ }
17574
+ }
17575
+ }
17576
+ }
17577
+ }
17578
+ },
17579
+ "evaluation": {
17580
+ "title": "AttemptEvaluationSchema",
17581
+ "description": "AI scoring output. Populated by the evaluation Step Function\nafter the candidate submits. Hidden from the candidate response\nwhile status is below `evaluated`.",
17582
+ "type": "object",
17583
+ "properties": {
17584
+ "status": {
17585
+ "type": "string",
17586
+ "enum": [
17587
+ "pending",
17588
+ "running",
17589
+ "done",
17590
+ "failed"
17591
+ ]
17592
+ },
17593
+ "overallScore": {
17594
+ "type": "number",
17595
+ "description": "Aggregate score 0-100."
17596
+ },
17597
+ "passingScore": {
17598
+ "type": "number",
17599
+ "description": "Threshold copied from the template at evaluation time."
17600
+ },
17601
+ "passed": {
17602
+ "type": "boolean"
17603
+ },
17604
+ "perQuestion": {
17605
+ "type": "array",
17606
+ "items": {
17607
+ "type": "object",
17608
+ "required": [
17609
+ "questionId",
17610
+ "score"
17611
+ ],
17612
+ "properties": {
17613
+ "questionId": {
17614
+ "type": "string"
17615
+ },
17616
+ "score": {
17617
+ "type": "number"
17618
+ },
17619
+ "maxScore": {
17620
+ "type": "number"
17621
+ },
17622
+ "feedback": {
17623
+ "type": "string",
17624
+ "description": "1-2 sentence explanation in the candidate's language."
17625
+ },
17626
+ "rubricMatched": {
17627
+ "type": "array",
17628
+ "items": {
17629
+ "type": "string"
17630
+ },
17631
+ "description": "Recruiter-only. Stripped from guest responses."
17632
+ }
17633
+ }
17634
+ }
17635
+ },
17636
+ "summary": {
17637
+ "type": "string",
17638
+ "description": "AI-generated 2-3 paragraph plain-language summary of the candidate's performance."
17639
+ },
17640
+ "evaluatedAt": {
17641
+ "type": "string",
17642
+ "format": "date-time"
17643
+ },
17644
+ "evaluatorVersion": {
17645
+ "type": "string"
17646
+ },
17647
+ "error": {
17648
+ "type": "string",
17649
+ "description": "Set only when status=failed."
17650
+ }
17651
+ }
17652
+ },
17653
+ "proctoring": {
17654
+ "title": "AttemptProctoringSchema",
17655
+ "description": "Anti-cheat telemetry collected by the candidate UI. Not used to block, only to inform recruiters.",
17656
+ "type": "object",
17657
+ "properties": {
17658
+ "tabSwitches": {
17659
+ "type": "integer"
17660
+ },
17661
+ "pasteEvents": {
17662
+ "type": "integer"
17663
+ },
17664
+ "focusLost": {
17665
+ "type": "integer",
17666
+ "description": "Total milliseconds the window was unfocused."
17667
+ },
17668
+ "suspiciousFlags": {
17669
+ "type": "array",
17670
+ "items": {
17671
+ "type": "string"
17672
+ }
17673
+ }
17674
+ }
17675
+ },
17676
+ "startedAt": {
17677
+ "type": "string",
17678
+ "format": "date-time",
17679
+ "description": "When the candidate first opened the attempt link (status pending->inProgress)."
17680
+ },
17681
+ "submittedAt": {
17682
+ "type": "string",
17683
+ "format": "date-time",
17684
+ "description": "When the candidate finalised their answers (status inProgress->submitted)."
17685
+ },
17686
+ "evaluatedAt": {
17687
+ "type": "string",
17688
+ "format": "date-time",
17689
+ "description": "When the AI evaluator wrote the evaluation block (status submitted->evaluated)."
17690
+ },
17691
+ "expiresAt": {
17692
+ "type": "string",
17693
+ "format": "date-time",
17694
+ "description": "Hard cutoff for the candidate to start. After this, /v1/guest/attempts rejects with 410-style errors."
17695
+ },
17696
+ "durationMinutes": {
17697
+ "type": "integer",
17698
+ "description": "Time limit for the candidate to complete the attempt. Inherited from the template by default."
17699
+ },
17700
+ "evaluatorVersion": {
17701
+ "type": "string",
17702
+ "description": "Identifier of the AI scorer that produced the evaluation (e.g. 'gpt-5-mini-v1'). Bumped on re-evaluate."
17703
+ },
17704
+ "assessmentId": {
17705
+ "type": "string",
17706
+ "description": "FK to the assessment template - same id as relationships.assessment.data.id, exposed flat for filter convenience."
17707
+ },
17708
+ "candidateId": {
17709
+ "type": "string",
17710
+ "description": "FK to the candidate - same id as relationships.candidate.data.id."
17711
+ },
17712
+ "timestamps": {
17713
+ "title": "ResourceTimestampsSchema",
17714
+ "type": "object",
17715
+ "properties": {
17716
+ "created": {
17717
+ "type": "string",
17718
+ "format": "date-time"
17719
+ },
17720
+ "modified": {
17721
+ "type": "string",
17722
+ "format": "date-time"
17723
+ }
17724
+ }
17725
+ }
17726
+ }
17151
17727
  }
17152
17728
  }
17153
17729
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartytalent/mcp-tools",
3
- "version": "0.1.33-dev.37",
3
+ "version": "0.1.33-dev.38",
4
4
  "description": "MCP tool definitions for SmartyTalent API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",