Skip to content

Commit 77630ec

Browse files
committed
Fix schema issues for challenges query tool
1 parent b2e1b25 commit 77630ec

File tree

1 file changed

+173
-6
lines changed

1 file changed

+173
-6
lines changed

src/mcp/tools/challenges/queryChallenges.output.ts

Lines changed: 173 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export const QUERY_CHALLENGES_TOOL_OUTPUT_SCHEMA = z.object({
44
page: z.number().describe('Current page number in the paginated response'),
55
nextPage: z
66
.number()
7+
.nullable()
78
.optional()
89
.describe('Next page number, if available in the paginated response'),
910
pageSize: z
@@ -18,17 +19,65 @@ export const QUERY_CHALLENGES_TOOL_OUTPUT_SCHEMA = z.object({
1819
name: z.string().describe('Challenge title'),
1920
typeId: z.string().describe('Type identifier for the challenge'),
2021
trackId: z.string().describe('Track identifier for the challenge'),
22+
legacy: z
23+
.object({
24+
track: z
25+
.string()
26+
.optional()
27+
.describe('Legacy track identifier for the challenge'),
28+
subTrack: z
29+
.string()
30+
.optional()
31+
.describe('Legacy sub-track identifier for the challenge'),
32+
forumId: z
33+
.number()
34+
.optional()
35+
.describe('Legacy forum ID for the challenge'),
36+
directProjectId: z
37+
.number()
38+
.optional()
39+
.describe('Legacy direct project ID for the challenge'),
40+
reviewType: z
41+
.string()
42+
.optional()
43+
.describe('Legacy review type for the challenge'),
44+
confidentialityType: z
45+
.string()
46+
.optional()
47+
.describe('Legacy confidentiality type for the challenge'),
48+
pureV5Task: z
49+
.boolean()
50+
.optional()
51+
.describe('Legacy pure V5 task flag for the challenge'),
52+
reviewScorecardId: z
53+
.number()
54+
.optional()
55+
.describe('Legacy review scorecard ID for the challenge'),
56+
screeningScorecardId: z
57+
.number()
58+
.optional()
59+
.describe('Legacy screening scorecard ID for the challenge'),
60+
selfService: z
61+
.boolean()
62+
.optional()
63+
.describe('Legacy self-service flag for the challenge'),
64+
})
65+
.optional(),
2166
description: z
2267
.string()
2368
.describe('Detailed description of the challenge'),
2469
descriptionFormat: z
2570
.string()
2671
.describe('Format of the description, e.g., markdown'),
2772
metadata: z
28-
.object({
29-
// Additional metadata fields can be added here
30-
// For example, you can include fields like 'clientId', 'prize', etc
31-
})
73+
.array(
74+
z.object({
75+
// Additional metadata fields can be added here
76+
// For example, you can include fields like 'clientId', 'prize', etc
77+
name: z.string().describe('Metadata name'),
78+
value: z.string().describe('Metadata value'),
79+
}),
80+
)
3281
.optional()
3382
.describe('Optional metadata associated with the challenge'),
3483
timelineTemplateId: z
@@ -56,10 +105,30 @@ export const QUERY_CHALLENGES_TOOL_OUTPUT_SCHEMA = z.object({
56105
.array(
57106
z.object({
58107
name: z.string().describe('Constraint name'),
59-
value: z.string().describe('Constraint value'),
108+
value: z.number().describe('Constraint value'),
60109
}),
61110
)
62111
.describe('Constraints for the challenge phase'),
112+
actualStartDate: z
113+
.string()
114+
.optional()
115+
.describe(
116+
'Actual start date of the phase (ISO format, optional)',
117+
),
118+
description: z
119+
.string()
120+
.optional()
121+
.describe('Description of the phase (optional)'),
122+
predecessor: z
123+
.string()
124+
.optional()
125+
.describe('Identifier of the predecessor phase (optional)'),
126+
actualEndDate: z
127+
.string()
128+
.optional()
129+
.describe(
130+
'Actual end date of the phase (ISO format, optional)',
131+
),
63132
}),
64133
)
65134
.describe('Challenge phases (optional)'),
@@ -114,6 +183,10 @@ export const QUERY_CHALLENGES_TOOL_OUTPUT_SCHEMA = z.object({
114183
'Cancelled - Zero Registrations',
115184
])
116185
.describe('Current status of the challenge'),
186+
attachments: z
187+
.array(z.object({}).optional())
188+
.optional()
189+
.describe('Attachments associated with the challenge (optional)'),
117190
track: z
118191
.string()
119192
.describe('Challenge track (e.g., DEVELOPMENT, DESIGN)'),
@@ -131,7 +204,7 @@ export const QUERY_CHALLENGES_TOOL_OUTPUT_SCHEMA = z.object({
131204
overview: z
132205
.object({
133206
totalPrizes: z.number().describe('Total prize amount'),
134-
types: z.string().describe('Challenge prizes currency'),
207+
type: z.string().optional().describe('Challenge prizes currency'),
135208
})
136209
.describe('Overview of the challenge'),
137210
skills: z
@@ -174,6 +247,100 @@ export const QUERY_CHALLENGES_TOOL_OUTPUT_SCHEMA = z.object({
174247
)
175248
.optional()
176249
.describe('Array of winners for the challenge (optional)'),
250+
createdBy: z.string().describe('User handle of the creator'),
251+
updatedBy: z
252+
.string()
253+
.optional()
254+
.describe('User handle of the last updater'),
255+
currentPhase: z
256+
.object({
257+
id: z.string().describe('Current phase unique identifier'),
258+
phaseId: z.string().describe('Current phase identifier'),
259+
name: z.string().describe('Current phase name'),
260+
duration: z
261+
.number()
262+
.describe('Current phase duration in seconds'),
263+
scheduledStartDate: z
264+
.string()
265+
.describe(
266+
'Scheduled start date of the current phase (ISO format)',
267+
),
268+
scheduledEndDate: z
269+
.string()
270+
.describe(
271+
'Scheduled end date of the current phase (ISO format)',
272+
),
273+
isOpen: z
274+
.boolean()
275+
.describe('Indicates if the current phase is open'),
276+
constraints: z
277+
.array(
278+
z.object({
279+
name: z.string().describe('Constraint name'),
280+
value: z.number().describe('Constraint value'),
281+
}),
282+
)
283+
.describe('Constraints for the current phase'),
284+
description: z
285+
.string()
286+
.optional()
287+
.describe('Description of the current phase (optional)'),
288+
actualStartDate: z
289+
.string()
290+
.optional()
291+
.describe(
292+
'Actual start date of the current phase (ISO format)',
293+
),
294+
predecessor: z
295+
.string()
296+
.optional()
297+
.describe('Identifier of the predecessor phase (optional)'),
298+
})
299+
.optional()
300+
.describe('Current phase of the challenge (optional)'),
301+
currentPhaseNames: z
302+
.array(z.string())
303+
.optional()
304+
.describe(
305+
'Names of the current phases of the challenge (optional)',
306+
),
307+
discussions: z
308+
.array(
309+
z.object({
310+
id: z
311+
.string()
312+
.optional()
313+
.describe('Discussion unique identifier'),
314+
name: z.string().optional().describe('Discussion name'),
315+
type: z.string().optional().describe('Discussion type'),
316+
provider: z.string().optional().describe('Discussion provider'),
317+
url: z.string().optional().describe('URL of the discussion'),
318+
}),
319+
)
320+
.optional()
321+
.describe('Discussions associated with the challenge (optional)'),
322+
events: z
323+
.array(z.object({}))
324+
.optional()
325+
.describe('Events associated with the challenge (optional)'),
326+
groups: z
327+
.array(z.object({}))
328+
.optional()
329+
.describe('Groups associated with the challenge (optional)'),
330+
legacyId: z
331+
.number()
332+
.optional()
333+
.describe('Legacy identifier for the challenge (optional)'),
334+
projectId: z
335+
.number()
336+
.optional()
337+
.describe('Project identifier for the challenge (optional)'),
338+
numOfCheckpointSubmissions: z
339+
.number()
340+
.optional()
341+
.describe(
342+
'Number of checkpoint submissions for the challenge (optional)',
343+
),
177344
})
178345
.describe('Challenge object'),
179346
)

0 commit comments

Comments
 (0)