Gauntlet-Incept MCP
by Birdsmith
- src
- api
/**
* Question API Routes
*
* This file defines the routes for the Question API endpoints:
* - tagQuestion: Identifies subject, grade, standard, lesson, and difficulty of a given question
* - gradeQuestion: Evaluates a tagged question against quality standards
* - generateQuestion: Creates questions based on specified tags or example questions
*/
const express = require('express');
const router = express.Router();
// Import services
const questionService = require('../services/questionService');
/**
* @route POST /api/question/tag
* @desc Tag a question with subject, grade, standard, lesson, and difficulty
* @access Public
*/
router.post('/tag', async (req, res) => {
try {
const { question } = req.body;
if (!question) {
return res.status(400).json({
success: false,
error: 'Question content is required'
});
}
const tags = await questionService.tagQuestion(question);
return res.status(200).json({
success: true,
data: tags
});
} catch (error) {
return res.status(500).json({
success: false,
error: error.message
});
}
});
/**
* @route POST /api/question/grade
* @desc Grade a tagged question against quality standards
* @access Public
*/
router.post('/grade', async (req, res) => {
try {
const { question, tags } = req.body;
if (!question) {
return res.status(400).json({
success: false,
error: 'Question content is required'
});
}
if (!tags) {
return res.status(400).json({
success: false,
error: 'Question tags are required'
});
}
const gradeResult = await questionService.gradeQuestion(question, tags);
return res.status(200).json({
success: true,
data: gradeResult
});
} catch (error) {
return res.status(500).json({
success: false,
error: error.message
});
}
});
/**
* @route POST /api/question/generate
* @desc Generate a question based on tags or an example question
* @access Public
*/
router.post('/generate', async (req, res) => {
try {
const { tags, exampleQuestion } = req.body;
if (!tags && !exampleQuestion) {
return res.status(400).json({
success: false,
error: 'Either tags or an example question is required'
});
}
const generatedQuestion = await questionService.generateQuestion(tags, exampleQuestion);
return res.status(200).json({
success: true,
data: generatedQuestion
});
} catch (error) {
return res.status(500).json({
success: false,
error: error.message
});
}
});
module.exports = router;