@edubase/mcp 1.0.23 → 1.1.1
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/README.md +22 -1
- package/dist/helpers.js +9 -0
- package/dist/index.js +147 -120
- package/dist/prompts/questions.js +24 -0
- package/dist/prompts.js +4 -3
- package/dist/tools/classes.js +81 -295
- package/dist/tools/exams.js +67 -253
- package/dist/tools/integrations.js +59 -209
- package/dist/tools/metrics.js +12 -32
- package/dist/tools/organizations.js +147 -538
- package/dist/tools/permissions.js +185 -2213
- package/dist/tools/plays.js +104 -380
- package/dist/tools/questions.js +770 -1091
- package/dist/tools/quizes.js +68 -223
- package/dist/tools/tags.js +189 -1494
- package/dist/tools/users.js +157 -541
- package/dist/tools.js +11 -25
- package/package.json +6 -3
package/dist/tools/classes.js
CHANGED
|
@@ -1,348 +1,134 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
1
2
|
/* Tool definitions */
|
|
2
3
|
export const EDUBASE_API_TOOLS_CLASSES = [
|
|
3
4
|
// GET /classes - List owned and managed classes
|
|
4
5
|
{
|
|
5
6
|
name: 'edubase_get_classes',
|
|
6
7
|
description: "List owned and managed classes.",
|
|
7
|
-
inputSchema: {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
},
|
|
18
|
-
page: {
|
|
19
|
-
type: 'number',
|
|
20
|
-
description: 'page number (default: 1), not used in search mode!',
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
required: [],
|
|
24
|
-
},
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
search: z.string().optional().describe('search string to filter results'),
|
|
10
|
+
limit: z.number().optional().describe('limit number of results (default: 16)'),
|
|
11
|
+
page: z.number().optional().describe('page number (default: 1), not used in search mode!'),
|
|
12
|
+
}),
|
|
13
|
+
outputSchema: z.array(z.object({
|
|
14
|
+
class: z.string().describe('class identification string'),
|
|
15
|
+
id: z.string().optional().describe('external unique class identifier (if set for the class)'),
|
|
16
|
+
name: z.string().describe('title of the class'),
|
|
17
|
+
})),
|
|
25
18
|
},
|
|
26
19
|
// GET /class - Get/check class
|
|
27
20
|
{
|
|
28
21
|
name: 'edubase_get_class',
|
|
29
22
|
description: "Get/check class.",
|
|
30
|
-
inputSchema: {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
},
|
|
23
|
+
inputSchema: z.object({
|
|
24
|
+
class: z.string().describe('class identification string'),
|
|
25
|
+
}),
|
|
26
|
+
outputSchema: z.object({
|
|
27
|
+
class: z.string().describe('class identification string'),
|
|
28
|
+
id: z.string().optional().describe('external unique class identifier (if set for the class)'),
|
|
29
|
+
name: z.string().describe('title of the class'),
|
|
30
|
+
start: z.string().optional().describe('start date and time (if set)'),
|
|
31
|
+
end: z.string().optional().describe('end date and time (if set)'),
|
|
32
|
+
}),
|
|
40
33
|
},
|
|
41
34
|
// GET /class:assignments - List all assignments in a class
|
|
42
35
|
{
|
|
43
36
|
name: 'edubase_get_class_assignments',
|
|
44
37
|
description: "List all assignments in a class.",
|
|
45
|
-
inputSchema: {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
38
|
+
inputSchema: z.object({
|
|
39
|
+
class: z.string().describe('class identification string'),
|
|
40
|
+
}),
|
|
41
|
+
outputSchema: z.array(z.object({
|
|
42
|
+
assignment: z.string().describe('assignment identification string'),
|
|
43
|
+
name: z.string().describe('title of the assignment'),
|
|
44
|
+
link: z.string().describe('link to the assignment page'),
|
|
45
|
+
status: z.string().describe('assignment and submission state (INACTIVE, ACTIVE, STARTED, SUBMITTED, GRADED)'),
|
|
46
|
+
starts: z.string().describe('when the assignment submission starts'),
|
|
47
|
+
ends: z.string().describe('when the assignment submission ends'),
|
|
48
|
+
})),
|
|
55
49
|
},
|
|
56
50
|
// GET /class:members - List all members in a class
|
|
57
51
|
{
|
|
58
52
|
name: 'edubase_get_class_members',
|
|
59
53
|
description: "List all members in a class.",
|
|
60
|
-
inputSchema: {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
required: ['class'],
|
|
69
|
-
},
|
|
54
|
+
inputSchema: z.object({
|
|
55
|
+
class: z.string().describe('class identification string'),
|
|
56
|
+
}),
|
|
57
|
+
outputSchema: z.array(z.object({
|
|
58
|
+
user: z.string().describe('user identification string'),
|
|
59
|
+
name: z.string().describe('name of the member'),
|
|
60
|
+
active: z.boolean().describe('active membership (approved and not expired)'),
|
|
61
|
+
})),
|
|
70
62
|
},
|
|
71
63
|
// POST /class:members - Assign user(s) to a class
|
|
72
64
|
{
|
|
73
65
|
name: 'edubase_post_class_members',
|
|
74
66
|
description: "Assign user(s) to a class. Updates memberships if already member of the class.",
|
|
75
|
-
inputSchema: {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
},
|
|
67
|
+
inputSchema: z.object({
|
|
68
|
+
class: z.string().describe('class identification string'),
|
|
69
|
+
users: z.string().describe('comma-separated list of user identification strings'),
|
|
70
|
+
expires: z.string().optional().describe('expiry in days or YYYY-MM-DD HH:ii:ss'),
|
|
71
|
+
notify: z.boolean().optional().describe('notify users (default: false)'),
|
|
72
|
+
}),
|
|
73
|
+
outputSchema: z.object({}).optional(),
|
|
97
74
|
},
|
|
98
75
|
// DELETE /class:members - Remove user(s) from a class
|
|
99
76
|
{
|
|
100
77
|
name: 'edubase_delete_class_members',
|
|
101
78
|
description: "Remove user(s) from a class.",
|
|
102
|
-
inputSchema: {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
},
|
|
79
|
+
inputSchema: z.object({
|
|
80
|
+
class: z.string().describe('class identification string'),
|
|
81
|
+
users: z.string().describe('comma-separated list of user identification strings'),
|
|
82
|
+
}),
|
|
83
|
+
outputSchema: z.object({}).optional(),
|
|
116
84
|
},
|
|
117
85
|
// POST /classes:members - Assign user(s) to class(es)
|
|
118
86
|
{
|
|
119
87
|
name: 'edubase_post_classes_members',
|
|
120
88
|
description: "Assign user(s) to class(es). Updates memberships if already member of a class.",
|
|
121
|
-
inputSchema: {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
},
|
|
89
|
+
inputSchema: z.object({
|
|
90
|
+
classes: z.string().describe('comma-separated list of class identification strings'),
|
|
91
|
+
users: z.string().describe('comma-separated list of user identification strings'),
|
|
92
|
+
expires: z.string().optional().describe('expiry in days or YYYY-MM-DD HH:ii:ss'),
|
|
93
|
+
notify: z.boolean().optional().describe('notify users (default: false)'),
|
|
94
|
+
}),
|
|
95
|
+
outputSchema: z.object({}).optional(),
|
|
143
96
|
},
|
|
144
97
|
// GET /user:classes - List all classes a user is member of
|
|
145
98
|
{
|
|
146
99
|
name: 'edubase_get_user_classes',
|
|
147
100
|
description: "List all classes a user is member of.",
|
|
148
|
-
inputSchema: {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
},
|
|
101
|
+
inputSchema: z.object({
|
|
102
|
+
user: z.string().describe('user identification string'),
|
|
103
|
+
}),
|
|
104
|
+
outputSchema: z.array(z.object({
|
|
105
|
+
class: z.string().describe('class identification string'),
|
|
106
|
+
id: z.string().optional().describe('external unique class identifier (if set for the class)'),
|
|
107
|
+
name: z.string().describe('title of the class'),
|
|
108
|
+
link: z.string().describe('link to the class page'),
|
|
109
|
+
active: z.boolean().describe('active membership (approved and not expired)'),
|
|
110
|
+
})),
|
|
158
111
|
},
|
|
159
112
|
// POST /user:classes - Assign user to class(es)
|
|
160
113
|
{
|
|
161
114
|
name: 'edubase_post_user_classes',
|
|
162
115
|
description: "Assign user to class(es). Updates membership if already member of a class.",
|
|
163
|
-
inputSchema: {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
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
|
-
},
|
|
116
|
+
inputSchema: z.object({
|
|
117
|
+
user: z.string().describe('user identification string'),
|
|
118
|
+
classes: z.string().describe('comma-separated list of class identification strings'),
|
|
119
|
+
expires: z.string().optional().describe('expiry in days or YYYY-MM-DD HH:ii:ss'),
|
|
120
|
+
notify: z.boolean().optional().describe('notify user (default: false)'),
|
|
121
|
+
}),
|
|
122
|
+
outputSchema: z.object({}).optional(),
|
|
185
123
|
},
|
|
186
124
|
// DELETE /user:classes - Remove user from class(es)
|
|
187
125
|
{
|
|
188
126
|
name: 'edubase_delete_user_classes',
|
|
189
127
|
description: "Remove user from class(es).",
|
|
190
|
-
inputSchema: {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
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
|
-
},
|
|
128
|
+
inputSchema: z.object({
|
|
129
|
+
user: z.string().describe('user identification string'),
|
|
130
|
+
classes: z.string().describe('comma-separated list of class identification strings'),
|
|
131
|
+
}),
|
|
132
|
+
outputSchema: z.object({}).optional(),
|
|
204
133
|
},
|
|
205
134
|
];
|
|
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
|
-
};
|