# `TMCP045` least_tested_requirements returns all requirements sorted by coverage Call least_tested_requirements with no arguments and verify all requirements are returned sorted by ascending test count :::{dropdown} Is a test for :open: :icon: check-circle-fill :color: primary [`MCP012` List requirements sorted by test coverage](/requirements/MCP012) ::: :::{dropdown} Automated in :open: :icon: check-circle-fill :color: success {fab}`python` [`test_sorted_by_coverage`](https://github.com/agagniere/speky/blob/master/tests/test_mcp_server.py#L836) ::: :::{dropdown} Source :icon: file-code :color: info __Source file__: [`specs/mcp/test_12.yaml`](https://github.com/agagniere/speky/blob/master/specs/mcp/test_12.yaml) __Loaded from__: [`speky_mcp`](https://github.com/agagniere/speky/blob/master/specs/mcp/mcp.toml) ::: ## Initial state The expected state is the final state of [`TMCP003` Initialize the MCP server](/tests/TMCP003) ## Procedure ### Step 1 The client calls `least_tested_requirements` with no arguments ```json { "id": 2, "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "least_tested_requirements", "arguments": {} } } ``` ### Step 2 Verify all requirements are returned sorted by ascending test count, then ascending automated count, then alphabetically by ID: - RF04 first (0 tests) - RF01 then RF02 (1 test each, 0 automated) - RF03 last (2 tests, 1 automated) ```json { "id": 2, "jsonrpc": "2.0", "result": { "structuredContent": { "requirements": [ {"id": "RF04", "category": "non-functional", "test_plans": 0, "automated_test_plans": 0}, {"id": "RF01", "category": "functional", "test_plans": 1, "automated_test_plans": 0}, {"id": "RF02", "category": "functional", "short": "Second", "test_plans": 1, "automated_test_plans": 0}, {"id": "RF03", "category": "non-functional", "short": "Number 3", "test_plans": 2, "automated_test_plans": 1} ] } } } ```