eyaltoledano/claude-task-master · error
INPUT_VALIDATION_ERROR
INPUT_VALIDATION_ERROR
Error message
Task ID (id) is required
What it means
After confirming tasksJsonPath exists, addDependencyDirect validates that the id parameter — the task that will receive the new dependency — is present. Missing id yields a structured INPUT_VALIDATION_ERROR result rather than a thrown error. This prevents the core function from attempting dependency resolution against an undefined task identifier.
Source
Thrown at mcp-server/src/core/direct-functions/add-dependency.js:47
// Check if tasksJsonPath was provided
if (!tasksJsonPath) {
log.error('addDependencyDirect called without tasksJsonPath');
return {
success: false,
error: {
code: 'MISSING_ARGUMENT',
message: 'tasksJsonPath is required'
}
};
}
// Validate required parameters
if (!id) {
return {
success: false,
error: {
code: 'INPUT_VALIDATION_ERROR',
message: 'Task ID (id) is required'
}
};
}
if (!dependsOn) {
return {
success: false,
error: {
code: 'INPUT_VALIDATION_ERROR',
message: 'Dependency ID (dependsOn) is required'
}
};
}
// Use provided path
const tasksPath = tasksJsonPath;
View on GitHub (pinned to c0c98d367c)
Solutions
- Include the id argument with the ID of the task that should depend on another.
- Check parameter naming — the tool expects exactly id, not taskId or task_id.
- Confirm the value is non-empty (e.g. '3' or 'HAM-123'), not an empty string.
- Consult the add_dependency tool schema exposed by the MCP server for the correct argument list.
Example fix
// before
await addDependencyDirect({ tasksJsonPath, dependsOn: '1' });
// after
await addDependencyDirect({ tasksJsonPath, id: '3', dependsOn: '1' }); Defensive patterns
Strategy: validation
Validate before calling
function assertTaskId(args) {
const id = args?.id;
if (typeof id !== 'string' || id.trim() === '') {
throw new Error('Task ID (id) is required');
}
} Type guard
function hasTaskId(args) {
return typeof args?.id === 'string' && args.id.trim().length > 0;
} Try / catch
if (!hasTaskId(args)) {
return { success: false, error: { code: 'INPUT_VALIDATION_ERROR', message: 'Task ID (id) is required' } };
} Prevention
- Use the exact argument name id (not taskId/task_id) per the tool schema.
- Validate argument objects against the tool's input schema before dispatch.
- When generating calls with an LLM, include the schema in the prompt so parameter names are honored.
- Trim and non-empty check IDs before sending.
When it happens
Trigger: Invoking the add_dependency tool with tasksJsonPath and dependsOn but omitting id; a client mapping argument names incorrectly (e.g. sending taskId instead of id) so id is undefined.
Common situations: LLM-generated tool calls that guess parameter names; hand-written MCP client code that predates a parameter rename; batch scripts building arguments dynamically where the id key is mistyped.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
AI-assisted analysis of eyaltoledano/claude-task-master@c0c98d367c (2026-08-29).
Data as JSON: /api/errors/75b6d6eec11969b2.
Report an issue: GitHub.