n8n-io/n8n · error · NodeOperationError

The selected tools are not supported by "${currentAgentType}

Error message

The selected tools are not supported by "${currentAgentType}", please use "Tools Agent" instead

What it means

Thrown by checkForStructuredTools when one or more connected tools are DynamicStructuredTool instances. Only Tools Agent supports structured tools; other agent types (Conversational, ReAct, Plan & Execute, SQL) cannot invoke them. The error names the offending tool(s) in its description and instructs the user to switch to Tools Agent.

Source

Thrown at packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/utils.ts:46

	if (ctx.getNode().typeVersion <= 1.6) {
		return parsedOutput;
	}
	// For 1.7 and above, we try to extract the output from the parsed output
	// with fallback to the original output if it's not present
	return parsedOutput?.output ?? parsedOutput;
}

export async function checkForStructuredTools(
	tools: Array<Tool | DynamicStructuredTool<ZodObjectAny>>,
	node: INode,
	currentAgentType: string,
) {
	const dynamicStructuredTools = tools.filter(
		(tool) => tool.constructor.name === 'DynamicStructuredTool',
	);
	if (dynamicStructuredTools.length > 0) {
		const getToolName = (tool: Tool | DynamicStructuredTool) => `"${tool.name}"`;
		throw new NodeOperationError(
			node,
			`The selected tools are not supported by "${currentAgentType}", please use "Tools Agent" instead`,
			{
				itemIndex: 0,
				description: `Incompatible connected tools: ${dynamicStructuredTools.map(getToolName).join(', ')}`,
			},
		);
	}
}

View on GitHub (pinned to 5ac6606e81)

Solutions

  1. Switch the Agent type to 'Tools Agent' (which supports DynamicStructuredTool).
  2. Or replace the structured tool with a non-structured equivalent compatible with the current agent type.
  3. Inspect the description field of the error to see exactly which tools are incompatible.
Defensive patterns

Strategy: validation

Validate before calling

const structured = tools.filter(t => t.constructor.name === 'DynamicStructuredTool');
if (structured.length > 0 && currentAgentType !== 'Tools Agent') {
  throw new NodeOperationError(node, `Agent type '${currentAgentType}' does not support structured tools (${structured.map(t => t.name).join(', ')}). Switch to Tools Agent.`);
}

Type guard

function isDynamicStructuredTool(tool: unknown): tool is DynamicStructuredTool {
  return !!tool && (tool as any).constructor?.name === 'DynamicStructuredTool';
}

Prevention

When it happens

Trigger: A non-Tools-Agent agent (Conversational / ReAct / Plan & Execute / SQL) has a DynamicStructuredTool connected — e.g. a function tool defined with a Zod schema, the HTTP Request Tool, or another tool that emits DynamicStructuredTool.

Common situations: User added a structured tool while keeping an older agent type; workflow copied from a Tools Agent setup into a different agent; upgraded a tool that became structured.

Related errors


AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12). Data as JSON: /api/errors/1c0a2bf5bc4b5cbb. Report an issue: GitHub.