Breaking Change
quiz_createnow acceptsdifficulty: str("easy"|"medium"|"hard") instead ofint(1|2|3)
Added
constants.pymodule as single source of truth for all API code-name mappingsCodeMapperclass with bidirectional lookup (name→code, code→name)- Dynamic error messages now show valid options from
CodeMapper uv.lockcommitted for supply chain security
Changed
- All MCP tools now use
constants.CodeMapperfor input validation - All API client output now uses
constants.CodeMapperfor human-readable names - Removed ~10 static
_get_*_namehelper methods fromapi_client.py - Removed duplicate
*_codesdictionaries fromserver.pytool functions
Fixed
- Removed duplicate code block in research status parsing
Docs
- Updated comprehensive cleanup tests in MCP_TEST_PLAN.md (Tests 10.1-10.7)
- Added
constants.pyto architecture docs