get_weak_areas
Identify task statements with accuracy below 70% to focus study efforts on areas needing improvement for certification preparation.
Instructions
Identify your weakest task statements based on accuracy below 70%. Focus your study on these areas.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/get-weak-areas.ts:8-36 (handler)The handler for the get_weak_areas tool, which retrieves data using getWeakAreas and formats it for the user.
export function registerGetWeakAreas(server: McpServer, db: Database.Database, userConfig: UserConfig): void { server.tool( 'get_weak_areas', 'Identify your weakest task statements based on accuracy below 70%. Focus your study on these areas.', {}, async () => { const userId = userConfig.userId; ensureUser(db, userId); const curriculum = loadCurriculum(); const weakAreas = getWeakAreas(db, userId); if (weakAreas.length === 0) { return { content: [{ type: 'text' as const, text: 'No weak areas identified yet. Complete some questions first or all areas are above 70%!' }], }; } const lines = ['═══ WEAK AREAS ═══', '']; for (const area of weakAreas) { const domain = curriculum.domains.find(d => d.id === area.domainId); const ts = domain?.taskStatements.find(t => t.id === area.taskStatement); lines.push(` ${area.taskStatement}: ${ts?.title ?? 'Unknown'}`); lines.push(` Accuracy: ${area.accuracyPercent}% (${area.correctAttempts}/${area.totalAttempts})`); lines.push(` Mastery: ${area.masteryLevel}`); lines.push(''); } return { content: [{ type: 'text' as const, text: lines.join('\n') }] }; } ); - src/db/mastery.ts:12-14 (helper)The core database logic that queries for task statements with low accuracy.
export function getWeakAreas(db: Database.Database, userId: string, threshold: number = 70): readonly DomainMastery[] { return db.prepare('SELECT * FROM domain_mastery WHERE userId = ? AND accuracyPercent < ? AND totalAttempts > 0 ORDER BY accuracyPercent ASC').all(userId, threshold) as DomainMastery[]; } - src/tools/index.ts:10-30 (registration)Where the registerGetWeakAreas function is imported and executed to register the tool with the MCP server.
import { registerGetWeakAreas } from './get-weak-areas.js'; import { registerGetStudyPlan } from './get-study-plan.js'; import { registerScaffoldProject } from './scaffold-project.js'; import { registerResetProgress } from './reset-progress.js'; import { registerStartPracticeExam } from './start-practice-exam.js'; import { registerSubmitExamAnswer } from './submit-exam-answer.js'; import { registerGetExamHistory } from './get-exam-history.js'; import { registerFollowUp } from './follow-up.js'; import { registerStartCapstoneBuild } from './start-capstone-build.js'; import { registerCapstoneBuildStep } from './capstone-build-step.js'; import { registerCapstoneBuildStatus } from './capstone-build-status.js'; import { registerDashboard } from './dashboard.js'; export function registerTools(server: McpServer, db: Database.Database, userConfig: UserConfig): void { registerSubmitAnswer(server, db, userConfig); registerGetProgress(server, db, userConfig); registerGetCurriculum(server, db, userConfig); registerGetSectionDetails(server, db, userConfig); registerGetPracticeQuestion(server, db, userConfig); registerStartAssessment(server, db, userConfig); registerGetWeakAreas(server, db, userConfig);