{"record":{"id":"9e7a6b8dc3e181f2","repo":"eyaltoledano/claude-task-master","slug":"missing-source-ids","errorCode":"MISSING_SOURCE_IDS","errorMessage":"Source IDs are required","messagePattern":"Source IDs are required","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"mcp-server/src/core/direct-functions/move-task-cross-tag.js","lineNumber":39,"sourceCode":" * @param {boolean} args.ignoreDependencies - Break cross-tag dependencies during move\n * @param {string} args.file - Alternative path to the tasks.json file\n * @param {string} args.projectRoot - Project root directory\n * @param {Object} log - Logger object\n * @returns {Promise<{success: boolean, data?: Object, error?: Object}>}\n */\nexport async function moveTaskCrossTagDirect(args, log, context = {}) {\n\tconst { session } = context;\n\tconst { projectRoot } = args;\n\n\tlog.info(`moveTaskCrossTagDirect called with args: ${JSON.stringify(args)}`);\n\n\t// Validate required parameters\n\tif (!args.sourceIds) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\tmessage: 'Source IDs are required',\n\t\t\t\tcode: 'MISSING_SOURCE_IDS'\n\t\t\t}\n\t\t};\n\t}\n\n\tif (!args.sourceTag) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\tmessage: 'Source tag is required for cross-tag moves',\n\t\t\t\tcode: 'MISSING_SOURCE_TAG'\n\t\t\t}\n\t\t};\n\t}\n\n\tif (!args.targetTag) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {","sourceCodeStart":21,"sourceCodeEnd":57,"githubUrl":"https://github.com/eyaltoledano/claude-task-master/blob/c0c98d367c55296bfe69e65680625b6db437af02/mcp-server/src/core/direct-functions/move-task-cross-tag.js#L21-L57","documentation":"MISSING_SOURCE_IDS is a parameter validation error returned by moveTaskCrossTagDirect when the `sourceIds` argument is absent/falsy. Cross-tag task moves require at least one source task ID to know which task(s) to move. It is a structured (non-throwing) error response with success:false.","triggerScenarios":"Calling the move-task MCP tool (which delegates to moveTaskCrossTagDirect) without providing `sourceIds` — e.g. args = { sourceTag: 'backlog', targetTag: 'in-progress' } with no sourceIds — hits the guard at mcp-server/src/core/direct-functions/move-task-cross-tag.js:39.","commonSituations":"Omitting the --from/IDs flag on the CLI move command, an LLM client invoking the move_task tool without filling in sourceIds, or passing an empty string instead of an ID.","solutions":["Pass `sourceIds` with the task ID(s) to move, e.g. sourceIds: \"5\" or \"1,2,3\".","If invoking from an LLM, include sourceIds in the tool arguments schema so it is always supplied.","Check your CLI invocation includes --from=<id> (or the equivalent sourceIds argument)."],"exampleFix":"// before\nawait moveTaskCrossTagDirect({ sourceTag: 'backlog', targetTag: 'in-progress' }, log);\n// after\nawait moveTaskCrossTagDirect({ sourceIds: '5', sourceTag: 'backlog', targetTag: 'in-progress' }, log);","handlingStrategy":"validation","validationCode":"const sourceIds = args.sourceIds;\nif (sourceIds === undefined || sourceIds === null || sourceIds === '') {\n  throw new Error('sourceIds is required before calling move-task');\n}","typeGuard":"function hasSourceIds(args) {\n  return typeof args?.sourceIds === 'string' ? args.sourceIds.trim().length > 0 : Array.isArray(args?.sourceIds) && args.sourceIds.length > 0;\n}","tryCatchPattern":"const resp = await moveTaskCrossTagDirect(args, log);\nif (!resp.success && resp.error.code === 'MISSING_SOURCE_IDS') {\n  throw new Error('Provide sourceIds, e.g. { sourceIds: \"5\" }');\n}","preventionTips":["Always pass sourceIds (even a single ID) with every move_task tool call.","Validate tool arguments in the client before dispatching to the MCP server.","For LLM callers, mark sourceIds as required in the tool's input schema."],"tags":["mcp","validation","missing-parameter","move-task"],"backgroundTag":"missing-required-parameter","analyzedSha":"c0c98d367c55296bfe69e65680625b6db437af02","analyzedAt":"2026-08-29T02:56:26.071Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}