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
- Pass the task id (e.g. '1' or '1.2') in the tool arguments when calling scope-down
- Verify the argument object sent by the MCP client includes id and is not empty
- 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
- Always pass both id and tasksJsonPath to scope tools
- Build a typed wrapper around MCP tool calls requiring id
- Log full arguments before invoking tools during development
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.