@edubase/mcp 1.0.23
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.
- package/LICENSE +21 -0
- package/README.md +169 -0
- package/dist/helpers.js +4 -0
- package/dist/index.js +430 -0
- package/dist/prompts.js +4 -0
- package/dist/tools/classes.js +348 -0
- package/dist/tools/exams.js +309 -0
- package/dist/tools/integrations.js +246 -0
- package/dist/tools/metrics.js +39 -0
- package/dist/tools/organizations.js +625 -0
- package/dist/tools/permissions.js +2216 -0
- package/dist/tools/plays.js +406 -0
- package/dist/tools/questions.js +1142 -0
- package/dist/tools/quizes.js +253 -0
- package/dist/tools/tags.js +1504 -0
- package/dist/tools/users.js +611 -0
- package/dist/tools.js +68 -0
- package/package.json +30 -0
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
/* Tool definitions */
|
|
2
|
+
export const EDUBASE_API_TOOLS_CLASSES = [
|
|
3
|
+
// GET /classes - List owned and managed classes
|
|
4
|
+
{
|
|
5
|
+
name: 'edubase_get_classes',
|
|
6
|
+
description: "List owned and managed classes.",
|
|
7
|
+
inputSchema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
search: {
|
|
11
|
+
type: 'string',
|
|
12
|
+
description: 'search string to filter results',
|
|
13
|
+
},
|
|
14
|
+
limit: {
|
|
15
|
+
type: 'number',
|
|
16
|
+
description: 'limit number of results (default: 16)',
|
|
17
|
+
},
|
|
18
|
+
page: {
|
|
19
|
+
type: 'number',
|
|
20
|
+
description: 'page number (default: 1), not used in search mode!',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
required: [],
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
// GET /class - Get/check class
|
|
27
|
+
{
|
|
28
|
+
name: 'edubase_get_class',
|
|
29
|
+
description: "Get/check class.",
|
|
30
|
+
inputSchema: {
|
|
31
|
+
type: 'object',
|
|
32
|
+
properties: {
|
|
33
|
+
class: {
|
|
34
|
+
type: 'string',
|
|
35
|
+
description: 'class identification string',
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
required: ['class'],
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
// GET /class:assignments - List all assignments in a class
|
|
42
|
+
{
|
|
43
|
+
name: 'edubase_get_class_assignments',
|
|
44
|
+
description: "List all assignments in a class.",
|
|
45
|
+
inputSchema: {
|
|
46
|
+
type: 'object',
|
|
47
|
+
properties: {
|
|
48
|
+
class: {
|
|
49
|
+
type: 'string',
|
|
50
|
+
description: 'class identification string',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
required: ['class'],
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
// GET /class:members - List all members in a class
|
|
57
|
+
{
|
|
58
|
+
name: 'edubase_get_class_members',
|
|
59
|
+
description: "List all members in a class.",
|
|
60
|
+
inputSchema: {
|
|
61
|
+
type: 'object',
|
|
62
|
+
properties: {
|
|
63
|
+
class: {
|
|
64
|
+
type: 'string',
|
|
65
|
+
description: 'class identification string',
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
required: ['class'],
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
// POST /class:members - Assign user(s) to a class
|
|
72
|
+
{
|
|
73
|
+
name: 'edubase_post_class_members',
|
|
74
|
+
description: "Assign user(s) to a class. Updates memberships if already member of the class.",
|
|
75
|
+
inputSchema: {
|
|
76
|
+
type: 'object',
|
|
77
|
+
properties: {
|
|
78
|
+
class: {
|
|
79
|
+
type: 'string',
|
|
80
|
+
description: 'class identification string',
|
|
81
|
+
},
|
|
82
|
+
users: {
|
|
83
|
+
type: 'string',
|
|
84
|
+
description: 'comma-separated list of user identification strings',
|
|
85
|
+
},
|
|
86
|
+
expires: {
|
|
87
|
+
type: 'string',
|
|
88
|
+
description: 'expiry in days or YYYY-MM-DD HH:ii:ss',
|
|
89
|
+
},
|
|
90
|
+
notify: {
|
|
91
|
+
type: 'boolean',
|
|
92
|
+
description: 'notify users (default: false)',
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
required: ['class', 'users'],
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
// DELETE /class:members - Remove user(s) from a class
|
|
99
|
+
{
|
|
100
|
+
name: 'edubase_delete_class_members',
|
|
101
|
+
description: "Remove user(s) from a class.",
|
|
102
|
+
inputSchema: {
|
|
103
|
+
type: 'object',
|
|
104
|
+
properties: {
|
|
105
|
+
class: {
|
|
106
|
+
type: 'string',
|
|
107
|
+
description: 'class identification string',
|
|
108
|
+
},
|
|
109
|
+
users: {
|
|
110
|
+
type: 'string',
|
|
111
|
+
description: 'comma-separated list of user identification strings',
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
required: ['class', 'users'],
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
// POST /classes:members - Assign user(s) to class(es)
|
|
118
|
+
{
|
|
119
|
+
name: 'edubase_post_classes_members',
|
|
120
|
+
description: "Assign user(s) to class(es). Updates memberships if already member of a class.",
|
|
121
|
+
inputSchema: {
|
|
122
|
+
type: 'object',
|
|
123
|
+
properties: {
|
|
124
|
+
classes: {
|
|
125
|
+
type: 'string',
|
|
126
|
+
description: 'comma-separated list of class identification strings',
|
|
127
|
+
},
|
|
128
|
+
users: {
|
|
129
|
+
type: 'string',
|
|
130
|
+
description: 'comma-separated list of user identification strings',
|
|
131
|
+
},
|
|
132
|
+
expires: {
|
|
133
|
+
type: 'string',
|
|
134
|
+
description: 'expiry in days or YYYY-MM-DD HH:ii:ss',
|
|
135
|
+
},
|
|
136
|
+
notify: {
|
|
137
|
+
type: 'boolean',
|
|
138
|
+
description: 'notify users (default: false)',
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
required: ['classes', 'users'],
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
// GET /user:classes - List all classes a user is member of
|
|
145
|
+
{
|
|
146
|
+
name: 'edubase_get_user_classes',
|
|
147
|
+
description: "List all classes a user is member of.",
|
|
148
|
+
inputSchema: {
|
|
149
|
+
type: 'object',
|
|
150
|
+
properties: {
|
|
151
|
+
user: {
|
|
152
|
+
type: 'string',
|
|
153
|
+
description: 'user identification string',
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
required: ['user'],
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
// POST /user:classes - Assign user to class(es)
|
|
160
|
+
{
|
|
161
|
+
name: 'edubase_post_user_classes',
|
|
162
|
+
description: "Assign user to class(es). Updates membership if already member of a class.",
|
|
163
|
+
inputSchema: {
|
|
164
|
+
type: 'object',
|
|
165
|
+
properties: {
|
|
166
|
+
user: {
|
|
167
|
+
type: 'string',
|
|
168
|
+
description: 'user identification string',
|
|
169
|
+
},
|
|
170
|
+
classes: {
|
|
171
|
+
type: 'string',
|
|
172
|
+
description: 'comma-separated list of class identification strings',
|
|
173
|
+
},
|
|
174
|
+
expires: {
|
|
175
|
+
type: 'string',
|
|
176
|
+
description: 'expiry in days or YYYY-MM-DD HH:ii:ss',
|
|
177
|
+
},
|
|
178
|
+
notify: {
|
|
179
|
+
type: 'boolean',
|
|
180
|
+
description: 'notify user (default: false)',
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
required: ['user', 'classes'],
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
// DELETE /user:classes - Remove user from class(es)
|
|
187
|
+
{
|
|
188
|
+
name: 'edubase_delete_user_classes',
|
|
189
|
+
description: "Remove user from class(es).",
|
|
190
|
+
inputSchema: {
|
|
191
|
+
type: 'object',
|
|
192
|
+
properties: {
|
|
193
|
+
user: {
|
|
194
|
+
type: 'string',
|
|
195
|
+
description: 'user identification string',
|
|
196
|
+
},
|
|
197
|
+
classes: {
|
|
198
|
+
type: 'string',
|
|
199
|
+
description: 'comma-separated list of class identification strings',
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
required: ['user', 'classes'],
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
];
|
|
206
|
+
/* Output schema definitions */
|
|
207
|
+
export const EDUBASE_API_TOOLS_CLASSES_OUTPUT_SCHEMA = {
|
|
208
|
+
// GET /classes - List owned and managed classes
|
|
209
|
+
edubase_get_classes: {
|
|
210
|
+
type: 'array',
|
|
211
|
+
items: {
|
|
212
|
+
type: 'object',
|
|
213
|
+
properties: {
|
|
214
|
+
class: {
|
|
215
|
+
type: 'string',
|
|
216
|
+
description: 'class identification string',
|
|
217
|
+
},
|
|
218
|
+
id: {
|
|
219
|
+
type: 'string',
|
|
220
|
+
description: 'external unique class identifier (if set for the class)',
|
|
221
|
+
},
|
|
222
|
+
name: {
|
|
223
|
+
type: 'string',
|
|
224
|
+
description: 'title of the class',
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
// GET /class - Get/check class
|
|
230
|
+
edubase_get_class: {
|
|
231
|
+
type: 'object',
|
|
232
|
+
properties: {
|
|
233
|
+
class: {
|
|
234
|
+
type: 'string',
|
|
235
|
+
description: 'class identification string',
|
|
236
|
+
},
|
|
237
|
+
id: {
|
|
238
|
+
type: 'string',
|
|
239
|
+
description: 'external unique class identifier (if set for the class)',
|
|
240
|
+
},
|
|
241
|
+
name: {
|
|
242
|
+
type: 'string',
|
|
243
|
+
description: 'title of the class',
|
|
244
|
+
},
|
|
245
|
+
start: {
|
|
246
|
+
type: 'string',
|
|
247
|
+
description: 'start date and time (if set)',
|
|
248
|
+
},
|
|
249
|
+
end: {
|
|
250
|
+
type: 'string',
|
|
251
|
+
description: 'end date and time (if set)',
|
|
252
|
+
},
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
// GET /class:assignments - List all assignments in a class
|
|
256
|
+
edubase_get_class_assignments: {
|
|
257
|
+
type: 'array',
|
|
258
|
+
items: {
|
|
259
|
+
type: 'object',
|
|
260
|
+
properties: {
|
|
261
|
+
assignment: {
|
|
262
|
+
type: 'string',
|
|
263
|
+
description: 'assignment identification string',
|
|
264
|
+
},
|
|
265
|
+
name: {
|
|
266
|
+
type: 'string',
|
|
267
|
+
description: 'title of the assignment',
|
|
268
|
+
},
|
|
269
|
+
link: {
|
|
270
|
+
type: 'string',
|
|
271
|
+
description: 'link to the assignment page',
|
|
272
|
+
},
|
|
273
|
+
status: {
|
|
274
|
+
type: 'string',
|
|
275
|
+
description: 'assignment and submission state (INACTIVE, ACTIVE, STARTED, SUBMITTED, GRADED)',
|
|
276
|
+
},
|
|
277
|
+
starts: {
|
|
278
|
+
type: 'string',
|
|
279
|
+
description: 'when the assignment submission starts',
|
|
280
|
+
},
|
|
281
|
+
ends: {
|
|
282
|
+
type: 'string',
|
|
283
|
+
description: 'when the assignment submission ends',
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
// GET /class:members - List all members in a class
|
|
289
|
+
edubase_get_class_members: {
|
|
290
|
+
type: 'array',
|
|
291
|
+
items: {
|
|
292
|
+
type: 'object',
|
|
293
|
+
properties: {
|
|
294
|
+
user: {
|
|
295
|
+
type: 'string',
|
|
296
|
+
description: 'user identification string',
|
|
297
|
+
},
|
|
298
|
+
name: {
|
|
299
|
+
type: 'string',
|
|
300
|
+
description: 'name of the member',
|
|
301
|
+
},
|
|
302
|
+
active: {
|
|
303
|
+
type: 'boolean',
|
|
304
|
+
description: 'active membership (approved and not expired)',
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
},
|
|
309
|
+
// POST /class:members - Assign user(s) to a class
|
|
310
|
+
edubase_post_class_members: {},
|
|
311
|
+
// DELETE /class:members - Remove user(s) from a class
|
|
312
|
+
edubase_delete_class_members: {},
|
|
313
|
+
// POST /classes:members - Assign user(s) to class(es)
|
|
314
|
+
edubase_post_classes_members: {},
|
|
315
|
+
// GET /user:classes - List all classes a user is member of
|
|
316
|
+
edubase_get_user_classes: {
|
|
317
|
+
type: 'array',
|
|
318
|
+
items: {
|
|
319
|
+
type: 'object',
|
|
320
|
+
properties: {
|
|
321
|
+
class: {
|
|
322
|
+
type: 'string',
|
|
323
|
+
description: 'class identification string',
|
|
324
|
+
},
|
|
325
|
+
id: {
|
|
326
|
+
type: 'string',
|
|
327
|
+
description: 'external unique class identifier (if set for the class)',
|
|
328
|
+
},
|
|
329
|
+
name: {
|
|
330
|
+
type: 'string',
|
|
331
|
+
description: 'title of the class',
|
|
332
|
+
},
|
|
333
|
+
link: {
|
|
334
|
+
type: 'string',
|
|
335
|
+
description: 'link to the class page',
|
|
336
|
+
},
|
|
337
|
+
active: {
|
|
338
|
+
type: 'boolean',
|
|
339
|
+
description: 'active membership (approved and not expired)',
|
|
340
|
+
},
|
|
341
|
+
},
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
// POST /user:classes - Assign user to class(es)
|
|
345
|
+
edubase_post_user_classes: {},
|
|
346
|
+
// DELETE /user:classes - Remove user from class(es)
|
|
347
|
+
edubase_delete_user_classes: {},
|
|
348
|
+
};
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/*
|
|
2
|
+
# Exams (Highest Level in EduBase Hierarchy)
|
|
3
|
+
|
|
4
|
+
Exams are time-limited, secure instances of Quiz sets in EduBase.
|
|
5
|
+
They represent the highest level in the EduBase hierarchy, above both Questions and Quiz sets.
|
|
6
|
+
|
|
7
|
+
Key characteristics:
|
|
8
|
+
- Exams are always created from existing Quiz sets
|
|
9
|
+
- They have specific start and end times
|
|
10
|
+
- They include additional security features (cheating detection, prevention of simultaneous account access during exam)
|
|
11
|
+
- Usually restrict access to hints/solutions
|
|
12
|
+
- Generally limited to one attempt per user
|
|
13
|
+
- Questions cannot exist directly in Exams without being part of a Quiz set
|
|
14
|
+
*/
|
|
15
|
+
/* Tool definitions */
|
|
16
|
+
export const EDUBASE_API_TOOLS_EXAMS = [
|
|
17
|
+
// GET /exams - List owned and managed exams
|
|
18
|
+
{
|
|
19
|
+
name: 'edubase_get_exams',
|
|
20
|
+
description: "List owned and managed exams. Exams are the highest level in the EduBase Quiz hierarchy, built from Quiz sets.",
|
|
21
|
+
inputSchema: {
|
|
22
|
+
type: 'object',
|
|
23
|
+
properties: {
|
|
24
|
+
search: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'search string to filter results',
|
|
27
|
+
},
|
|
28
|
+
limit: {
|
|
29
|
+
type: 'number',
|
|
30
|
+
description: 'limit number of results (default: 16)',
|
|
31
|
+
},
|
|
32
|
+
page: {
|
|
33
|
+
type: 'number',
|
|
34
|
+
description: 'page number (default: 1), not used in search mode!',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
required: [],
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
// GET /exam - Get/check exam
|
|
41
|
+
{
|
|
42
|
+
name: 'edubase_get_exam',
|
|
43
|
+
description: "Get/check exam.",
|
|
44
|
+
inputSchema: {
|
|
45
|
+
type: 'object',
|
|
46
|
+
properties: {
|
|
47
|
+
exam: {
|
|
48
|
+
type: 'string',
|
|
49
|
+
description: 'exam identification string',
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
required: ['exam'],
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
// POST /exam - Create a new exam from an existing Quiz set
|
|
56
|
+
{
|
|
57
|
+
name: 'edubase_post_exam',
|
|
58
|
+
description: "Create a new exam from an existing Quiz set. Exams are at the top level of the EduBase Quiz hierarchy and MUST be created from existing Quiz sets. They are time-constrained, secured assessment instances of Quiz sets.",
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: 'object',
|
|
61
|
+
properties: {
|
|
62
|
+
language: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
description: 'desired exam language',
|
|
65
|
+
},
|
|
66
|
+
title: {
|
|
67
|
+
type: 'string',
|
|
68
|
+
description: 'title of the exam',
|
|
69
|
+
},
|
|
70
|
+
id: {
|
|
71
|
+
type: 'string',
|
|
72
|
+
description: "External unique exam identifier.\n" +
|
|
73
|
+
"Should be maximum 64 characters long!"
|
|
74
|
+
},
|
|
75
|
+
type: {
|
|
76
|
+
type: 'string',
|
|
77
|
+
description: "Type of the exam. (default: exam)\n" +
|
|
78
|
+
"- exam: regular exam\n" +
|
|
79
|
+
"- championship: exam with championship features enabled\n" +
|
|
80
|
+
"- homework: homework assignment, can be paused and continued during the exam period\n" +
|
|
81
|
+
"- survey: survey (optionally anonymous) with no grading"
|
|
82
|
+
},
|
|
83
|
+
quiz: {
|
|
84
|
+
type: 'string',
|
|
85
|
+
description: 'the Quiz set (specified using the quiz identification string) the exam is attached to',
|
|
86
|
+
},
|
|
87
|
+
open: {
|
|
88
|
+
type: 'string',
|
|
89
|
+
description: 'exam start time (in YYYY-mm-dd HH:ii:ss format)',
|
|
90
|
+
},
|
|
91
|
+
close: {
|
|
92
|
+
type: 'string',
|
|
93
|
+
description: 'exam end time (in YYYY-mm-dd HH:ii:ss format)',
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
required: ['title', 'quiz', 'open', 'close'],
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
// DELETE /exam - Remove/archive exam
|
|
100
|
+
{
|
|
101
|
+
name: 'edubase_delete_exam',
|
|
102
|
+
description: "Remove/archive exam.",
|
|
103
|
+
inputSchema: {
|
|
104
|
+
type: 'object',
|
|
105
|
+
properties: {
|
|
106
|
+
exam: {
|
|
107
|
+
type: 'string',
|
|
108
|
+
description: 'exam identification string',
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
required: ['exam'],
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
// GET /exam:users - List all users on an exam
|
|
115
|
+
{
|
|
116
|
+
name: 'edubase_get_exam_users',
|
|
117
|
+
description: "List all users on an exam.",
|
|
118
|
+
inputSchema: {
|
|
119
|
+
type: 'object',
|
|
120
|
+
properties: {
|
|
121
|
+
exam: {
|
|
122
|
+
type: 'string',
|
|
123
|
+
description: 'exam identification string',
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
required: ['exam'],
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
// POST /exam:users - Assign user(s) to an exam
|
|
130
|
+
{
|
|
131
|
+
name: 'edubase_post_exam_users',
|
|
132
|
+
description: "Assign user(s) to an exam.",
|
|
133
|
+
inputSchema: {
|
|
134
|
+
type: 'object',
|
|
135
|
+
properties: {
|
|
136
|
+
exam: {
|
|
137
|
+
type: 'string',
|
|
138
|
+
description: 'exam identification string',
|
|
139
|
+
},
|
|
140
|
+
users: {
|
|
141
|
+
type: 'string',
|
|
142
|
+
description: 'comma-separated list of user identification strings',
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
required: ['exam', 'users'],
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
// DELETE /exam:users - Remove user(s) from an exam
|
|
149
|
+
{
|
|
150
|
+
name: 'edubase_delete_exam_users',
|
|
151
|
+
description: "Remove user(s) from an exam.",
|
|
152
|
+
inputSchema: {
|
|
153
|
+
type: 'object',
|
|
154
|
+
properties: {
|
|
155
|
+
exam: {
|
|
156
|
+
type: 'string',
|
|
157
|
+
description: 'exam identification string',
|
|
158
|
+
},
|
|
159
|
+
users: {
|
|
160
|
+
type: 'string',
|
|
161
|
+
description: 'comma-separated list of user identification strings',
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
required: ['exam', 'users'],
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
// POST /exam:summary - Submit a new exam summary
|
|
168
|
+
{
|
|
169
|
+
name: 'edubase_post_exam_summary',
|
|
170
|
+
description: "Submit a new AI exam summary.",
|
|
171
|
+
inputSchema: {
|
|
172
|
+
type: 'object',
|
|
173
|
+
properties: {
|
|
174
|
+
exam: {
|
|
175
|
+
type: 'string',
|
|
176
|
+
description: 'exam identification string',
|
|
177
|
+
},
|
|
178
|
+
language: {
|
|
179
|
+
type: 'string',
|
|
180
|
+
description: 'summary language',
|
|
181
|
+
},
|
|
182
|
+
type: {
|
|
183
|
+
type: 'string',
|
|
184
|
+
description: "Type of summary. (default: ai)\n" +
|
|
185
|
+
"- ai: AI-generated summary"
|
|
186
|
+
},
|
|
187
|
+
summary: {
|
|
188
|
+
type: 'string',
|
|
189
|
+
description: "Summary text. \n" +
|
|
190
|
+
"- basic HTML formatting allowed, but avoid complex designs\n" +
|
|
191
|
+
"- keep the summary short and concise\n" +
|
|
192
|
+
"- try to avoid including personal information (such as usernames, names and contact addresses)"
|
|
193
|
+
},
|
|
194
|
+
llm: {
|
|
195
|
+
type: 'string',
|
|
196
|
+
description: "Name of the Large Language Model used to generate the summary.\n" +
|
|
197
|
+
"- preferred values: openai / claude / gemini"
|
|
198
|
+
},
|
|
199
|
+
model: {
|
|
200
|
+
type: 'string',
|
|
201
|
+
description: 'Exact LLM model name used to generate the summary',
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
required: ['exam', 'type', 'summary', 'llm', 'model'],
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
];
|
|
208
|
+
/* Output schema definitions */
|
|
209
|
+
export const EDUBASE_API_TOOLS_EXAMS_OUTPUT_SCHEMA = {
|
|
210
|
+
// GET /exams - List owned and managed exams
|
|
211
|
+
edubase_get_exams: {
|
|
212
|
+
type: 'array',
|
|
213
|
+
items: {
|
|
214
|
+
type: 'object',
|
|
215
|
+
properties: {
|
|
216
|
+
exam: {
|
|
217
|
+
type: 'string',
|
|
218
|
+
description: 'exam identification string',
|
|
219
|
+
},
|
|
220
|
+
id: {
|
|
221
|
+
type: 'string',
|
|
222
|
+
description: 'external unique exam identifier (if set for the exam)',
|
|
223
|
+
},
|
|
224
|
+
name: {
|
|
225
|
+
type: 'string',
|
|
226
|
+
description: 'title of the exam',
|
|
227
|
+
},
|
|
228
|
+
active: {
|
|
229
|
+
type: 'boolean',
|
|
230
|
+
description: 'exam is active',
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
},
|
|
235
|
+
// GET /exam - Get/check exam
|
|
236
|
+
edubase_get_exam: {
|
|
237
|
+
type: 'object',
|
|
238
|
+
properties: {
|
|
239
|
+
exam: {
|
|
240
|
+
type: 'string',
|
|
241
|
+
description: 'exam identification string',
|
|
242
|
+
},
|
|
243
|
+
id: {
|
|
244
|
+
type: 'string',
|
|
245
|
+
description: 'external unique exam identifier (if set for the exam)',
|
|
246
|
+
},
|
|
247
|
+
name: {
|
|
248
|
+
type: 'string',
|
|
249
|
+
description: 'title of the exam',
|
|
250
|
+
},
|
|
251
|
+
quiz: {
|
|
252
|
+
type: 'string',
|
|
253
|
+
description: "Quiz identification string.\n" +
|
|
254
|
+
"- The Quiz set the exam is attached to"
|
|
255
|
+
},
|
|
256
|
+
active: {
|
|
257
|
+
type: 'boolean',
|
|
258
|
+
description: 'exam is active',
|
|
259
|
+
},
|
|
260
|
+
status: {
|
|
261
|
+
type: 'string',
|
|
262
|
+
description: 'exam status (INACTIVE, ACTIVE, PAUSED, REVIEW, EXPIRED)',
|
|
263
|
+
},
|
|
264
|
+
start: {
|
|
265
|
+
type: 'string',
|
|
266
|
+
description: 'start date and time',
|
|
267
|
+
},
|
|
268
|
+
end: {
|
|
269
|
+
type: 'string',
|
|
270
|
+
description: 'end date and time',
|
|
271
|
+
},
|
|
272
|
+
},
|
|
273
|
+
},
|
|
274
|
+
// GET /exam - Get/check exam
|
|
275
|
+
edubase_post_exam: {
|
|
276
|
+
type: 'object',
|
|
277
|
+
properties: {
|
|
278
|
+
exam: {
|
|
279
|
+
type: 'string',
|
|
280
|
+
description: 'exam identification string',
|
|
281
|
+
},
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
// DELETE /exam - Remove/archive exam
|
|
285
|
+
edubase_delete_exam: {},
|
|
286
|
+
// GET /exam:users - List all users on an exam
|
|
287
|
+
edubase_get_exam_users: {
|
|
288
|
+
type: 'array',
|
|
289
|
+
items: {
|
|
290
|
+
type: 'object',
|
|
291
|
+
properties: {
|
|
292
|
+
user: {
|
|
293
|
+
type: 'string',
|
|
294
|
+
description: 'user identification string',
|
|
295
|
+
},
|
|
296
|
+
name: {
|
|
297
|
+
type: 'string',
|
|
298
|
+
description: 'name of the examinee',
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
},
|
|
303
|
+
// POST /exam:users - Assign user(s) to an exam
|
|
304
|
+
edubase_post_exam_users: {},
|
|
305
|
+
// DELETE /exam:users - Remove user(s) from an exam
|
|
306
|
+
edubase_delete_exam_users: {},
|
|
307
|
+
// POST /exam:summary - Submit a new exam summary
|
|
308
|
+
edubase_post_exam_summary: {},
|
|
309
|
+
};
|