@edubase/mcp 1.0.23 → 1.1.0
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 +3 -2
package/dist/tools/quizes.js
CHANGED
|
@@ -1,253 +1,98 @@
|
|
|
1
|
-
|
|
2
|
-
# Quiz Sets (Middle Level in EduBase Hierarchy)
|
|
3
|
-
|
|
4
|
-
Quiz sets are collections of questions and/or question groups in EduBase.
|
|
5
|
-
They sit between Questions (lowest level) and Exams (highest level) in the hierarchy.
|
|
6
|
-
|
|
7
|
-
Key characteristics:
|
|
8
|
-
- Quiz sets contain a set of questions or question groups
|
|
9
|
-
- They can be used for practice or to power Exams
|
|
10
|
-
- Questions in a Quiz set can be random or fixed
|
|
11
|
-
- One Quiz set can be used to create multiple Exams
|
|
12
|
-
*/
|
|
13
|
-
/* Tool definitions */
|
|
1
|
+
import * as z from 'zod/v4';
|
|
14
2
|
export const EDUBASE_API_TOOLS_QUIZES = [
|
|
15
3
|
// GET /quizes - List owned and managed Quiz sets
|
|
16
4
|
{
|
|
17
5
|
name: 'edubase_get_quizes',
|
|
18
|
-
description:
|
|
19
|
-
inputSchema: {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
},
|
|
30
|
-
page: {
|
|
31
|
-
type: 'number',
|
|
32
|
-
description: 'page number (default: 1), not used in search mode!',
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
required: [],
|
|
36
|
-
},
|
|
6
|
+
description: 'List owned and managed Quiz sets. Quiz sets are named collections of questions that sit at the middle level of the EduBase Quiz hierarchy.',
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
search: z.string().describe('search string to filter results').optional(),
|
|
9
|
+
limit: z.number().describe('limit number of results (default: 16)').optional(),
|
|
10
|
+
page: z.number().describe('page number (default: 1), not used in search mode!').optional(),
|
|
11
|
+
}),
|
|
12
|
+
outputSchema: z.array(z.object({
|
|
13
|
+
quiz: z.string().describe('Quiz identification string'),
|
|
14
|
+
id: z.string().describe('external unique Quiz identifier (if set for the Quiz)').optional(),
|
|
15
|
+
name: z.string().describe('title of the Quiz set'),
|
|
16
|
+
})),
|
|
37
17
|
},
|
|
38
18
|
// GET /quiz - Get/check Quiz set
|
|
39
19
|
{
|
|
40
20
|
name: 'edubase_get_quiz',
|
|
41
|
-
description:
|
|
42
|
-
inputSchema: {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
required: ['quiz'],
|
|
51
|
-
},
|
|
21
|
+
description: 'Get/check Quiz set. Containing questions and powering Exams.',
|
|
22
|
+
inputSchema: z.object({
|
|
23
|
+
quiz: z.string().describe('Quiz identification string'),
|
|
24
|
+
}),
|
|
25
|
+
outputSchema: z.object({
|
|
26
|
+
quiz: z.string().describe('Quiz identification string'),
|
|
27
|
+
id: z.string().describe('external unique Quiz identifier (if set for the Quiz)').optional(),
|
|
28
|
+
name: z.string().describe('title of the Quiz set'),
|
|
29
|
+
}),
|
|
52
30
|
},
|
|
53
31
|
// POST /quiz - Create a new Quiz set
|
|
54
32
|
{
|
|
55
33
|
name: 'edubase_post_quiz',
|
|
56
|
-
description:
|
|
57
|
-
inputSchema: {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
id: {
|
|
69
|
-
type: 'string',
|
|
70
|
-
description: "External unique Quiz identifier.\n" +
|
|
71
|
-
"Should be maximum 64 characters long!"
|
|
72
|
-
},
|
|
73
|
-
description: {
|
|
74
|
-
type: 'string',
|
|
75
|
-
description: 'short description',
|
|
76
|
-
},
|
|
77
|
-
mode: {
|
|
78
|
-
type: 'string',
|
|
79
|
-
description: "Sets how questions are displayed during the Quiz. (default: TEST)\n" +
|
|
80
|
-
"- TEST: all questions are displayed at once, user can answer them in any order and switch between them\n" +
|
|
81
|
-
"- TURNS: questions are displayed one by one, only one question is visible at a time and the user must answer it before moving to the next question\n"
|
|
82
|
-
},
|
|
83
|
-
type: {
|
|
84
|
-
type: 'string',
|
|
85
|
-
description: "Type of the Quiz set. (default: set)\n" +
|
|
86
|
-
"- set: for practice purposes\n" +
|
|
87
|
-
"- exam: for exam purposes\n" +
|
|
88
|
-
"- private: for private purposes (e.g testing)\n"
|
|
89
|
-
},
|
|
90
|
-
},
|
|
91
|
-
required: ['title'],
|
|
92
|
-
},
|
|
34
|
+
description: 'Create a new Quiz set. Quiz sets are collections of questions that can be used for practice or to power multiple Exams.',
|
|
35
|
+
inputSchema: z.object({
|
|
36
|
+
language: z.string().describe('desired Quiz set language').optional(),
|
|
37
|
+
title: z.string().describe('title of the Quiz set'),
|
|
38
|
+
id: z.string().describe('External unique Quiz identifier. Should be maximum 64 characters long!').optional(),
|
|
39
|
+
description: z.string().describe('short description').optional(),
|
|
40
|
+
mode: z.string().describe('Sets how questions are displayed during the Quiz. (default: TEST) - TEST: all questions are displayed at once, user can answer them in any order and switch between them - TURNS: questions are displayed one by one, only one question is visible at a time and the user must answer it before moving to the next question').optional(),
|
|
41
|
+
type: z.string().describe('Type of the Quiz set. (default: set) - set: for practice purposes - exam: for exam purposes - private: for private purposes (e.g testing)').optional(),
|
|
42
|
+
}),
|
|
43
|
+
outputSchema: z.object({
|
|
44
|
+
quiz: z.string().describe('Quiz identification string'),
|
|
45
|
+
}),
|
|
93
46
|
},
|
|
94
47
|
// DELETE /quiz - Remove/archive Quiz set
|
|
95
48
|
{
|
|
96
49
|
name: 'edubase_delete_quiz',
|
|
97
|
-
description:
|
|
98
|
-
inputSchema: {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
type: 'string',
|
|
103
|
-
description: 'Quiz identification string',
|
|
104
|
-
},
|
|
105
|
-
},
|
|
106
|
-
required: ['quiz'],
|
|
107
|
-
},
|
|
50
|
+
description: 'Remove/archive Quiz set.',
|
|
51
|
+
inputSchema: z.object({
|
|
52
|
+
quiz: z.string().describe('Quiz identification string'),
|
|
53
|
+
}),
|
|
54
|
+
outputSchema: z.object({}).optional(),
|
|
108
55
|
},
|
|
109
56
|
// GET /quiz:questions - List all questions and question groups in a Quiz set
|
|
110
57
|
{
|
|
111
58
|
name: 'edubase_get_quiz_questions',
|
|
112
|
-
description:
|
|
113
|
-
inputSchema: {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
59
|
+
description: 'List all questions and question groups in a Quiz set. Quiz sets contain questions (lowest level) and can be used by exams (highest level).',
|
|
60
|
+
inputSchema: z.object({
|
|
61
|
+
quiz: z.string().describe('Quiz identification string'),
|
|
62
|
+
}),
|
|
63
|
+
outputSchema: z.array(z.union([
|
|
64
|
+
z.object({
|
|
65
|
+
id: z.string().describe('external unique question identifier (if present)').optional(),
|
|
66
|
+
question: z.string().describe('question identification string (if question)'),
|
|
67
|
+
active: z.boolean().describe('active item'),
|
|
68
|
+
}).strict(),
|
|
69
|
+
z.object({
|
|
70
|
+
id: z.string().describe('external unique question identifier (if present)').optional(),
|
|
71
|
+
group: z.string().describe('question group title (if group)'),
|
|
72
|
+
active: z.boolean().describe('active item'),
|
|
73
|
+
}).strict(),
|
|
74
|
+
])),
|
|
123
75
|
},
|
|
124
76
|
// POST /quiz:questions - Assign question(s) to a Quiz set, or one of its question group
|
|
125
77
|
{
|
|
126
78
|
name: 'edubase_post_quiz_questions',
|
|
127
|
-
description:
|
|
128
|
-
inputSchema: {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
},
|
|
135
|
-
group: {
|
|
136
|
-
type: 'string',
|
|
137
|
-
description: 'question group title',
|
|
138
|
-
},
|
|
139
|
-
questions: {
|
|
140
|
-
type: 'string',
|
|
141
|
-
description: 'comma-separated list of question identification strings',
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
required: ['quiz', 'questions'],
|
|
145
|
-
},
|
|
79
|
+
description: 'Assign question(s) to a Quiz set, or one of its question group. Questions can exist independently from Quiz sets.',
|
|
80
|
+
inputSchema: z.object({
|
|
81
|
+
quiz: z.string().describe('Quiz identification string'),
|
|
82
|
+
group: z.string().describe('question group title').optional(),
|
|
83
|
+
questions: z.string().describe('comma-separated list of question identification strings'),
|
|
84
|
+
}),
|
|
85
|
+
outputSchema: z.object({}).optional(),
|
|
146
86
|
},
|
|
147
87
|
// DELETE /quiz:questions - Remove question(s) from a Quiz set, or one of its question group
|
|
148
88
|
{
|
|
149
89
|
name: 'edubase_delete_quiz_questions',
|
|
150
|
-
description:
|
|
151
|
-
inputSchema: {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
},
|
|
158
|
-
group: {
|
|
159
|
-
type: 'string',
|
|
160
|
-
description: 'question group title',
|
|
161
|
-
},
|
|
162
|
-
questions: {
|
|
163
|
-
type: 'string',
|
|
164
|
-
description: 'comma-separated list of question identification strings',
|
|
165
|
-
},
|
|
166
|
-
},
|
|
167
|
-
required: ['quiz', 'questions'],
|
|
168
|
-
},
|
|
90
|
+
description: 'Remove question(s) from a Quiz set, or one of its question group.',
|
|
91
|
+
inputSchema: z.object({
|
|
92
|
+
quiz: z.string().describe('Quiz identification string'),
|
|
93
|
+
group: z.string().describe('question group title').optional(),
|
|
94
|
+
questions: z.string().describe('comma-separated list of question identification strings'),
|
|
95
|
+
}),
|
|
96
|
+
outputSchema: z.object({}).optional(),
|
|
169
97
|
},
|
|
170
98
|
];
|
|
171
|
-
/* Output schema definitions */
|
|
172
|
-
export const EDUBASE_API_TOOLS_QUIZES_OUTPUT_SCHEMA = {
|
|
173
|
-
// GET /quizes - List owned and managed Quiz sets
|
|
174
|
-
edubase_get_quizes: {
|
|
175
|
-
type: 'array',
|
|
176
|
-
items: {
|
|
177
|
-
type: 'object',
|
|
178
|
-
properties: {
|
|
179
|
-
quiz: {
|
|
180
|
-
type: 'string',
|
|
181
|
-
description: 'Quiz identification string',
|
|
182
|
-
},
|
|
183
|
-
id: {
|
|
184
|
-
type: 'string',
|
|
185
|
-
description: 'external unique Quiz identifier (if set for the Quiz)',
|
|
186
|
-
},
|
|
187
|
-
name: {
|
|
188
|
-
type: 'string',
|
|
189
|
-
description: 'title of the Quiz set',
|
|
190
|
-
},
|
|
191
|
-
},
|
|
192
|
-
},
|
|
193
|
-
},
|
|
194
|
-
// GET /quiz - Get/check Quiz set
|
|
195
|
-
edubase_get_quiz: {
|
|
196
|
-
type: 'object',
|
|
197
|
-
properties: {
|
|
198
|
-
quiz: {
|
|
199
|
-
type: 'string',
|
|
200
|
-
description: 'Quiz identification string',
|
|
201
|
-
},
|
|
202
|
-
id: {
|
|
203
|
-
type: 'string',
|
|
204
|
-
description: 'external unique Quiz identifier (if set for the Quiz)',
|
|
205
|
-
},
|
|
206
|
-
name: {
|
|
207
|
-
type: 'string',
|
|
208
|
-
description: 'title of the Quiz set',
|
|
209
|
-
},
|
|
210
|
-
},
|
|
211
|
-
},
|
|
212
|
-
// GET /quiz - Create a new Quiz set
|
|
213
|
-
edubase_post_quiz: {
|
|
214
|
-
type: 'object',
|
|
215
|
-
properties: {
|
|
216
|
-
quiz: {
|
|
217
|
-
type: 'string',
|
|
218
|
-
description: 'Quiz identification string',
|
|
219
|
-
},
|
|
220
|
-
},
|
|
221
|
-
},
|
|
222
|
-
// DELETE /quiz - Remove/archive Quiz set
|
|
223
|
-
edubase_delete_quiz: {},
|
|
224
|
-
// GET /quiz:questions - List all questions and question groups in a Quiz set
|
|
225
|
-
edubase_get_quiz_questions: {
|
|
226
|
-
type: 'array',
|
|
227
|
-
items: {
|
|
228
|
-
type: 'object',
|
|
229
|
-
properties: {
|
|
230
|
-
id: {
|
|
231
|
-
type: 'string',
|
|
232
|
-
description: 'external unique question identifier (if present)',
|
|
233
|
-
},
|
|
234
|
-
question: {
|
|
235
|
-
type: 'string',
|
|
236
|
-
description: 'question identification string (if question)',
|
|
237
|
-
},
|
|
238
|
-
group: {
|
|
239
|
-
type: 'string',
|
|
240
|
-
description: 'question group title (if group)',
|
|
241
|
-
},
|
|
242
|
-
active: {
|
|
243
|
-
type: 'boolean',
|
|
244
|
-
description: 'active item',
|
|
245
|
-
},
|
|
246
|
-
},
|
|
247
|
-
},
|
|
248
|
-
},
|
|
249
|
-
// POST /quiz:questions - Assign question(s) to a Quiz set, or one of its question group
|
|
250
|
-
edubase_post_quiz_questions: {},
|
|
251
|
-
// DELETE /quiz:questions - Remove question(s) from a Quiz set, or one of its question group
|
|
252
|
-
edubase_delete_quiz_questions: {},
|
|
253
|
-
};
|