@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.
@@ -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
- 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
- },
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
- type: 'object',
32
- properties: {
33
- class: {
34
- type: 'string',
35
- description: 'class identification string',
36
- },
37
- },
38
- required: ['class'],
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
- type: 'object',
47
- properties: {
48
- class: {
49
- type: 'string',
50
- description: 'class identification string',
51
- },
52
- },
53
- required: ['class'],
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
- type: 'object',
62
- properties: {
63
- class: {
64
- type: 'string',
65
- description: 'class identification string',
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
- 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
- },
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
- 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
- },
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
- 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
- },
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
- type: 'object',
150
- properties: {
151
- user: {
152
- type: 'string',
153
- description: 'user identification string',
154
- },
155
- },
156
- required: ['user'],
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
- 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
- },
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
- 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
- },
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
- };