eyaltoledano/claude-task-master · error

MISSING_PARAMETER

MISSING_PARAMETER

Error message

The id parameter is required for scoping down tasks

What it means

This error is returned by the scopeDownDirect MCP tool handler when the 'id' parameter is missing. Scoping down a task requires knowing which task (or subtask) to narrow, so without an id the operation cannot proceed. The function returns a structured error object instead of throwing, so MCP clients see success:false with code MISSING_PARAMETER.

Source

Thrown at mcp-server/src/core/direct-functions/scope-down.js:68

			log.error('scopeDownDirect called without tasksJsonPath');
			disableSilentMode(); // Disable before returning
			return {
				success: false,
				error: {
					code: 'MISSING_ARGUMENT',
					message: 'tasksJsonPath is required'
				}
			};
		}

		// Check required parameters
		if (!id) {
			log.error('Missing required parameter: id');
			disableSilentMode();
			return {
				success: false,
				error: {
					code: 'MISSING_PARAMETER',
					message: 'The id parameter is required for scoping down tasks'
				}
			};
		}

		// Parse task IDs - convert to numbers as expected by scopeDownTask
		const taskIds = id.split(',').map((taskId) => parseInt(taskId.trim(), 10));

		log.info(
			`Scoping down tasks: ${taskIds.join(', ')}, strength: ${strength}, research: ${research}`
		);

		// Call the scopeDownTask function
		const result = await scopeDownTask(
			tasksJsonPath,
			taskIds,
			strength,
			customPrompt,

View on GitHub (pinned to c0c98d367c)

Solutions

  1. Pass the task id (e.g. '1' or '1.2') in the tool arguments when calling scope-down
  2. Verify the argument object sent by the MCP client includes id and is not empty
  3. If id comes from a variable, check it is populated before invoking the tool

Example fix

// before
await client.callTool('scope-down', { tasksJsonPath: './tasks.json' });
// after
await client.callTool('scope-down', { tasksJsonPath: './tasks.json', id: '1.2' });
Defensive patterns

Strategy: validation

Validate before calling

if (!args || args.id == null || args.id === '') throw new Error('scope-down requires a task id');

Type guard

function hasId(args) { return typeof args?.id === 'string' ? args.id.length > 0 : typeof args?.id === 'number'; }

Try / catch

try { const r = await callTool('scope-down', args); if (!r.success) throw new Error(`${r.error.code}: ${r.error.message}`); } catch (e) { if (e.message.includes('MISSING_PARAMETER')) { /* prompt for id */ } else throw e; }

Prevention

When it happens

Trigger: Calling the scope-down MCP tool without passing the 'id' argument (e.g. only passing tasksJsonPath or scope details), or passing id as empty string/null because the client serialized an absent optional field.

Common situations: LLM agents invoking the tool with an incomplete argument set; hand-written MCP client scripts omitting id; copy-pasted invocations from examples that assumed a default task id.

Understand the failure class

Background: Missing required parameter errors: what 'X is required' and 'the required X param is missing' mean, and how to fix them — this error's family across 27 libraries.

Related errors


AI-assisted analysis of eyaltoledano/claude-task-master@c0c98d367c (2026-08-29). Data as JSON: /api/errors/7c8e3bca746e4db2. Report an issue: GitHub.