# `TMCP030` list_all_ids includes IDs from all categories Call list_all_ids with requirements and tests from multiple categories loaded. Verify that IDs from all categories are merged into a single sorted list each. :::{dropdown} Is a test for :open: :icon: check-circle-fill :color: primary [`MCP009` List all IDs](/requirements/MCP009) ::: :::{dropdown} Automated in :open: :icon: check-circle-fill :color: success {fab}`python` [`test_list_all_ids_multi_category`](https://github.com/agagniere/speky/blob/master/tests/test_mcp_server.py#L724) ::: :::{dropdown} Source :icon: file-code :color: info __Source file__: [`specs/mcp/test_09.yaml`](https://github.com/agagniere/speky/blob/master/specs/mcp/test_09.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 `list_all_ids` with both functional and non-functional specs loaded ```json { "id": 2, "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "list_all_ids", "arguments": {} } } ``` ### Step 2 Verify IDs from both functional (RF01, RF02, T01, T02) and non-functional (RF03, RF04, T03, T04) categories are returned together, sorted ```json { "id": 2, "jsonrpc": "2.0", "result": { "structuredContent": { "requirements": ["RF01", "RF02", "RF03", "RF04"], "tests": ["T01", "T02", "T03", "T04"] } } } ```