# nodes

node_type: nodes-langchain.lmChatAwsBedrock
package_name: @n8n/n8n-nodes-langchain
display_name: AWS Bedrock Chat Model
description: Language Model AWS Bedrock
category: transform
development_style: programmatic
version: 1.1
operations: []
credentials_required:
  [
  {
  "name": "aws",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: AWS Bedrock Chat Model node documentation
  description: Learn how to use the AWS Bedrock Chat Model node in n8n. Follow technical documentation to integrate AWS Bedrock Chat Model node into your workflows.
  contentType: [integration, reference]
  ---

  # AWS Bedrock Chat Model node

  The AWS Bedrock Chat Model node allows you use LLM models utilising AWS Bedrock platform.

  On this page, you'll find the node parameters for the AWS Bedrock Chat Model node, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/aws.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"
  	
  ## Node parameters

  * **Model**: Select the model that generates the completion.

  Learn more about available models in the [Amazon Bedrock model documentation](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html){:target=_blank .external-link}.

  ## Node options

  * **Maximum Number of Tokens**: Enter the maximum number of tokens used, which sets the completion length.
  * **Sampling Temperature**: Use this option to control the randomness of the sampling process. A higher temperature creates more diverse sampling, but increases the risk of hallucinations.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'aws-bedrock-chat-model') ]]

  ## Related resources

  Refer to [LangChains's AWS Bedrock Chat Model documentation](https://js.langchain.com/docs/integrations/chat/bedrock/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Model Source",
      "name": "modelSource",
      "type": "options",
      "default": "onDemand",
      "description": "Choose between on-demand foundation models or inference profiles",
      "options": [
        {
          "name": "On-Demand Models",
          "value": "onDemand",
          "description": "Standard foundation models with on-demand pricing"
        },
        {
          "name": "Inference Profiles",
          "value": "inferenceProfile",
          "description": "Cross-region inference profiles (required for models like Claude Sonnet 4 and others)"
        }
      ],
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "gte": 1.1
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "options",
      "default": "",
      "description": "The model which will generate the completion. <a href=\"https://docs.aws.amazon.com/bedrock/latest/userguide/foundation-models.html\">Learn more</a>.",
      "displayOptions": {
        "hide": {
          "modelSource": [
            "inferenceProfile"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsDependsOn": [
          "modelSource"
        ],
        "loadOptions": {
          "routing": {
            "request": {
              "method": "GET",
              "url": "/foundation-models?&byOutputModality=TEXT&byInferenceType=ON_DEMAND"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "modelSummaries"
                  }
                },
                {
                  "type": "setKeyValue",
                  "properties": {
                    "name": "={{$responseItem.modelName}}",
                    "description": "={{$responseItem.modelArn}}",
                    "value": "={{$responseItem.modelId}}"
                  }
                },
                {
                  "type": "sort",
                  "properties": {
                    "key": "name"
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "options",
      "default": "",
      "description": "The inference profile which will generate the completion. <a href=\"https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-use.html\">Learn more</a>.",
      "displayOptions": {
        "show": {
          "modelSource": [
            "inferenceProfile"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsDependsOn": [
          "modelSource"
        ],
        "loadOptions": {
          "routing": {
            "request": {
              "method": "GET",
              "url": "/inference-profiles?maxResults=1000"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "inferenceProfileSummaries"
                  }
                },
                {
                  "type": "setKeyValue",
                  "properties": {
                    "name": "={{$responseItem.inferenceProfileName}}",
                    "description": "={{$responseItem.description || $responseItem.inferenceProfileArn}}",
                    "value": "={{$responseItem.inferenceProfileId}}"
                  }
                },
                {
                  "type": "sort",
                  "properties": {
                    "key": "name"
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Maximum Number of Tokens",
          "name": "maxTokensToSample",
          "default": 2000,
          "description": "The maximum number of tokens to generate in the completion",
          "type": "number"
        },
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.7,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
          "type": "number"
        }
      ]
    }
  ]


node_type: nodes-langchain.lmChatCohere
package_name: @n8n/n8n-nodes-langchain
display_name: Cohere Chat Model
description: For advanced usage with an AI chain
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "cohereApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "options",
      "default": "command-a-03-2025",
      "description": "The model which will generate the completion. <a href=\"https://docs.cohere.com/docs/models\">Learn more</a>.",
      "typeOptions": {
        "loadOptions": {
          "routing": {
            "request": {
              "method": "GET",
              "url": "/v1/models?page_size=100&endpoint=chat"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "models"
                  }
                },
                {
                  "type": "setKeyValue",
                  "properties": {
                    "name": "={{$responseItem.name}}",
                    "value": "={{$responseItem.name}}",
                    "description": "={{$responseItem.description}}"
                  }
                },
                {
                  "type": "sort",
                  "properties": {
                    "key": "name"
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.7,
          "typeOptions": {
            "maxValue": 2,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
          "type": "number"
        },
        {
          "displayName": "Max Retries",
          "name": "maxRetries",
          "default": 2,
          "description": "Maximum number of retries to attempt",
          "type": "number"
        }
      ]
    }
  ]


node_type: nodes-langchain.lmChatDeepSeek
package_name: @n8n/n8n-nodes-langchain
display_name: DeepSeek Chat Model
description: For advanced usage with an AI chain
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "deepSeekApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: DeepSeek Chat Model node documentation
  description: Learn how to use the DeepSeek Chat Model node in n8n. Follow technical documentation to integrate DeepSeek Chat Model node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # DeepSeek Chat Model node

  Use the DeepSeek Chat Model node to use DeepSeek's chat models with conversational [agents](/glossary.md#ai-agent).

  On this page, you'll find the node parameters for the DeepSeek Chat Model node and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/deepseek.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  ### Model

  Select the model to use to generate the completion.

  n8n dynamically loads models from DeepSeek and you'll only see the models available to your account.

  ## Node options

  Use these options to further refine the node's behavior.

  ### Base URL

  Enter a URL here to override the default URL for the API.

  ### Frequency Penalty

  Use this option to control the chances of the model repeating itself. Higher values reduce the chance of the model repeating itself.

  ### Maximum Number of Tokens

  Enter the maximum number of tokens used, which sets the completion length.

  ### Response Format

  Choose **Text** or **JSON**. **JSON** ensures the model returns valid JSON.

  ### Presence Penalty

  Use this option to control the chances of the model talking about new topics. Higher values increase the chance of the model talking about new topics.

  ### Sampling Temperature

  Use this option to control the randomness of the sampling process. A higher temperature creates more diverse sampling, but increases the risk of hallucinations.

  ### Timeout

  Enter the maximum request time in milliseconds.

  ### Max Retries

  Enter the maximum number of times to retry a request.

  ### Top P

  Use this option to set the probability the completion should use. Use a lower value to ignore less probable options. 

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'deepseek-chat-model') ]]

  ## Related resources

  As DeepSeek is API-compatible with OpenAI, you can refer to [LangChains's OpenAI documentation](https://js.langchain.com/docs/integrations/chat/openai/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "If using JSON response format, you must include word \"json\" in the prompt in your chain or agent. Also, make sure to select latest models released post November 2023.",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "/options.responseFormat": [
            "json_object"
          ]
        }
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "options",
      "default": "deepseek-chat",
      "description": "The model which will generate the completion. <a href=\"https://api-docs.deepseek.com/quick_start/pricing\">Learn more</a>.",
      "typeOptions": {
        "loadOptions": {
          "routing": {
            "request": {
              "method": "GET",
              "url": "/models"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                },
                {
                  "type": "setKeyValue",
                  "properties": {
                    "name": "={{$responseItem.id}}",
                    "value": "={{$responseItem.id}}"
                  }
                },
                {
                  "type": "sort",
                  "properties": {
                    "key": "name"
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Frequency Penalty",
          "name": "frequencyPenalty",
          "default": 0,
          "typeOptions": {
            "maxValue": 2,
            "minValue": -2,
            "numberPrecision": 1
          },
          "description": "Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim",
          "type": "number"
        },
        {
          "displayName": "Maximum Number of Tokens",
          "name": "maxTokens",
          "default": -1,
          "description": "The maximum number of tokens to generate in the completion. Most models have a context length of 2048 tokens (except for the newest models, which support 32,768).",
          "type": "number",
          "typeOptions": {
            "maxValue": 32768
          }
        },
        {
          "displayName": "Response Format",
          "name": "responseFormat",
          "default": "text",
          "type": "options",
          "options": [
            {
              "name": "Text",
              "value": "text",
              "description": "Regular text response"
            },
            {
              "name": "JSON",
              "value": "json_object",
              "description": "Enables JSON mode, which should guarantee the message the model generates is valid JSON"
            }
          ]
        },
        {
          "displayName": "Presence Penalty",
          "name": "presencePenalty",
          "default": 0,
          "typeOptions": {
            "maxValue": 2,
            "minValue": -2,
            "numberPrecision": 1
          },
          "description": "Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics",
          "type": "number"
        },
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.7,
          "typeOptions": {
            "maxValue": 2,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
          "type": "number"
        },
        {
          "displayName": "Timeout",
          "name": "timeout",
          "default": 360000,
          "description": "Maximum amount of time a request is allowed to take in milliseconds",
          "type": "number"
        },
        {
          "displayName": "Max Retries",
          "name": "maxRetries",
          "default": 2,
          "description": "Maximum number of retries to attempt",
          "type": "number"
        },
        {
          "displayName": "Top P",
          "name": "topP",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.",
          "type": "number"
        }
      ]
    }
  ]


node_type: nodes-langchain.lmChatGoogleGemini
package_name: @n8n/n8n-nodes-langchain
display_name: Google Gemini Chat Model
description: Chat Model Google Gemini
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "googlePalmApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Google Gemini Chat Model node documentation
  description: Learn how to use the Google Gemini Chat Model node in n8n. Follow technical documentation to integrate Google Gemini Chat Model node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # Google Gemini Chat Model node

  Use the Google Gemini Chat Model node to use Google's Gemini chat models with conversational agents.

  On this page, you'll find the node parameters for the Google Gemini Chat Model node, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/googleai.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Model**: Select the model to use to generate the completion.

  n8n dynamically loads models from the Google Gemini API and you'll only see the models available to your account.

  ## Node options

  * **Maximum Number of Tokens**: Enter the maximum number of tokens used, which sets the completion length.
  * **Sampling Temperature**: Use this option to control the randomness of the sampling process. A higher temperature creates more diverse sampling, but increases the risk of hallucinations.
  * **Top K**: Enter the number of token choices the model uses to generate the next token.
  * **Top P**: Use this option to set the probability the completion should use. Use a lower value to ignore less probable options. 
  * **Safety Settings**: Gemini supports adjustable safety settings. Refer to Google's [Gemini API safety settings](https://ai.google.dev/docs/safety_setting_gemini){:target=_blank .external-link} for information on the available filters and levels.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'google-gemini-chat-model') ]]

  ## Related resources

  Refer to [LangChain's Google Gemini documentation](https://js.langchain.com/docs/integrations/chat/google_generativeai){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Model",
      "name": "modelName",
      "type": "options",
      "default": "models/gemini-2.5-flash",
      "description": "The model which will generate the completion. <a href=\"https://developers.generativeai.google/api/rest/generativelanguage/models/list\">Learn more</a>.",
      "typeOptions": {
        "loadOptions": {
          "routing": {
            "request": {
              "method": "GET",
              "url": "/v1beta/models"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "models"
                  }
                },
                {
                  "type": "filter",
                  "properties": {
                    "pass": "={{ !$responseItem.name.includes('embedding') }}"
                  }
                },
                {
                  "type": "setKeyValue",
                  "properties": {
                    "name": "={{$responseItem.name}}",
                    "value": "={{$responseItem.name}}",
                    "description": "={{$responseItem.description}}"
                  }
                },
                {
                  "type": "sort",
                  "properties": {
                    "key": "name"
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Maximum Number of Tokens",
          "name": "maxOutputTokens",
          "default": 2048,
          "description": "The maximum number of tokens to generate in the completion",
          "type": "number"
        },
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.4,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
          "type": "number"
        },
        {
          "displayName": "Top K",
          "name": "topK",
          "default": 32,
          "typeOptions": {
            "maxValue": 40,
            "minValue": -1,
            "numberPrecision": 1
          },
          "description": "Used to remove \"long tail\" low probability responses. Defaults to -1, which disables it.",
          "type": "number"
        },
        {
          "displayName": "Top P",
          "name": "topP",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.",
          "type": "number"
        },
        {
          "displayName": "Safety Settings",
          "name": "safetySettings",
          "type": "fixedCollection",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {
            "values": {
              "category": "HARM_CATEGORY_HARASSMENT",
              "threshold": "HARM_BLOCK_THRESHOLD_UNSPECIFIED"
            }
          },
          "placeholder": "Add Option",
          "options": [
            {
              "name": "values",
              "displayName": "Values",
              "values": [
                {
                  "displayName": "Safety Category",
                  "name": "category",
                  "type": "options",
                  "description": "The category of harmful content to block",
                  "default": "HARM_CATEGORY_UNSPECIFIED",
                  "options": [
                    {
                      "value": "HARM_CATEGORY_HARASSMENT",
                      "name": "HARM_CATEGORY_HARASSMENT",
                      "description": "Harassment content"
                    },
                    {
                      "value": "HARM_CATEGORY_HATE_SPEECH",
                      "name": "HARM_CATEGORY_HATE_SPEECH",
                      "description": "Hate speech and content"
                    },
                    {
                      "value": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
                      "name": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
                      "description": "Sexually explicit content"
                    },
                    {
                      "value": "HARM_CATEGORY_DANGEROUS_CONTENT",
                      "name": "HARM_CATEGORY_DANGEROUS_CONTENT",
                      "description": "Dangerous content"
                    }
                  ]
                },
                {
                  "displayName": "Safety Threshold",
                  "name": "threshold",
                  "type": "options",
                  "description": "The threshold of harmful content to block",
                  "default": "HARM_BLOCK_THRESHOLD_UNSPECIFIED",
                  "options": [
                    {
                      "value": "HARM_BLOCK_THRESHOLD_UNSPECIFIED",
                      "name": "HARM_BLOCK_THRESHOLD_UNSPECIFIED",
                      "description": "Threshold is unspecified"
                    },
                    {
                      "value": "BLOCK_LOW_AND_ABOVE",
                      "name": "BLOCK_LOW_AND_ABOVE",
                      "description": "Content with NEGLIGIBLE will be allowed"
                    },
                    {
                      "value": "BLOCK_MEDIUM_AND_ABOVE",
                      "name": "BLOCK_MEDIUM_AND_ABOVE",
                      "description": "Content with NEGLIGIBLE and LOW will be allowed"
                    },
                    {
                      "value": "BLOCK_ONLY_HIGH",
                      "name": "BLOCK_ONLY_HIGH",
                      "description": "Content with NEGLIGIBLE, LOW, and MEDIUM will be allowed"
                    },
                    {
                      "value": "BLOCK_NONE",
                      "name": "BLOCK_NONE",
                      "description": "All content will be allowed"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ]


node_type: nodes-langchain.lmChatGoogleVertex
package_name: @n8n/n8n-nodes-langchain
display_name: Google Vertex Chat Model
description: Chat Model Google Vertex
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "googleApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Google Vertex Chat Model node documentation
  description: Learn how to use the Google Vertex Chat Model node in n8n. Follow technical documentation to integrate Google Vertex Chat Model node into your workflows.
  contentType: [integration, reference]
  ---

  # Google Vertex Chat Model node

  Use the Google Vertex AI Chat Model node to use Google's Vertex AI chat models with conversational [agents](/glossary.md#ai-agent).

  On this page, you'll find the node parameters for the Google Vertex AI Chat Model node, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/google/service-account.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Project ID**: Select the project ID from your Google Cloud account to use. n8n dynamically loads projects from the Google Cloud account, but you can also enter it manually.
  * **Model Name**: Select the name of the model to use to generate the completion, for example `gemini-1.5-flash-001`, `gemini-1.5-pro-001`, etc. Refer to [Google models](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models){:target=_blank .external-link} for a list of available models.

  ## Node options

  * **Maximum Number of Tokens**: Enter the maximum number of tokens used, which sets the completion length.
  * **Sampling Temperature**: Use this option to control the randomness of the sampling process. A higher temperature creates more diverse sampling, but increases the risk of hallucinations.
  * **Top K**: Enter the number of token choices the model uses to generate the next token.
  * **Top P**: Use this option to set the probability the completion should use. Use a lower value to ignore less probable options. 
  * **Safety Settings**: Gemini supports adjustable safety settings. Refer to Google's [Gemini API safety settings](https://ai.google.dev/docs/safety_setting_gemini){:target=_blank .external-link} for information on the available filters and levels.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'google-vertex-chat-model') ]]

  ## Related resources


  Refer to [LangChain's Google Vertex AI documentation](https://js.langchain.com/docs/integrations/chat/google_vertex_ai/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Project ID",
      "name": "projectId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "Select or enter your Google Cloud project ID",
      "required": true,
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "typeOptions": {
            "searchListMethod": "gcpProjectsList"
          }
        },
        {
          "displayName": "ID",
          "name": "id",
          "type": "string"
        }
      ]
    },
    {
      "displayName": "Model Name",
      "name": "modelName",
      "type": "string",
      "default": "gemini-2.5-flash",
      "description": "The model which will generate the completion. <a href=\"https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models\">Learn more</a>."
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Maximum Number of Tokens",
          "name": "maxOutputTokens",
          "default": 2048,
          "description": "The maximum number of tokens to generate in the completion",
          "type": "number"
        },
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.4,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
          "type": "number"
        },
        {
          "displayName": "Top K",
          "name": "topK",
          "default": 32,
          "typeOptions": {
            "maxValue": 40,
            "minValue": -1,
            "numberPrecision": 1
          },
          "description": "Used to remove \"long tail\" low probability responses. Defaults to -1, which disables it.",
          "type": "number"
        },
        {
          "displayName": "Top P",
          "name": "topP",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.",
          "type": "number"
        },
        {
          "displayName": "Safety Settings",
          "name": "safetySettings",
          "type": "fixedCollection",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {
            "values": {
              "category": "HARM_CATEGORY_HARASSMENT",
              "threshold": "HARM_BLOCK_THRESHOLD_UNSPECIFIED"
            }
          },
          "placeholder": "Add Option",
          "options": [
            {
              "name": "values",
              "displayName": "Values",
              "values": [
                {
                  "displayName": "Safety Category",
                  "name": "category",
                  "type": "options",
                  "description": "The category of harmful content to block",
                  "default": "HARM_CATEGORY_UNSPECIFIED",
                  "options": [
                    {
                      "value": "HARM_CATEGORY_HARASSMENT",
                      "name": "HARM_CATEGORY_HARASSMENT",
                      "description": "Harassment content"
                    },
                    {
                      "value": "HARM_CATEGORY_HATE_SPEECH",
                      "name": "HARM_CATEGORY_HATE_SPEECH",
                      "description": "Hate speech and content"
                    },
                    {
                      "value": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
                      "name": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
                      "description": "Sexually explicit content"
                    },
                    {
                      "value": "HARM_CATEGORY_DANGEROUS_CONTENT",
                      "name": "HARM_CATEGORY_DANGEROUS_CONTENT",
                      "description": "Dangerous content"
                    }
                  ]
                },
                {
                  "displayName": "Safety Threshold",
                  "name": "threshold",
                  "type": "options",
                  "description": "The threshold of harmful content to block",
                  "default": "HARM_BLOCK_THRESHOLD_UNSPECIFIED",
                  "options": [
                    {
                      "value": "HARM_BLOCK_THRESHOLD_UNSPECIFIED",
                      "name": "HARM_BLOCK_THRESHOLD_UNSPECIFIED",
                      "description": "Threshold is unspecified"
                    },
                    {
                      "value": "BLOCK_LOW_AND_ABOVE",
                      "name": "BLOCK_LOW_AND_ABOVE",
                      "description": "Content with NEGLIGIBLE will be allowed"
                    },
                    {
                      "value": "BLOCK_MEDIUM_AND_ABOVE",
                      "name": "BLOCK_MEDIUM_AND_ABOVE",
                      "description": "Content with NEGLIGIBLE and LOW will be allowed"
                    },
                    {
                      "value": "BLOCK_ONLY_HIGH",
                      "name": "BLOCK_ONLY_HIGH",
                      "description": "Content with NEGLIGIBLE, LOW, and MEDIUM will be allowed"
                    },
                    {
                      "value": "BLOCK_NONE",
                      "name": "BLOCK_NONE",
                      "description": "All content will be allowed"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "displayName": "Thinking Budget",
          "name": "thinkingBudget",
          "description": "Controls reasoning tokens for thinking models. Set to 0 to disable automatic thinking. Set to -1 for dynamic thinking. Leave empty for auto mode.",
          "type": "number",
          "typeOptions": {
            "minValue": -1,
            "numberPrecision": 0
          }
        }
      ]
    }
  ]


node_type: nodes-langchain.lmChatGroq
package_name: @n8n/n8n-nodes-langchain
display_name: Groq Chat Model
description: Language Model Groq
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "groqApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Groq Chat Model node documentation
  description: Learn how to use the Groq Chat Model node in n8n. Follow technical documentation to integrate Groq Chat Model node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Groq Chat Model node

  Use the Groq Chat Model node to access Groq's large language models for conversational AI and text generation tasks.

  On this page, you'll find the node parameters for the Groq Chat Model node, and links to more resources.

  /// note | Credentials 
  You can find authentication information for this node [here](/integrations/builtin/credentials/groq.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Model**: Select the model which will generate the completion. n8n dynamically loads available models from the Groq API. Learn more in the [Groq model documentation](https://console.groq.com/docs/models){:target=_blank .external-link}.

  ## Node options

  * **Maximum Number of Tokens**: Enter the maximum number of tokens used, which sets the completion length.
  * **Sampling Temperature**: Use this option to control the randomness of the sampling process. A higher temperature creates more diverse sampling, but increases the risk of hallucinations.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'groq-chat-model') ]]

  ## Related resources

  Refer to [Groq's API documentation](https://console.groq.com/docs/quickstart){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "options",
      "default": "llama3-8b-8192",
      "description": "The model which will generate the completion. <a href=\"https://console.groq.com/docs/models\">Learn more</a>.",
      "typeOptions": {
        "loadOptions": {
          "routing": {
            "request": {
              "method": "GET",
              "url": "/models"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                },
                {
                  "type": "filter",
                  "properties": {
                    "pass": "={{ $responseItem.active === true && $responseItem.object === \"model\" }}"
                  }
                },
                {
                  "type": "setKeyValue",
                  "properties": {
                    "name": "={{$responseItem.id}}",
                    "value": "={{$responseItem.id}}"
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Maximum Number of Tokens",
          "name": "maxTokensToSample",
          "default": 4096,
          "description": "The maximum number of tokens to generate in the completion",
          "type": "number"
        },
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.7,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
          "type": "number"
        }
      ]
    }
  ]


node_type: nodes-langchain.lmChatMistralCloud
package_name: @n8n/n8n-nodes-langchain
display_name: Mistral Cloud Chat Model
description: For advanced usage with an AI chain
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "mistralCloudApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Mistral Cloud Chat Model node documentation
  description: Learn how to use the Mistral Cloud Chat Model node in n8n. Follow technical documentation to integrate Mistral Cloud Chat Model node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Mistral Cloud Chat Model node

  Use the Mistral Cloud Chat Model node to combine Mistral Cloud's chat models with conversational [agents](/glossary.md#ai-agent).

  On this page, you'll find the node parameters for the Mistral Cloud Chat Model node, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/mistral.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Model**: Select the model to use to generate the completion. n8n dynamically loads models from Mistral Cloud and you'll only see the models available to your account.

  ## Node options

  * **Maximum Number of Tokens**: Enter the maximum number of tokens used, which sets the completion length.
  * **Sampling Temperature**: Use this option to control the randomness of the sampling process. A higher temperature creates more diverse sampling, but increases the risk of hallucinations.
  * **Timeout**: Enter the maximum request time in milliseconds.
  * **Max Retries**: Enter the maximum number of times to retry a request.
  * **Top P**: Use this option to set the probability the completion should use. Use a lower value to ignore less probable options. 
  * **Enable Safe Mode**: Enable safe mode by injecting a safety prompt at the beginning of the completion. This helps prevent the model from generating offensive content.
  * **Random Seed**: Enter a seed to use for random sampling. If set, different calls will generate deterministic results.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'mistral-cloud-chat-model') ]]

  ## Related resources

  Refer to [LangChains's Mistral documentation](https://js.langchain.com/docs/integrations/chat/mistral){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "options",
      "default": "mistral-small",
      "description": "The model which will generate the completion. <a href=\"https://docs.mistral.ai/platform/endpoints/\">Learn more</a>.",
      "typeOptions": {
        "loadOptions": {
          "routing": {
            "request": {
              "method": "GET",
              "url": "/models"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                },
                {
                  "type": "filter",
                  "properties": {
                    "pass": "={{ !$responseItem.id.includes('embed') }}"
                  }
                },
                {
                  "type": "setKeyValue",
                  "properties": {
                    "name": "={{ $responseItem.id }}",
                    "value": "={{ $responseItem.id }}"
                  }
                },
                {
                  "type": "sort",
                  "properties": {
                    "key": "name"
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Maximum Number of Tokens",
          "name": "maxTokens",
          "default": -1,
          "description": "The maximum number of tokens to generate in the completion. Most models have a context length of 2048 tokens (except for the newest models, which support 32,768).",
          "type": "number",
          "typeOptions": {
            "maxValue": 32768
          }
        },
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.7,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
          "type": "number"
        },
        {
          "displayName": "Max Retries",
          "name": "maxRetries",
          "default": 2,
          "description": "Maximum number of retries to attempt",
          "type": "number"
        },
        {
          "displayName": "Top P",
          "name": "topP",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.",
          "type": "number"
        },
        {
          "displayName": "Enable Safe Mode",
          "name": "safeMode",
          "default": false,
          "type": "boolean",
          "description": "Whether to inject a safety prompt before all conversations"
        },
        {
          "displayName": "Random Seed",
          "name": "randomSeed",
          "type": "number",
          "description": "The seed to use for random sampling. If set, different calls will generate deterministic results."
        }
      ]
    }
  ]


node_type: nodes-langchain.lmChatLemonade
package_name: @n8n/n8n-nodes-langchain
display_name: Lemonade Chat Model
description: Language Model Lemonade Chat
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "lemonadeApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "options",
      "default": "",
      "description": "The model which will generate the completion. Models are loaded and managed through the Lemonade server.",
      "required": true,
      "typeOptions": {
        "loadOptions": {
          "routing": {
            "request": {
              "method": "GET",
              "url": "/models"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                },
                {
                  "type": "setKeyValue",
                  "properties": {
                    "name": "={{$responseItem.id}}",
                    "value": "={{$responseItem.id}}"
                  }
                },
                {
                  "type": "sort",
                  "properties": {
                    "key": "name"
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.7,
          "typeOptions": {
            "maxValue": 2,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls the randomness of the generated text. Lower values make the output more focused and deterministic, while higher values make it more diverse and random.",
          "type": "number"
        },
        {
          "displayName": "Top P",
          "name": "topP",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Chooses from the smallest possible set of tokens whose cumulative probability exceeds the probability top_p. Helps generate more human-like text by reducing repetitions.",
          "type": "number"
        },
        {
          "displayName": "Frequency Penalty",
          "name": "frequencyPenalty",
          "type": "number",
          "default": 0,
          "typeOptions": {
            "minValue": -2,
            "maxValue": 2,
            "numberPrecision": 1
          },
          "description": "Adjusts the penalty for tokens that have already appeared in the generated text. Positive values discourage repetition, negative values encourage it."
        },
        {
          "displayName": "Presence Penalty",
          "name": "presencePenalty",
          "type": "number",
          "default": 0,
          "typeOptions": {
            "minValue": -2,
            "maxValue": 2,
            "numberPrecision": 1
          },
          "description": "Adjusts the penalty for tokens based on their presence in the generated text so far. Positive values penalize tokens that have already appeared, encouraging diversity."
        },
        {
          "displayName": "Max Tokens to Generate",
          "name": "maxTokens",
          "type": "number",
          "default": -1,
          "description": "The maximum number of tokens to generate. Set to -1 for no limit. Be cautious when setting this to a large value, as it can lead to very long outputs."
        },
        {
          "displayName": "Stop Sequences",
          "name": "stop",
          "type": "string",
          "default": "",
          "description": "Comma-separated list of sequences where the model will stop generating text"
        }
      ]
    }
  ]


node_type: nodes-langchain.lmChatOllama
package_name: @n8n/n8n-nodes-langchain
display_name: Ollama Chat Model
description: Language Model Ollama
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "ollamaApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Ollama Chat Model node documentation
  description: Learn how to use the Ollama Chat Model node in n8n. Follow technical documentation to integrate Ollama Chat Model node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # Ollama Chat Model node

  The Ollama Chat Model node allows you use local Llama 2 models with conversational [agents](/glossary.md#ai-agent).

  On this page, you'll find the node parameters for the Ollama Chat Model node, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/ollama.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Model**: Select the model that generates the completion. Choose from:
  	* **Llama2**
  	* **Llama2 13B**
  	* **Llama2 70B**
  	* **Llama2 Uncensored**

  Refer to the Ollama [Models Library documentation](https://ollama.com/library){:target=_blank .external-link} for more information about available models.

  ## Node options

  * **Sampling Temperature**: Use this option to control the randomness of the sampling process. A higher temperature creates more diverse sampling, but increases the risk of hallucinations.
  * **Top K**: Enter the number of token choices the model uses to generate the next token.
  * **Top P**: Use this option to set the probability the completion should use. Use a lower value to ignore less probable options. 

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'ollama-chat-model') ]]

  ## Related resources

  Refer to [LangChains's Ollama Chat Model documentation](https://js.langchain.com/docs/integrations/chat/ollama/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  ## Common issues

  For common questions or issues and suggested solutions, refer to [Common issues](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatollama/common-issues.md).

  --8<-- "_glossary/ai-glossary.md"

  --8<-- "_snippets/self-hosting/starter-kits/self-hosted-ai-starter-kit.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "options",
      "default": "llama3.2",
      "description": "The model which will generate the completion. To download models, visit <a href=\"https://ollama.ai/library\">Ollama Models Library</a>.",
      "required": true,
      "typeOptions": {
        "loadOptions": {
          "routing": {
            "request": {
              "method": "GET",
              "url": "/api/tags"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "models"
                  }
                },
                {
                  "type": "setKeyValue",
                  "properties": {
                    "name": "={{$responseItem.name}}",
                    "value": "={{$responseItem.name}}"
                  }
                },
                {
                  "type": "sort",
                  "properties": {
                    "key": "name"
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.7,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls the randomness of the generated text. Lower values make the output more focused and deterministic, while higher values make it more diverse and random.",
          "type": "number"
        },
        {
          "displayName": "Top K",
          "name": "topK",
          "default": -1,
          "typeOptions": {
            "maxValue": 100,
            "minValue": -1,
            "numberPrecision": 1
          },
          "description": "Limits the number of highest probability vocabulary tokens to consider at each step. A higher value increases diversity but may reduce coherence. Set to -1 to disable.",
          "type": "number"
        },
        {
          "displayName": "Top P",
          "name": "topP",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Chooses from the smallest possible set of tokens whose cumulative probability exceeds the probability top_p. Helps generate more human-like text by reducing repetitions.",
          "type": "number"
        },
        {
          "displayName": "Frequency Penalty",
          "name": "frequencyPenalty",
          "type": "number",
          "default": 0,
          "typeOptions": {
            "minValue": 0
          },
          "description": "Adjusts the penalty for tokens that have already appeared in the generated text. Higher values discourage repetition."
        },
        {
          "displayName": "Keep Alive",
          "name": "keepAlive",
          "type": "string",
          "default": "5m",
          "description": "Specifies the duration to keep the loaded model in memory after use. Useful for frequently used models. Format: 1h30m (1 hour 30 minutes)."
        },
        {
          "displayName": "Low VRAM Mode",
          "name": "lowVram",
          "type": "boolean",
          "default": false,
          "description": "Whether to Activate low VRAM mode, which reduces memory usage at the cost of slower generation speed. Useful for GPUs with limited memory."
        },
        {
          "displayName": "Main GPU ID",
          "name": "mainGpu",
          "type": "number",
          "default": 0,
          "description": "Specifies the ID of the GPU to use for the main computation. Only change this if you have multiple GPUs."
        },
        {
          "displayName": "Context Batch Size",
          "name": "numBatch",
          "type": "number",
          "default": 512,
          "description": "Sets the batch size for prompt processing. Larger batch sizes may improve generation speed but increase memory usage."
        },
        {
          "displayName": "Context Length",
          "name": "numCtx",
          "type": "number",
          "default": 2048,
          "description": "The maximum number of tokens to use as context for generating the next token. Smaller values reduce memory usage, while larger values provide more context to the model."
        },
        {
          "displayName": "Number of GPUs",
          "name": "numGpu",
          "type": "number",
          "default": -1,
          "description": "Specifies the number of GPUs to use for parallel processing. Set to -1 for auto-detection."
        },
        {
          "displayName": "Max Tokens to Generate",
          "name": "numPredict",
          "type": "number",
          "default": -1,
          "description": "The maximum number of tokens to generate. Set to -1 for no limit. Be cautious when setting this to a large value, as it can lead to very long outputs."
        },
        {
          "displayName": "Number of CPU Threads",
          "name": "numThread",
          "type": "number",
          "default": 0,
          "description": "Specifies the number of CPU threads to use for processing. Set to 0 for auto-detection."
        },
        {
          "displayName": "Penalize Newlines",
          "name": "penalizeNewline",
          "type": "boolean",
          "default": true,
          "description": "Whether the model will be less likely to generate newline characters, encouraging longer continuous sequences of text"
        },
        {
          "displayName": "Presence Penalty",
          "name": "presencePenalty",
          "type": "number",
          "default": 0,
          "description": "Adjusts the penalty for tokens based on their presence in the generated text so far. Positive values penalize tokens that have already appeared, encouraging diversity."
        },
        {
          "displayName": "Repetition Penalty",
          "name": "repeatPenalty",
          "type": "number",
          "default": 1,
          "description": "Adjusts the penalty factor for repeated tokens. Higher values more strongly discourage repetition. Set to 1.0 to disable repetition penalty."
        },
        {
          "displayName": "Use Memory Locking",
          "name": "useMLock",
          "type": "boolean",
          "default": false,
          "description": "Whether to lock the model in memory to prevent swapping. This can improve performance but requires sufficient available memory."
        },
        {
          "displayName": "Use Memory Mapping",
          "name": "useMMap",
          "type": "boolean",
          "default": true,
          "description": "Whether to use memory mapping for loading the model. This can reduce memory usage but may impact performance. Recommended to keep enabled."
        },
        {
          "displayName": "Load Vocabulary Only",
          "name": "vocabOnly",
          "type": "boolean",
          "default": false,
          "description": "Whether to only load the model vocabulary without the weights. Useful for quickly testing tokenization."
        },
        {
          "displayName": "Output Format",
          "name": "format",
          "type": "options",
          "options": [
            {
              "name": "Default",
              "value": "default"
            },
            {
              "name": "JSON",
              "value": "json"
            }
          ],
          "default": "default",
          "description": "Specifies the format of the API response"
        }
      ]
    }
  ]


node_type: nodes-langchain.lmChatOpenRouter
package_name: @n8n/n8n-nodes-langchain
display_name: OpenRouter Chat Model
description: For advanced usage with an AI chain
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "openRouterApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: OpenRouter Chat Model node documentation
  description: Learn how to use the OpenRouter Chat Model node in n8n. Follow technical documentation to integrate OpenRouter Chat Model node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # OpenRouter Chat Model node

  Use the OpenRouter Chat Model node to use OpenRouter's chat models with conversational agents.

  On this page, you'll find the node parameters for the OpenRouter Chat Model node and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/openrouter.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  ### Model

  Select the model to use to generate the completion.

  n8n dynamically loads models from OpenRouter and you'll only see the models available to your account.

  ## Node options

  Use these options to further refine the node's behavior.

  ### Frequency Penalty

  Use this option to control the chances of the model repeating itself. Higher values reduce the chance of the model repeating itself.

  ### Maximum Number of Tokens

  Enter the maximum number of tokens used, which sets the completion length.

  ### Response Format

  Choose **Text** or **JSON**. **JSON** ensures the model returns valid JSON.

  ### Presence Penalty

  Use this option to control the chances of the model talking about new topics. Higher values increase the chance of the model talking about new topics.

  ### Sampling Temperature

  Use this option to control the randomness of the sampling process. A higher temperature creates more diverse sampling, but increases the risk of hallucinations.

  ### Timeout

  Enter the maximum request time in milliseconds.

  ### Max Retries

  Enter the maximum number of times to retry a request.

  ### Top P

  Use this option to set the probability the completion should use. Use a lower value to ignore less probable options. 

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'openrouter-chat-model') ]]

  ## Related resources

  As OpenRouter is API-compatible with OpenAI, you can refer to [LangChains's OpenAI documentation](https://js.langchain.com/docs/integrations/chat/openai/) for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "If using JSON response format, you must include word \"json\" in the prompt in your chain or agent. Also, make sure to select latest models released post November 2023.",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "/options.responseFormat": [
            "json_object"
          ]
        }
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "options",
      "default": "openai/gpt-4.1-mini",
      "description": "The model which will generate the completion. <a href=\"https://openrouter.ai/docs/models\">Learn more</a>.",
      "typeOptions": {
        "loadOptions": {
          "routing": {
            "request": {
              "method": "GET",
              "url": "/models"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                },
                {
                  "type": "setKeyValue",
                  "properties": {
                    "name": "={{$responseItem.id}}",
                    "value": "={{$responseItem.id}}"
                  }
                },
                {
                  "type": "sort",
                  "properties": {
                    "key": "name"
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Frequency Penalty",
          "name": "frequencyPenalty",
          "default": 0,
          "typeOptions": {
            "maxValue": 2,
            "minValue": -2,
            "numberPrecision": 1
          },
          "description": "Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim",
          "type": "number"
        },
        {
          "displayName": "Maximum Number of Tokens",
          "name": "maxTokens",
          "default": -1,
          "description": "The maximum number of tokens to generate in the completion. Most models have a context length of 2048 tokens (except for the newest models, which support 32,768).",
          "type": "number",
          "typeOptions": {
            "maxValue": 32768
          }
        },
        {
          "displayName": "Response Format",
          "name": "responseFormat",
          "default": "text",
          "type": "options",
          "options": [
            {
              "name": "Text",
              "value": "text",
              "description": "Regular text response"
            },
            {
              "name": "JSON",
              "value": "json_object",
              "description": "Enables JSON mode, which should guarantee the message the model generates is valid JSON"
            }
          ]
        },
        {
          "displayName": "Presence Penalty",
          "name": "presencePenalty",
          "default": 0,
          "typeOptions": {
            "maxValue": 2,
            "minValue": -2,
            "numberPrecision": 1
          },
          "description": "Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics",
          "type": "number"
        },
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.7,
          "typeOptions": {
            "maxValue": 2,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
          "type": "number"
        },
        {
          "displayName": "Timeout",
          "name": "timeout",
          "default": 360000,
          "description": "Maximum amount of time a request is allowed to take in milliseconds",
          "type": "number"
        },
        {
          "displayName": "Max Retries",
          "name": "maxRetries",
          "default": 2,
          "description": "Maximum number of retries to attempt",
          "type": "number"
        },
        {
          "displayName": "Top P",
          "name": "topP",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.",
          "type": "number"
        }
      ]
    }
  ]


node_type: nodes-langchain.lmChatVercelAiGateway
package_name: @n8n/n8n-nodes-langchain
display_name: Vercel AI Gateway Chat Model
description: For advanced usage with an AI chain via Vercel AI Gateway
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "vercelAiGatewayApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "If using JSON response format, you must include word \"json\" in the prompt in your chain or agent. Also, make sure to select latest models released post November 2023.",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "/options.responseFormat": [
            "json_object"
          ]
        }
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "options",
      "default": "openai/gpt-4o",
      "description": "The model which will generate the completion",
      "typeOptions": {
        "loadOptions": {
          "routing": {
            "request": {
              "method": "GET",
              "url": "/models"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                },
                {
                  "type": "setKeyValue",
                  "properties": {
                    "name": "={{$responseItem.id}}",
                    "value": "={{$responseItem.id}}"
                  }
                },
                {
                  "type": "sort",
                  "properties": {
                    "key": "name"
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Frequency Penalty",
          "name": "frequencyPenalty",
          "default": 0,
          "typeOptions": {
            "maxValue": 2,
            "minValue": -2,
            "numberPrecision": 1
          },
          "description": "Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim",
          "type": "number"
        },
        {
          "displayName": "Maximum Number of Tokens",
          "name": "maxTokens",
          "default": -1,
          "description": "The maximum number of tokens to generate in the completion. Most models have a context length of 2048 tokens (except for the newest models, which support 32,768).",
          "type": "number",
          "typeOptions": {
            "maxValue": 32768
          }
        },
        {
          "displayName": "Response Format",
          "name": "responseFormat",
          "default": "text",
          "type": "options",
          "options": [
            {
              "name": "Text",
              "value": "text",
              "description": "Regular text response"
            },
            {
              "name": "JSON",
              "value": "json_object",
              "description": "Enables JSON mode, which should guarantee the message the model generates is valid JSON"
            }
          ]
        },
        {
          "displayName": "Presence Penalty",
          "name": "presencePenalty",
          "default": 0,
          "typeOptions": {
            "maxValue": 2,
            "minValue": -2,
            "numberPrecision": 1
          },
          "description": "Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics",
          "type": "number"
        },
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.7,
          "typeOptions": {
            "maxValue": 2,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
          "type": "number"
        },
        {
          "displayName": "Timeout",
          "name": "timeout",
          "default": 360000,
          "description": "Maximum amount of time a request is allowed to take in milliseconds",
          "type": "number"
        },
        {
          "displayName": "Max Retries",
          "name": "maxRetries",
          "default": 2,
          "description": "Maximum number of retries to attempt",
          "type": "number"
        },
        {
          "displayName": "Top P",
          "name": "topP",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.",
          "type": "number"
        }
      ]
    }
  ]


node_type: nodes-langchain.lmChatXAiGrok
package_name: @n8n/n8n-nodes-langchain
display_name: xAI Grok Chat Model
description: For advanced usage with an AI chain
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "xAiApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: xAI Grok Chat Model node documentation
  description: Learn how to use the xAI Grok Chat Model node in n8n. Follow technical documentation to integrate xAI Grok Chat Model node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # xAI Grok Chat Model node

  Use the xAI Grok Chat Model node to access xAI Grok's large language models for conversational AI and text generation tasks.

  On this page, you'll find the node parameters for the xAI Grok Chat Model node, and links to more resources.

  /// note | Credentials 
  You can find authentication information for this node [here](/integrations/builtin/credentials/xai.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Model**: Select the model which will generate the completion. n8n dynamically loads available models from the xAI Grok API. Learn more in the [xAI Grok model documentation](https://docs.x.ai/docs/models).

  ## Node options

  * **Frequency Penalty**: Use this option to control the chances of the model repeating itself. Higher values reduce the chance of the model repeating itself.
  * **Maximum Number of Tokens**: Enter the maximum number of tokens used, which sets the completion length. Most models have a context length of 2048 tokens with the newest models supporting up to 32,768 tokens. 
  * **Response Format**: Choose **Text** or **JSON**. **JSON** ensures the model returns valid JSON.
  * **Presence Penalty**: Use this option to control the chances of the model talking about new topics. Higher values increase the chance of the model talking about new topics.
  * **Sampling Temperature**: Use this option to control the randomness of the sampling process. A higher temperature creates more diverse sampling, but increases the risk of hallucinations.
  * **Timeout**: Enter the maximum request time in milliseconds.
  * **Max Retries**: Enter the maximum number of times to retry a request.
  * **Top P**: Use this option to set the probability the completion should use. Use a lower value to ignore less probable options. 

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'xai-grok-chat-model') ]]

  ## Related resources

  Refer to [xAI Grok's API documentation](https://docs.x.ai/docs/api-reference) for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "If using JSON response format, you must include word \"json\" in the prompt in your chain or agent. Also, make sure to select latest models released post November 2023.",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "/options.responseFormat": [
            "json_object"
          ]
        }
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "options",
      "default": "grok-2-vision-1212",
      "description": "The model which will generate the completion. <a href=\"https://docs.x.ai/docs/models\">Learn more</a>.",
      "typeOptions": {
        "loadOptions": {
          "routing": {
            "request": {
              "method": "GET",
              "url": "/models"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                },
                {
                  "type": "setKeyValue",
                  "properties": {
                    "name": "={{$responseItem.id}}",
                    "value": "={{$responseItem.id}}"
                  }
                },
                {
                  "type": "sort",
                  "properties": {
                    "key": "name"
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Frequency Penalty",
          "name": "frequencyPenalty",
          "default": 0,
          "typeOptions": {
            "maxValue": 2,
            "minValue": -2,
            "numberPrecision": 1
          },
          "description": "Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim",
          "type": "number"
        },
        {
          "displayName": "Maximum Number of Tokens",
          "name": "maxTokens",
          "default": -1,
          "description": "The maximum number of tokens to generate in the completion. Most models have a context length of 2048 tokens (except for the newest models, which support 32,768).",
          "type": "number",
          "typeOptions": {
            "maxValue": 32768
          }
        },
        {
          "displayName": "Response Format",
          "name": "responseFormat",
          "default": "text",
          "type": "options",
          "options": [
            {
              "name": "Text",
              "value": "text",
              "description": "Regular text response"
            },
            {
              "name": "JSON",
              "value": "json_object",
              "description": "Enables JSON mode, which should guarantee the message the model generates is valid JSON"
            }
          ]
        },
        {
          "displayName": "Presence Penalty",
          "name": "presencePenalty",
          "default": 0,
          "typeOptions": {
            "maxValue": 2,
            "minValue": -2,
            "numberPrecision": 1
          },
          "description": "Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics",
          "type": "number"
        },
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.7,
          "typeOptions": {
            "maxValue": 2,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
          "type": "number"
        },
        {
          "displayName": "Timeout",
          "name": "timeout",
          "default": 360000,
          "description": "Maximum amount of time a request is allowed to take in milliseconds",
          "type": "number"
        },
        {
          "displayName": "Max Retries",
          "name": "maxRetries",
          "default": 2,
          "description": "Maximum number of retries to attempt",
          "type": "number"
        },
        {
          "displayName": "Top P",
          "name": "topP",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.",
          "type": "number"
        }
      ]
    }
  ]


node_type: nodes-langchain.lmChatOpenAi
package_name: @n8n/n8n-nodes-langchain
display_name: OpenAI Chat Model
description: For advanced usage with an AI chain
category: transform
development_style: programmatic
version: 1.2
operations: []
credentials_required:
  [
  {
  "name": "openAiApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: OpenAI Chat Model node documentation
  description: Learn how to use the OpenAI Chat Model node in n8n. Follow technical documentation to integrate OpenAI Chat Model node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # OpenAI Chat Model node

  Use the OpenAI Chat Model node to use OpenAI's chat models with conversational [agents](/glossary.md#ai-agent).

  On this page, you'll find the node parameters for the OpenAI Chat Model node and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/openai.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  ### Model

  Select the model to use to generate the completion.

  n8n dynamically loads models from OpenAI and you'll only see the models available to your account.

  ## Node options

  Use these options to further refine the node's behavior.

  ### Base URL

  Enter a URL here to override the default URL for the API.

  ### Frequency Penalty

  Use this option to control the chances of the model repeating itself. Higher values reduce the chance of the model repeating itself.

  ### Maximum Number of Tokens

  Enter the maximum number of tokens used, which sets the completion length.

  ### Response Format

  Choose **Text** or **JSON**. **JSON** ensures the model returns valid JSON.

  ### Presence Penalty

  Use this option to control the chances of the model talking about new topics. Higher values increase the chance of the model talking about new topics.

  ### Sampling Temperature

  Use this option to control the randomness of the sampling process. A higher temperature creates more diverse sampling, but increases the risk of hallucinations.

  ### Timeout

  Enter the maximum request time in milliseconds.

  ### Max Retries

  Enter the maximum number of times to retry a request.

  ### Top P

  Use this option to set the probability the completion should use. Use a lower value to ignore less probable options. 

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'openai-chat-model') ]]

  ## Related resources

  Refer to [LangChains's OpenAI documentation](https://js.langchain.com/docs/integrations/chat/openai/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  ## Common issues

  For common questions or issues and suggested solutions, refer to [Common issues](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/common-issues.md).

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "If using JSON response format, you must include word \"json\" in the prompt in your chain or agent. Also, make sure to select latest models released post November 2023.",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "/options.responseFormat": [
            "json_object"
          ]
        }
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "options",
      "default": "gpt-4o-mini",
      "description": "The model which will generate the completion. <a href=\"https://beta.openai.com/docs/models/overview\">Learn more</a>.",
      "displayOptions": {
        "hide": {
          "@version": [
            {
              "_cnd": {
                "gte": 1.2
              }
            }
          ]
        }
      },
      "typeOptions": {
        "loadOptions": {
          "routing": {
            "request": {
              "method": "GET",
              "url": "={{ $parameter.options?.baseURL?.split(\"/\").slice(-1).pop() || $credentials?.url?.split(\"/\").slice(-1).pop() || \"v1\" }}/models"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                },
                {
                  "type": "filter",
                  "properties": {
                    "pass": "={{\n\t\t\t\t\t\t\t\t\t\t\t\t($parameter.options?.baseURL && !$parameter.options?.baseURL?.startsWith('https://api.openai.com/')) ||\n\t\t\t\t\t\t\t\t\t\t\t\t($credentials?.url && !$credentials.url.startsWith('https://api.openai.com/')) ||\n\t\t\t\t\t\t\t\t\t\t\t\t$responseItem.id.startsWith('ft:') ||\n\t\t\t\t\t\t\t\t\t\t\t\t$responseItem.id.startsWith('o1') ||\n\t\t\t\t\t\t\t\t\t\t\t\t$responseItem.id.startsWith('o3') ||\n\t\t\t\t\t\t\t\t\t\t\t\t($responseItem.id.startsWith('gpt-') && !$responseItem.id.includes('instruct'))\n\t\t\t\t\t\t\t\t\t\t\t}}"
                  }
                },
                {
                  "type": "setKeyValue",
                  "properties": {
                    "name": "={{$responseItem.id}}",
                    "value": "={{$responseItem.id}}"
                  }
                },
                {
                  "type": "sort",
                  "properties": {
                    "key": "name"
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": "gpt-4.1-mini"
      },
      "description": "The model. Choose from the list, or specify an ID.",
      "required": true,
      "displayOptions": {
        "hide": {
          "@version": [
            {
              "_cnd": {
                "lte": 1.1
              }
            }
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a model...",
          "typeOptions": {
            "searchListMethod": "searchModels",
            "searchable": true
          }
        },
        {
          "displayName": "ID",
          "name": "id",
          "type": "string",
          "placeholder": "gpt-4.1-mini"
        }
      ]
    },
    {
      "displayName": "When using non-OpenAI models via \"Base URL\" override, not all models might be chat-compatible or support other features, like tools calling or JSON response format",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "/options.baseURL": [
            {
              "_cnd": {
                "exists": true
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Base URL",
          "name": "baseURL",
          "default": "https://api.openai.com/v1",
          "description": "Override the default base URL for the API",
          "type": "string",
          "displayOptions": {
            "hide": {
              "@version": [
                {
                  "_cnd": {
                    "gte": 1.1
                  }
                }
              ]
            }
          }
        },
        {
          "displayName": "Frequency Penalty",
          "name": "frequencyPenalty",
          "default": 0,
          "typeOptions": {
            "maxValue": 2,
            "minValue": -2,
            "numberPrecision": 1
          },
          "description": "Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim",
          "type": "number"
        },
        {
          "displayName": "Maximum Number of Tokens",
          "name": "maxTokens",
          "default": -1,
          "description": "The maximum number of tokens to generate in the completion. Most models have a context length of 2048 tokens (except for the newest models, which support 32,768).",
          "type": "number",
          "typeOptions": {
            "maxValue": 32768
          }
        },
        {
          "displayName": "Response Format",
          "name": "responseFormat",
          "default": "text",
          "type": "options",
          "options": [
            {
              "name": "Text",
              "value": "text",
              "description": "Regular text response"
            },
            {
              "name": "JSON",
              "value": "json_object",
              "description": "Enables JSON mode, which should guarantee the message the model generates is valid JSON"
            }
          ]
        },
        {
          "displayName": "Presence Penalty",
          "name": "presencePenalty",
          "default": 0,
          "typeOptions": {
            "maxValue": 2,
            "minValue": -2,
            "numberPrecision": 1
          },
          "description": "Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics",
          "type": "number"
        },
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.7,
          "typeOptions": {
            "maxValue": 2,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
          "type": "number"
        },
        {
          "displayName": "Reasoning Effort",
          "name": "reasoningEffort",
          "default": "medium",
          "description": "Controls the amount of reasoning tokens to use. A value of \"low\" will favor speed and economical token usage, \"high\" will favor more complete reasoning at the cost of more tokens generated and slower responses.",
          "type": "options",
          "options": [
            {
              "name": "Low",
              "value": "low",
              "description": "Favors speed and economical token usage"
            },
            {
              "name": "Medium",
              "value": "medium",
              "description": "Balance between speed and reasoning accuracy"
            },
            {
              "name": "High",
              "value": "high",
              "description": "Favors more complete reasoning at the cost of more tokens generated and slower responses"
            }
          ],
          "displayOptions": {
            "show": {
              "/model": [
                {
                  "_cnd": {
                    "regex": "(^o1([-\\d]+)?$)|(^o[3-9].*)|(^gpt-5.*)"
                  }
                }
              ]
            }
          }
        },
        {
          "displayName": "Timeout",
          "name": "timeout",
          "default": 60000,
          "description": "Maximum amount of time a request is allowed to take in milliseconds",
          "type": "number"
        },
        {
          "displayName": "Max Retries",
          "name": "maxRetries",
          "default": 2,
          "description": "Maximum number of retries to attempt",
          "type": "number"
        },
        {
          "displayName": "Top P",
          "name": "topP",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.",
          "type": "number"
        }
      ]
    }
  ]


node_type: nodes-langchain.lmOpenAi
package_name: @n8n/n8n-nodes-langchain
display_name: OpenAI Model
description: For advanced usage with an AI chain
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "openAiApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
properties_schema:
  [
    {
      "displayName": "This node is using OpenAI completions which are now deprecated. Please use the OpenAI Chat Model node instead.",
      "name": "deprecated",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": "gpt-3.5-turbo-instruct"
      },
      "description": "The model which will generate the completion. <a href=\"https://beta.openai.com/docs/models/overview\">Learn more</a>.",
      "required": true,
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "typeOptions": {
            "searchListMethod": "openAiModelSearch"
          }
        },
        {
          "displayName": "ID",
          "name": "id",
          "type": "string"
        }
      ]
    },
    {
      "displayName": "When using non OpenAI models via Base URL override, not all models might be chat-compatible or support other features, like tools calling or JSON response format.",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "/options.baseURL": [
            {
              "_cnd": {
                "exists": true
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Base URL",
          "name": "baseURL",
          "default": "https://api.openai.com/v1",
          "description": "Override the default base URL for the API",
          "type": "string"
        },
        {
          "displayName": "Frequency Penalty",
          "name": "frequencyPenalty",
          "default": 0,
          "typeOptions": {
            "maxValue": 2,
            "minValue": -2,
            "numberPrecision": 1
          },
          "description": "Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim",
          "type": "number"
        },
        {
          "displayName": "Maximum Number of Tokens",
          "name": "maxTokens",
          "default": -1,
          "description": "The maximum number of tokens to generate in the completion. Most models have a context length of 2048 tokens (except for the newest models, which support 32,768).",
          "type": "number",
          "typeOptions": {
            "maxValue": 32768
          }
        },
        {
          "displayName": "Presence Penalty",
          "name": "presencePenalty",
          "default": 0,
          "typeOptions": {
            "maxValue": 2,
            "minValue": -2,
            "numberPrecision": 1
          },
          "description": "Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics",
          "type": "number"
        },
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.7,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
          "type": "number"
        },
        {
          "displayName": "Timeout",
          "name": "timeout",
          "default": 60000,
          "description": "Maximum amount of time a request is allowed to take in milliseconds",
          "type": "number"
        },
        {
          "displayName": "Max Retries",
          "name": "maxRetries",
          "default": 2,
          "description": "Maximum number of retries to attempt",
          "type": "number"
        },
        {
          "displayName": "Top P",
          "name": "topP",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.",
          "type": "number"
        }
      ]
    }
  ]


node_type: nodes-langchain.lmCohere
package_name: @n8n/n8n-nodes-langchain
display_name: Cohere Model
description: Language Model Cohere
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "cohereApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Cohere Model node documentation
  description: Learn how to use the Cohere Model node in n8n. Follow technical documentation to integrate Cohere Model node into your workflows.
  contentType: [integration, reference]
  ---

  # Cohere Model node

  Use the Cohere Model node to use Cohere's models.

  On this page, you'll find the node parameters for the Cohere Model node, and links to more resources.

  This node lacks tools support, so it won't work with the [AI Agent](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/index.md) node. Instead, connect it with the [Basic LLM Chain](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm.md) node.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/cohere.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node Options

  * **Maximum Number of Tokens**: Enter the maximum number of tokens used, which sets the completion length.
  * **Sampling Temperature**: Use this option to control the randomness of the sampling process. A higher temperature creates more diverse sampling, but increases the risk of hallucinations.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'cohere-model') ]]

  ## Related resources

  Refer to [LangChains's Cohere documentation](https://js.langchain.com/docs/integrations/llms/cohere/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Maximum Number of Tokens",
          "name": "maxTokens",
          "default": 250,
          "description": "The maximum number of tokens to generate in the completion. Most models have a context length of 2048 tokens (except for the newest models, which support 32,768).",
          "type": "number",
          "typeOptions": {
            "maxValue": 32768
          }
        },
        {
          "displayName": "Model",
          "name": "model",
          "type": "string",
          "description": "The name of the model to use",
          "default": ""
        },
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
          "type": "number"
        }
      ]
    }
  ]


node_type: nodes-langchain.lmOllama
package_name: @n8n/n8n-nodes-langchain
display_name: Ollama Model
description: Language Model Ollama
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "ollamaApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Ollama Model node documentation
  description: Learn how to use the Ollama Model node in n8n. Follow technical documentation to integrate Ollama Model node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # Ollama Model node

  The Ollama Model node allows you use local Llama 2 models.

  On this page, you'll find the node parameters for the Ollama Model node, and links to more resources.

  This node lacks tools support, so it won't work with the [AI Agent](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/index.md) node. Instead, connect it with the [Basic LLM Chain](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm.md) node.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/ollama.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Model**: Select the model that generates the completion. Choose from:
  	* **Llama2**
  	* **Llama2 13B**
  	* **Llama2 70B**
  	* **Llama2 Uncensored**

  Refer to the Ollama [Models Library documentation](https://ollama.com/library){:target=_blank .external-link} for more information about available models.

  ## Node options

  * **Sampling Temperature**: Use this option to control the randomness of the sampling process. A higher temperature creates more diverse sampling, but increases the risk of hallucinations.
  * **Top K**: Enter the number of token choices the model uses to generate the next token.
  * **Top P**: Use this option to set the probability the completion should use. Use a lower value to ignore less probable options.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'ollama-model') ]]

  ## Related resources

  Refer to [LangChains's Ollama documentation](https://js.langchain.com/docs/integrations/llms/ollama/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  ## Common issues

  For common questions or issues and suggested solutions, refer to [Common issues](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmollama/common-issues.md).

  --8<-- "_glossary/ai-glossary.md"

  --8<-- "_snippets/self-hosting/starter-kits/self-hosted-ai-starter-kit.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "options",
      "default": "llama3.2",
      "description": "The model which will generate the completion. To download models, visit <a href=\"https://ollama.ai/library\">Ollama Models Library</a>.",
      "required": true,
      "typeOptions": {
        "loadOptions": {
          "routing": {
            "request": {
              "method": "GET",
              "url": "/api/tags"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "models"
                  }
                },
                {
                  "type": "setKeyValue",
                  "properties": {
                    "name": "={{$responseItem.name}}",
                    "value": "={{$responseItem.name}}"
                  }
                },
                {
                  "type": "sort",
                  "properties": {
                    "key": "name"
                  }
                }
              ]
            }
          }
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 0.7,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls the randomness of the generated text. Lower values make the output more focused and deterministic, while higher values make it more diverse and random.",
          "type": "number"
        },
        {
          "displayName": "Top K",
          "name": "topK",
          "default": -1,
          "typeOptions": {
            "maxValue": 100,
            "minValue": -1,
            "numberPrecision": 1
          },
          "description": "Limits the number of highest probability vocabulary tokens to consider at each step. A higher value increases diversity but may reduce coherence. Set to -1 to disable.",
          "type": "number"
        },
        {
          "displayName": "Top P",
          "name": "topP",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Chooses from the smallest possible set of tokens whose cumulative probability exceeds the probability top_p. Helps generate more human-like text by reducing repetitions.",
          "type": "number"
        },
        {
          "displayName": "Frequency Penalty",
          "name": "frequencyPenalty",
          "type": "number",
          "default": 0,
          "typeOptions": {
            "minValue": 0
          },
          "description": "Adjusts the penalty for tokens that have already appeared in the generated text. Higher values discourage repetition."
        },
        {
          "displayName": "Keep Alive",
          "name": "keepAlive",
          "type": "string",
          "default": "5m",
          "description": "Specifies the duration to keep the loaded model in memory after use. Useful for frequently used models. Format: 1h30m (1 hour 30 minutes)."
        },
        {
          "displayName": "Low VRAM Mode",
          "name": "lowVram",
          "type": "boolean",
          "default": false,
          "description": "Whether to Activate low VRAM mode, which reduces memory usage at the cost of slower generation speed. Useful for GPUs with limited memory."
        },
        {
          "displayName": "Main GPU ID",
          "name": "mainGpu",
          "type": "number",
          "default": 0,
          "description": "Specifies the ID of the GPU to use for the main computation. Only change this if you have multiple GPUs."
        },
        {
          "displayName": "Context Batch Size",
          "name": "numBatch",
          "type": "number",
          "default": 512,
          "description": "Sets the batch size for prompt processing. Larger batch sizes may improve generation speed but increase memory usage."
        },
        {
          "displayName": "Context Length",
          "name": "numCtx",
          "type": "number",
          "default": 2048,
          "description": "The maximum number of tokens to use as context for generating the next token. Smaller values reduce memory usage, while larger values provide more context to the model."
        },
        {
          "displayName": "Number of GPUs",
          "name": "numGpu",
          "type": "number",
          "default": -1,
          "description": "Specifies the number of GPUs to use for parallel processing. Set to -1 for auto-detection."
        },
        {
          "displayName": "Max Tokens to Generate",
          "name": "numPredict",
          "type": "number",
          "default": -1,
          "description": "The maximum number of tokens to generate. Set to -1 for no limit. Be cautious when setting this to a large value, as it can lead to very long outputs."
        },
        {
          "displayName": "Number of CPU Threads",
          "name": "numThread",
          "type": "number",
          "default": 0,
          "description": "Specifies the number of CPU threads to use for processing. Set to 0 for auto-detection."
        },
        {
          "displayName": "Penalize Newlines",
          "name": "penalizeNewline",
          "type": "boolean",
          "default": true,
          "description": "Whether the model will be less likely to generate newline characters, encouraging longer continuous sequences of text"
        },
        {
          "displayName": "Presence Penalty",
          "name": "presencePenalty",
          "type": "number",
          "default": 0,
          "description": "Adjusts the penalty for tokens based on their presence in the generated text so far. Positive values penalize tokens that have already appeared, encouraging diversity."
        },
        {
          "displayName": "Repetition Penalty",
          "name": "repeatPenalty",
          "type": "number",
          "default": 1,
          "description": "Adjusts the penalty factor for repeated tokens. Higher values more strongly discourage repetition. Set to 1.0 to disable repetition penalty."
        },
        {
          "displayName": "Use Memory Locking",
          "name": "useMLock",
          "type": "boolean",
          "default": false,
          "description": "Whether to lock the model in memory to prevent swapping. This can improve performance but requires sufficient available memory."
        },
        {
          "displayName": "Use Memory Mapping",
          "name": "useMMap",
          "type": "boolean",
          "default": true,
          "description": "Whether to use memory mapping for loading the model. This can reduce memory usage but may impact performance. Recommended to keep enabled."
        },
        {
          "displayName": "Load Vocabulary Only",
          "name": "vocabOnly",
          "type": "boolean",
          "default": false,
          "description": "Whether to only load the model vocabulary without the weights. Useful for quickly testing tokenization."
        },
        {
          "displayName": "Output Format",
          "name": "format",
          "type": "options",
          "options": [
            {
              "name": "Default",
              "value": "default"
            },
            {
              "name": "JSON",
              "value": "json"
            }
          ],
          "default": "default",
          "description": "Specifies the format of the API response"
        }
      ]
    }
  ]


node_type: nodes-langchain.lmOpenHuggingFaceInference
package_name: @n8n/n8n-nodes-langchain
display_name: Hugging Face Inference Model
description: Language Model HuggingFaceInference
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "huggingFaceApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_languageModel"
  ]

output_names:
  [
  "Model"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Hugging Face Inference Model node documentation
  description: Learn how to use the Hugging Face Inference Model node in n8n. Follow technical documentation to integrate Hugging Face Inference Model node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Hugging Face Inference Model node

  Use the Hugging Face Inference Model node to use Hugging Face's models.

  On this page, you'll find the node parameters for the Hugging Face Inference Model node, and links to more resources.

  This node lacks tools support, so it won't work with the [AI Agent](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/index.md) node. Instead, connect it with the [Basic LLM Chain](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm.md) node.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/huggingface.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Model**: Select the model to use to generate the completion.

  ## Node options

  * **Custom Inference Endpoint**: Enter a custom inference endpoint URL.
  * **Frequency Penalty**: Use this option to control the chances of the model repeating itself. Higher values reduce the chance of the model repeating itself.
  * **Maximum Number of Tokens**: Enter the maximum number of tokens used, which sets the completion length.
  * **Presence Penalty**: Use this option to control the chances of the model talking about new topics. Higher values increase the chance of the model talking about new topics.
  * **Sampling Temperature**: Use this option to control the randomness of the sampling process. A higher temperature creates more diverse sampling, but increases the risk of hallucinations.
  * **Top K**: Enter the number of token choices the model uses to generate the next token.
  * **Top P**: Use this option to set the probability the completion should use. Use a lower value to ignore less probable options.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'hugging-face-inference-model') ]]

  ## Related resources

  Refer to [LangChains's Hugging Face Inference Model documentation](https://js.langchain.com/docs/integrations/llms/huggingface_inference/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Model",
      "name": "model",
      "type": "string",
      "default": "mistralai/Mistral-Nemo-Base-2407"
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Custom Inference Endpoint",
          "name": "endpointUrl",
          "default": "",
          "description": "Custom endpoint URL",
          "type": "string"
        },
        {
          "displayName": "Frequency Penalty",
          "name": "frequencyPenalty",
          "default": 0,
          "typeOptions": {
            "maxValue": 2,
            "minValue": -2,
            "numberPrecision": 1
          },
          "description": "Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim",
          "type": "number"
        },
        {
          "displayName": "Maximum Number of Tokens",
          "name": "maxTokens",
          "default": 128,
          "description": "The maximum number of tokens to generate in the completion. Most models have a context length of 2048 tokens (except for the newest models, which support 32,768).",
          "type": "number",
          "typeOptions": {
            "maxValue": 32768
          }
        },
        {
          "displayName": "Presence Penalty",
          "name": "presencePenalty",
          "default": 0,
          "typeOptions": {
            "maxValue": 2,
            "minValue": -2,
            "numberPrecision": 1
          },
          "description": "Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics",
          "type": "number"
        },
        {
          "displayName": "Sampling Temperature",
          "name": "temperature",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
          "type": "number"
        },
        {
          "displayName": "Top K",
          "name": "topK",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls the top tokens to consider within the sample operation to create new text",
          "type": "number"
        },
        {
          "displayName": "Top P",
          "name": "topP",
          "default": 1,
          "typeOptions": {
            "maxValue": 1,
            "minValue": 0,
            "numberPrecision": 1
          },
          "description": "Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.",
          "type": "number"
        }
      ]
    }
  ]


node_type: nodes-langchain.mcpClientTool
package_name: @n8n/n8n-nodes-langchain
display_name: MCP Client Tool
description: Connect tools from an MCP Server
category: output
development_style: programmatic
version: 1.2
operations: []
outputs:
  [
  {
  "type": "ai_tool",
  "displayName": "Tools"
  }
  ]

updated_at: 2025-11-03 20:57:27
properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "SSE Endpoint",
      "name": "sseEndpoint",
      "type": "string",
      "default": "",
      "description": "SSE Endpoint of your MCP server",
      "required": true,
      "displayOptions": {
        "show": {
          "@version": [
            1
          ]
        }
      }
    },
    {
      "displayName": "Endpoint",
      "name": "endpointUrl",
      "type": "string",
      "default": "",
      "description": "Endpoint of your MCP server",
      "required": true,
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "gte": 1.1
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Server Transport",
      "name": "serverTransport",
      "type": "options",
      "default": "sse",
      "description": "The transport used by your endpoint",
      "options": [
        {
          "name": "HTTP Streamable",
          "value": "httpStreamable"
        },
        {
          "name": "Server Sent Events (Deprecated)",
          "value": "sse"
        }
      ],
      "displayOptions": {
        "show": {
          "@version": [
            1.1
          ]
        }
      }
    },
    {
      "displayName": "Server Transport",
      "name": "serverTransport",
      "type": "options",
      "default": "httpStreamable",
      "description": "The transport used by your endpoint",
      "options": [
        {
          "name": "HTTP Streamable",
          "value": "httpStreamable"
        },
        {
          "name": "Server Sent Events (Deprecated)",
          "value": "sse"
        }
      ],
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "gte": 1.2
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Authentication",
      "name": "authentication",
      "type": "options",
      "default": "none",
      "description": "The way to authenticate with your endpoint",
      "options": [
        {
          "name": "Bearer Auth",
          "value": "bearerAuth"
        },
        {
          "name": "Header Auth",
          "value": "headerAuth"
        },
        {
          "name": "None",
          "value": "none"
        }
      ]
    },
    {
      "displayName": "Credentials",
      "name": "credentials",
      "type": "credentials",
      "default": "",
      "displayOptions": {
        "show": {
          "authentication": [
            "headerAuth",
            "bearerAuth"
          ]
        }
      }
    },
    {
      "displayName": "Tools to Include",
      "name": "include",
      "type": "options",
      "default": "all",
      "description": "How to select the tools you want to be exposed to the AI Agent",
      "options": [
        {
          "name": "All",
          "value": "all",
          "description": "Also include all unchanged fields from the input"
        },
        {
          "name": "Selected",
          "value": "selected",
          "description": "Also include the tools listed in the parameter \"Tools to Include\""
        },
        {
          "name": "All Except",
          "value": "except",
          "description": "Exclude the tools listed in the parameter \"Tools to Exclude\""
        }
      ]
    },
    {
      "displayName": "Tools to Include",
      "name": "includeTools",
      "type": "multiOptions",
      "default": [],
      "description": "Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
      "displayOptions": {
        "show": {
          "include": [
            "selected"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getTools",
        "loadOptionsDependsOn": [
          "sseEndpoint"
        ]
      }
    },
    {
      "displayName": "Tools to Exclude",
      "name": "excludeTools",
      "type": "multiOptions",
      "default": [],
      "description": "Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
      "displayOptions": {
        "show": {
          "include": [
            "except"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getTools"
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Timeout",
          "name": "timeout",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 60000,
          "description": "Time in ms to wait for tool calls to finish"
        }
      ]
    }
  ]

credentials_required:
  [
    {
      "name": "httpBearerAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "bearerAuth"
          ]
        }
      }
    },
    {
      "name": "httpHeaderAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "headerAuth"
          ]
        }
      }
    }
  ]


node_type: nodes-langchain.mcpTrigger
package_name: @n8n/n8n-nodes-langchain
display_name: MCP Server Trigger
description: Expose n8n tools as an MCP Server endpoint
category: trigger
development_style: programmatic
version: 2
operations: []
outputs: []
updated_at: 2025-11-03 20:57:27
properties_schema:
  [
    {
      "displayName": "Authentication",
      "name": "authentication",
      "type": "options",
      "default": "none",
      "description": "The way to authenticate",
      "options": [
        {
          "name": "None",
          "value": "none"
        },
        {
          "name": "Bearer Auth",
          "value": "bearerAuth"
        },
        {
          "name": "Header Auth",
          "value": "headerAuth"
        }
      ]
    },
    {
      "displayName": "Path",
      "name": "path",
      "type": "string",
      "default": "",
      "description": "The base path for this MCP server",
      "required": true
    }
  ]

credentials_required:
  [
    {
      "name": "httpBearerAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "bearerAuth"
          ]
        }
      }
    },
    {
      "name": "httpHeaderAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "headerAuth"
          ]
        }
      }
    }
  ]


node_type: nodes-langchain.memoryBufferWindow
package_name: @n8n/n8n-nodes-langchain
display_name: Simple Memory
description: Stores in n8n memory, so no credentials required
category: transform
development_style: programmatic
version: 1.3
operations: []
credentials_required: []
outputs:
  [
  "ai_memory"
  ]

output_names:
  [
  "Memory"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Simple Memory node documentation
  description: Learn how to use the Simple Memory node in n8n. Follow technical documentation to integrate Simple Memory node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # Simple Memory node

  Use the Simple Memory node to [persist](/glossary.md#ai-memory) chat history in your workflow.

  On this page, you'll find a list of operations the Simple Memory node supports, and links to more resources.

  /// warning | Don't use this node if running n8n in queue mode
  If your n8n instance uses [queue mode](/hosting/scaling/queue-mode.md), this node doesn't work in an active production workflow. This is because n8n can't guarantee that every call to Simple Memory will go to the same worker.
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  Configure these parameters to configure the node:

  * **Session Key**: Enter the key to use to store the memory in the workflow data.
  * **Context Window Length**: Enter the number of previous interactions to consider for context.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'window-buffer-memory') ]]

  ## Related resources

  Refer to [LangChain's Buffer Window Memory documentation](https://v03.api.js.langchain.com/classes/langchain.memory.BufferWindowMemory.html){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  ## Common issues

  For common questions or issues and suggested solutions, refer to [Common issues](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/common-issues.md).

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Session Key",
      "name": "sessionKey",
      "type": "string",
      "default": "chat_history",
      "description": "The key to use to store the memory in the workflow data",
      "displayOptions": {
        "show": {
          "@version": [
            1
          ]
        }
      }
    },
    {
      "displayName": "Session ID",
      "name": "sessionKey",
      "type": "string",
      "default": "={{ $json.sessionId }}",
      "description": "The key to use to store the memory",
      "displayOptions": {
        "show": {
          "@version": [
            1.1
          ]
        }
      }
    },
    {
      "displayName": "Session ID",
      "name": "sessionIdType",
      "type": "options",
      "default": "fromInput",
      "options": [
        {
          "name": "Connected Chat Trigger Node",
          "value": "fromInput",
          "description": "Looks for an input field called 'sessionId' that is coming from a directly connected Chat Trigger"
        },
        {
          "name": "Define below",
          "value": "customKey",
          "description": "Use an expression to reference data in previous nodes or enter static text"
        }
      ],
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "gte": 1.2
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Session Key From Previous Node",
      "name": "sessionKey",
      "type": "string",
      "default": "={{ $json.sessionId }}",
      "displayOptions": {
        "show": {
          "sessionIdType": [
            "fromInput"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.3
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Key",
      "name": "sessionKey",
      "type": "string",
      "default": "",
      "description": "The key to use to store session ID in the memory",
      "displayOptions": {
        "show": {
          "sessionIdType": [
            "customKey"
          ]
        }
      }
    },
    {
      "displayName": "Context Window Length",
      "name": "contextWindowLength",
      "type": "number",
      "default": 5
    }
  ]


node_type: nodes-langchain.memoryMotorhead
package_name: @n8n/n8n-nodes-langchain
display_name: Motorhead
description: Use Motorhead Memory
category: transform
development_style: programmatic
version: 1.3
operations: []
credentials_required:
  [
  {
  "name": "motorheadApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_memory"
  ]

output_names:
  [
  "Memory"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Motorhead node documentation
  description: Learn how to use the Motorhead node in n8n. Follow technical documentation to integrate Motorhead node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Motorhead node

  Use the Motorhead node to use Motorhead as a [memory](/glossary.md#ai-memory) server.

  On this page, you'll find a list of operations the Motorhead node supports, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/motorhead.md).
  ///

  ## Node parameters

  * **Session ID**: Enter the ID to use to store the memory in the workflow data.

  ## Node reference

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'motorhead') ]]

  ## Related resources

  Refer to [LangChain's Motorhead documentation](https://js.langchain.com/docs/integrations/memory/motorhead_memory){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  ## Single memory instance

  [[% include "_includes/integrations/cluster-nodes/memory-shared.html" %]]

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Session ID",
      "name": "sessionId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "@version": [
            1
          ]
        }
      }
    },
    {
      "displayName": "Session ID",
      "name": "sessionId",
      "type": "string",
      "default": "={{ $json.sessionId }}",
      "description": "The key to use to store the memory",
      "displayOptions": {
        "show": {
          "@version": [
            1.1
          ]
        }
      }
    },
    {
      "displayName": "Session ID",
      "name": "sessionIdType",
      "type": "options",
      "default": "fromInput",
      "options": [
        {
          "name": "Connected Chat Trigger Node",
          "value": "fromInput",
          "description": "Looks for an input field called 'sessionId' that is coming from a directly connected Chat Trigger"
        },
        {
          "name": "Define below",
          "value": "customKey",
          "description": "Use an expression to reference data in previous nodes or enter static text"
        }
      ],
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "gte": 1.2
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Session Key From Previous Node",
      "name": "sessionKey",
      "type": "string",
      "default": "={{ $json.sessionId }}",
      "displayOptions": {
        "show": {
          "sessionIdType": [
            "fromInput"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.3
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Key",
      "name": "sessionKey",
      "type": "string",
      "default": "",
      "description": "The key to use to store session ID in the memory",
      "displayOptions": {
        "show": {
          "sessionIdType": [
            "customKey"
          ]
        }
      }
    }
  ]


node_type: nodes-langchain.memoryPostgresChat
package_name: @n8n/n8n-nodes-langchain
display_name: Postgres Chat Memory
description: Stores the chat history in Postgres table.
category: transform
development_style: programmatic
version: 1.3
operations: []
credentials_required:
  [
  {
  "name": "postgres",
  "required": true,
  "testedBy": "postgresConnectionTest"
  }
  ]

outputs:
  [
  "ai_memory"
  ]

output_names:
  [
  "Memory"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Postgres Chat Memory node documentation
  description: Learn how to use the Postgres Chat Memory node in n8n. Follow technical documentation to integrate Postgres Chat Memory node into your workflows.
  contentType: [integration, reference]
  ---

  # Postgres Chat Memory node

  Use the Postgres Chat Memory node to use Postgres as a [memory](/glossary.md#ai-memory) server for storing chat history.

  On this page, you'll find a list of operations the Postgres Chat Memory node supports, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/postgres.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Session Key**: Enter the key to use to store the memory in the workflow data.
  * **Table Name**: Enter the name of the table to store the chat history in. The system will create the table if doesn't exist.
  * **Context Window Length**: Enter the number of previous interactions to consider for context.

  ## Related resources

  Refer to [LangChain's Postgres Chat Message History documentation](https://js.langchain.com/docs/integrations/memory/postgres){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  ## Single memory instance

  [[% include "_includes/integrations/cluster-nodes/memory-shared.html" %]]

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Session ID",
      "name": "sessionIdType",
      "type": "options",
      "default": "fromInput",
      "options": [
        {
          "name": "Connected Chat Trigger Node",
          "value": "fromInput",
          "description": "Looks for an input field called 'sessionId' that is coming from a directly connected Chat Trigger"
        },
        {
          "name": "Define below",
          "value": "customKey",
          "description": "Use an expression to reference data in previous nodes or enter static text"
        }
      ]
    },
    {
      "displayName": "Session Key From Previous Node",
      "name": "sessionKey",
      "type": "string",
      "default": "={{ $json.sessionId }}",
      "displayOptions": {
        "show": {
          "sessionIdType": [
            "fromInput"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.2
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Key",
      "name": "sessionKey",
      "type": "string",
      "default": "",
      "description": "The key to use to store session ID in the memory",
      "displayOptions": {
        "show": {
          "sessionIdType": [
            "customKey"
          ]
        }
      }
    },
    {
      "displayName": "Table Name",
      "name": "tableName",
      "type": "string",
      "default": "n8n_chat_histories",
      "description": "The table name to store the chat history in. If table does not exist, it will be created."
    },
    {
      "displayName": "Context Window Length",
      "name": "contextWindowLength",
      "type": "number",
      "default": 5,
      "displayOptions": {
        "hide": {
          "@version": [
            {
              "_cnd": {
                "lt": 1.1
              }
            }
          ]
        }
      }
    }
  ]


node_type: nodes-langchain.memoryMongoDbChat
package_name: @n8n/n8n-nodes-langchain
display_name: MongoDB Chat Memory
description: Stores the chat history in MongoDB collection.
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "mongoDb",
  "required": true
  }
  ]

outputs:
  [
  "ai_memory"
  ]

output_names:
  [
  "Memory"
  ]

updated_at: 2025-11-03 20:57:27
properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Session ID",
      "name": "sessionIdType",
      "type": "options",
      "default": "fromInput",
      "options": [
        {
          "name": "Connected Chat Trigger Node",
          "value": "fromInput",
          "description": "Looks for an input field called 'sessionId' that is coming from a directly connected Chat Trigger"
        },
        {
          "name": "Define below",
          "value": "customKey",
          "description": "Use an expression to reference data in previous nodes or enter static text"
        }
      ]
    },
    {
      "displayName": "Session Key From Previous Node",
      "name": "sessionKey",
      "type": "string",
      "default": "={{ $json.sessionId }}",
      "displayOptions": {
        "show": {
          "sessionIdType": [
            "fromInput"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Key",
      "name": "sessionKey",
      "type": "string",
      "default": "",
      "description": "The key to use to store session ID in the memory",
      "displayOptions": {
        "show": {
          "sessionIdType": [
            "customKey"
          ]
        }
      }
    },
    {
      "displayName": "Collection Name",
      "name": "collectionName",
      "type": "string",
      "default": "n8n_chat_histories",
      "description": "The collection name to store the chat history in. If collection does not exist, it will be created."
    },
    {
      "displayName": "Database Name",
      "name": "databaseName",
      "type": "string",
      "default": "",
      "description": "The database name to store the chat history in. If not provided, the database from credentials will be used."
    },
    {
      "displayName": "Context Window Length",
      "name": "contextWindowLength",
      "type": "number",
      "default": 5
    }
  ]


node_type: nodes-langchain.memoryRedisChat
package_name: @n8n/n8n-nodes-langchain
display_name: Redis Chat Memory
description: Stores the chat history in Redis.
category: transform
development_style: programmatic
version: 1.5
operations: []
credentials_required:
  [
  {
  "name": "redis",
  "required": true
  }
  ]

outputs:
  [
  "ai_memory"
  ]

output_names:
  [
  "Memory"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Redis Chat Memory node documentation
  description: Learn how to use the Redis Chat Memory node in n8n. Follow technical documentation to integrate Redis Chat Memory node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Redis Chat Memory node

  Use the Redis Chat Memory node to use Redis as a [memory](/glossary.md#ai-memory) server.

  On this page, you'll find a list of operations the Redis Chat Memory node supports, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/redis.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Session Key**: Enter the key to use to store the memory in the workflow data.
  * **Session Time To Live**: Use this parameter to make the session expire after a given number of seconds.
  * **Context Window Length**: Enter the number of previous interactions to consider for context.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'redis-chat-memory') ]]

  ## Related resources

  Refer to [LangChain's Redis Chat Memory documentation](https://js.langchain.com/docs/integrations/memory/redis){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  ## Single memory instance

  [[% include "_includes/integrations/cluster-nodes/memory-shared.html" %]]

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Session Key",
      "name": "sessionKey",
      "type": "string",
      "default": "chat_history",
      "description": "The key to use to store the memory in the workflow data",
      "displayOptions": {
        "show": {
          "@version": [
            1
          ]
        }
      }
    },
    {
      "displayName": "Session ID",
      "name": "sessionKey",
      "type": "string",
      "default": "={{ $json.sessionId }}",
      "description": "The key to use to store the memory",
      "displayOptions": {
        "show": {
          "@version": [
            1.1
          ]
        }
      }
    },
    {
      "displayName": "Session ID",
      "name": "sessionIdType",
      "type": "options",
      "default": "fromInput",
      "options": [
        {
          "name": "Connected Chat Trigger Node",
          "value": "fromInput",
          "description": "Looks for an input field called 'sessionId' that is coming from a directly connected Chat Trigger"
        },
        {
          "name": "Define below",
          "value": "customKey",
          "description": "Use an expression to reference data in previous nodes or enter static text"
        }
      ],
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "gte": 1.2
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Session Key From Previous Node",
      "name": "sessionKey",
      "type": "string",
      "default": "={{ $json.sessionId }}",
      "displayOptions": {
        "show": {
          "sessionIdType": [
            "fromInput"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.4
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Key",
      "name": "sessionKey",
      "type": "string",
      "default": "",
      "description": "The key to use to store session ID in the memory",
      "displayOptions": {
        "show": {
          "sessionIdType": [
            "customKey"
          ]
        }
      }
    },
    {
      "displayName": "Session Time To Live",
      "name": "sessionTTL",
      "type": "number",
      "default": 0,
      "description": "For how long the session should be stored in seconds. If set to 0 it will not expire."
    },
    {
      "displayName": "Context Window Length",
      "name": "contextWindowLength",
      "type": "number",
      "default": 5,
      "displayOptions": {
        "hide": {
          "@version": [
            {
              "_cnd": {
                "lt": 1.3
              }
            }
          ]
        }
      }
    }
  ]


node_type: nodes-langchain.memoryManager
package_name: @n8n/n8n-nodes-langchain
display_name: Chat Memory Manager
description: Manage chat messages memory and use it in the workflow
category: transform
development_style: programmatic
version: 1.1
operations: []
credentials_required: []
outputs:
  [
  {
  "displayName": "",
  "type": "main"
  }
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Chat Memory Manager node documentation
  description: Learn how to use the Chat Memory Manager node in n8n. Follow technical documentation to integrate Chat Memory Manager node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Chat Memory Manager node

  The Chat Memory Manager node manages chat message [memories](/glossary.md#ai-memory) within your workflows. Use this node to load, insert, and delete chat messages in an in-memory [vector store](/glossary.md#ai-vector-store).

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-sub-nodes/chat-memory-manager-purpose.md"

  On this page, you'll find a list of operations that the Chat Memory Manager node supports, along with links to more resources.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Operation Mode**: Choose between **Get Many Messages**, **Insert Messages**, and **Delete Messages** operations.
  * **Insert Mode**: Available in **Insert Messages** mode. Choose from:
      * **Insert Messages**: Insert messages alongside existing messages.
      * **Override All Messages**: Replace current memory.
  * **Delete Mode**: available in **Delete Messages** mode. Choose from:
      * **Last N**: Delete the last N messages.
      * **All Messages**: Delete messages from memory.
  * **Chat Messages**: available in **Insert Messages** mode. Define the chat messages to insert into the memory, including:
  	* **Type Name or ID**: Set the message type. Select one of:
  		* **AI**: Use this for messages from the AI.
  		* **System**: Add a message containing instructions for the AI.
  		* **User**: Use this for messages from the user. This message type is sometimes called the 'human' message in other AI tools and guides.
  	* **Message**: Enter the message contents.
  	* **Hide Message in Chat**: Select whether n8n should display the message to the user in the chat UI (turned off) or not (turned on).
  * **Messages Count**: Available in **Delete Messages** mode when you select **Last N**. Enter the number of latest messages to delete.
  * **Simplify Output**: Available in **Get Many Messages** mode. Turn on to simplify the output to include only the sender (AI, user, or system) and the text.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'chat-memory-manager') ]]

  ## Related resources

  Refer to [LangChain's Memory documentation](https://langchain-ai.github.io/langgraphjs/concepts/memory/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "Operation Mode",
      "name": "mode",
      "type": "options",
      "default": "load",
      "options": [
        {
          "name": "Get Many Messages",
          "description": "Retrieve chat messages from connected memory",
          "value": "load"
        },
        {
          "name": "Insert Messages",
          "description": "Insert chat messages into connected memory",
          "value": "insert"
        },
        {
          "name": "Delete Messages",
          "description": "Delete chat messages from connected memory",
          "value": "delete"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Insert Mode",
      "name": "insertMode",
      "type": "options",
      "default": "insert",
      "description": "Choose how new messages are inserted into the memory",
      "options": [
        {
          "name": "Insert Messages",
          "value": "insert",
          "description": "Add messages alongside existing ones"
        },
        {
          "name": "Override All Messages",
          "value": "override",
          "description": "Replace the current memory with new messages"
        }
      ],
      "displayOptions": {
        "show": {
          "mode": [
            "insert"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Delete Mode",
      "name": "deleteMode",
      "type": "options",
      "default": "lastN",
      "description": "How messages are deleted from memory",
      "options": [
        {
          "name": "Last N",
          "value": "lastN",
          "description": "Delete the last N messages"
        },
        {
          "name": "All Messages",
          "value": "all",
          "description": "Clear all messages from memory"
        }
      ],
      "displayOptions": {
        "show": {
          "mode": [
            "delete"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Chat Messages",
      "name": "messages",
      "type": "fixedCollection",
      "default": {},
      "description": "Chat messages to insert into memory",
      "options": [
        {
          "name": "messageValues",
          "displayName": "Message",
          "values": [
            {
              "displayName": "Type Name or ID",
              "name": "type",
              "type": "options",
              "options": [
                {
                  "name": "AI",
                  "value": "ai"
                },
                {
                  "name": "System",
                  "value": "system"
                },
                {
                  "name": "User",
                  "value": "user"
                }
              ],
              "default": "system"
            },
            {
              "displayName": "Message",
              "name": "message",
              "type": "string",
              "required": true,
              "default": ""
            },
            {
              "displayName": "Hide Message in Chat",
              "name": "hideFromUI",
              "type": "boolean",
              "required": true,
              "default": false,
              "description": "Whether to hide the message from the chat UI"
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "mode": [
            "insert"
          ]
        }
      },
      "typeOptions": {
        "multipleValues": true
      }
    },
    {
      "displayName": "Messages Count",
      "name": "lastMessagesCount",
      "type": "number",
      "default": 2,
      "description": "The amount of last messages to delete",
      "displayOptions": {
        "show": {
          "mode": [
            "delete"
          ],
          "deleteMode": [
            "lastN"
          ]
        }
      }
    },
    {
      "displayName": "Simplify Output",
      "name": "simplifyOutput",
      "type": "boolean",
      "default": true,
      "description": "Whether to simplify the output to only include the sender and the text",
      "displayOptions": {
        "show": {
          "mode": [
            "load"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Group Messages",
          "name": "groupMessages",
          "type": "boolean",
          "default": true,
          "description": "Whether to group messages into a single item or return each message as a separate item"
        }
      ],
      "displayOptions": {
        "show": {
          "mode": [
            "load"
          ]
        }
      }
    }
  ]


node_type: nodes-langchain.memoryChatRetriever
package_name: @n8n/n8n-nodes-langchain
display_name: Chat Messages Retriever
description: Retrieve chat messages from memory and use them in the workflow
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2025-11-03 20:57:27
properties_schema:
  [
    {
      "displayName": "This node is deprecated. Use 'Chat Memory Manager' node instead.",
      "name": "deprecatedNotice",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "Simplify Output",
      "name": "simplifyOutput",
      "type": "boolean",
      "default": true,
      "description": "Whether to simplify the output to only include the sender and the text"
    }
  ]


node_type: nodes-langchain.memoryXata
package_name: @n8n/n8n-nodes-langchain
display_name: Xata
description: Use Xata Memory
category: transform
development_style: programmatic
version: 1.4
operations: []
credentials_required:
  [
  {
  "name": "xataApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_memory"
  ]

output_names:
  [
  "Memory"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Xata node documentation
  description: Learn how to use the Xata node in n8n. Follow technical documentation to integrate Xata node into your workflows.
  contentType: [integration, reference]
  ---

  # Xata node

  Use the Xata node to use Xata as a [memory](/glossary.md#ai-memory) server.
  On this page, you'll find a list of operations the Xata node supports, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/xata.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  -   **Session ID**: Enter the ID to use to store the memory in the workflow data.
  -   **Context Window Length**: Enter the number of previous interactions to consider for context.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'xata') ]]

  ## Related resources

  Refer to [LangChain's Xata documentation](https://js.langchain.com/docs/integrations/memory/xata){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  ## Single memory instance

  [[% include "_includes/integrations/cluster-nodes/memory-shared.html" %]]

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Session ID",
      "name": "sessionId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "@version": [
            1
          ]
        }
      }
    },
    {
      "displayName": "Session ID",
      "name": "sessionId",
      "type": "string",
      "default": "={{ $json.sessionId }}",
      "description": "The key to use to store the memory",
      "displayOptions": {
        "show": {
          "@version": [
            1.1
          ]
        }
      }
    },
    {
      "displayName": "Session ID",
      "name": "sessionIdType",
      "type": "options",
      "default": "fromInput",
      "options": [
        {
          "name": "Connected Chat Trigger Node",
          "value": "fromInput",
          "description": "Looks for an input field called 'sessionId' that is coming from a directly connected Chat Trigger"
        },
        {
          "name": "Define below",
          "value": "customKey",
          "description": "Use an expression to reference data in previous nodes or enter static text"
        }
      ],
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "gte": 1.2
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Key",
      "name": "sessionKey",
      "type": "string",
      "default": "",
      "description": "The key to use to store session ID in the memory",
      "displayOptions": {
        "show": {
          "sessionIdType": [
            "customKey"
          ]
        }
      }
    },
    {
      "displayName": "Session Key From Previous Node",
      "name": "sessionKey",
      "type": "string",
      "default": "={{ $json.sessionId }}",
      "displayOptions": {
        "show": {
          "sessionIdType": [
            "fromInput"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.4
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Context Window Length",
      "name": "contextWindowLength",
      "type": "number",
      "default": 5,
      "displayOptions": {
        "hide": {
          "@version": [
            {
              "_cnd": {
                "lt": 1.3
              }
            }
          ]
        }
      }
    }
  ]


node_type: nodes-langchain.memoryZep
package_name: @n8n/n8n-nodes-langchain
display_name: Zep
description: Use Zep Memory
category: transform
development_style: programmatic
version: 1.3
operations: []
credentials_required:
  [
  {
  "name": "zepApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_memory"
  ]

output_names:
  [
  "Memory"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Zep node documentation
  description: Learn how to use the Zep node in n8n. Follow technical documentation to integrate Zep node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Zep node

  Use the Zep node to use Zep as a [memory](/glossary.md#ai-memory) server.

  On this page, you'll find a list of operations the Zep node supports, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/zep.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Session ID**: Enter the ID to use to store the memory in the workflow data.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'zep') ]]

  ## Related resources

  Refer to [LangChain's Zep documentation](https://js.langchain.com/docs/integrations/memory/zep_memory){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  ## Single memory instance

  [[% include "_includes/integrations/cluster-nodes/memory-shared.html" %]]

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This Zep integration is deprecated and will be removed in a future version.",
      "name": "deprecationNotice",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Only works with Zep Cloud and Community edition <= v0.27.2",
      "name": "supportedVersions",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "Session ID",
      "name": "sessionId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "@version": [
            1
          ]
        }
      }
    },
    {
      "displayName": "Session ID",
      "name": "sessionId",
      "type": "string",
      "default": "={{ $json.sessionId }}",
      "description": "The key to use to store the memory",
      "displayOptions": {
        "show": {
          "@version": [
            1.1
          ]
        }
      }
    },
    {
      "displayName": "Session ID",
      "name": "sessionIdType",
      "type": "options",
      "default": "fromInput",
      "options": [
        {
          "name": "Connected Chat Trigger Node",
          "value": "fromInput",
          "description": "Looks for an input field called 'sessionId' that is coming from a directly connected Chat Trigger"
        },
        {
          "name": "Define below",
          "value": "customKey",
          "description": "Use an expression to reference data in previous nodes or enter static text"
        }
      ],
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "gte": 1.2
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Session Key From Previous Node",
      "name": "sessionKey",
      "type": "string",
      "default": "={{ $json.sessionId }}",
      "displayOptions": {
        "show": {
          "sessionIdType": [
            "fromInput"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.3
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Key",
      "name": "sessionKey",
      "type": "string",
      "default": "",
      "description": "The key to use to store session ID in the memory",
      "displayOptions": {
        "show": {
          "sessionIdType": [
            "customKey"
          ]
        }
      }
    }
  ]


node_type: nodes-langchain.outputParserAutofixing
package_name: @n8n/n8n-nodes-langchain
display_name: Auto-fixing Output Parser
description: Deprecated, use structured output parser
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  "ai_outputParser"
  ]

output_names:
  [
  "Output Parser"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Auto-fixing Output Parser node documentation
  description: Learn how to use the Auto-fixing Output Parser node in n8n. Follow technical documentation to integrate Auto-fixing Output Parser node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Auto-fixing Output Parser node

  The Auto-fixing Output Parser node wraps another output parser. If the first one fails, it calls out to another LLM to fix any errors.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'auto-fixing-output-parser') ]]

  ## Related resources

  Refer to [LangChain's output parser documentation](https://js.langchain.com/docs/concepts/output_parsers/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node wraps another output parser. If the first one fails it calls an LLM to fix the format",
      "name": "info",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Retry Prompt",
          "name": "prompt",
          "type": "string",
          "default": "Instructions:\n--------------\n{instructions}\n--------------\nCompletion:\n--------------\n{completion}\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\n{error}\n--------------\n\nPlease try again. Please only respond with an answer that satisfies the constraints laid out in the Instructions:",
          "typeOptions": {
            "rows": 10
          },
          "hint": "Should include \"{error}\", \"{instructions}\", and \"{completion}\" placeholders",
          "description": "Prompt template used for fixing the output. Uses placeholders: \"{instructions}\" for parsing rules, \"{completion}\" for the failed attempt, and \"{error}\" for the validation error message."
        }
      ]
    }
  ]


node_type: nodes-langchain.outputParserItemList
package_name: @n8n/n8n-nodes-langchain
display_name: Item List Output Parser
description: Return the results as separate items
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  "ai_outputParser"
  ]

output_names:
  [
  "Output Parser"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Item List Output Parser node documentation
  description: Learn how to use the Item List Output Parser node in n8n. Follow technical documentation to integrate Item List Output Parser node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # Item List Output Parser node

  Use the Item List Output Parser node to return a list of items with a specific length and separator.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node options

  * **Number of Items**: Enter the maximum items to return. Set to `-1` for unlimited items.
  * **Separator**: Select the separator used to split the results into separate items. Defaults to a new line.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'item-list-output-parser') ]]

  ## Related resources

  Refer to [LangChain's output parser documentation](https://js.langchain.com/docs/concepts/output_parsers){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Number Of Items",
          "name": "numberOfItems",
          "type": "number",
          "default": -1,
          "description": "Defines how many items should be returned maximally. If set to -1, there is no limit."
        },
        {
          "displayName": "Separator",
          "name": "separator",
          "type": "string",
          "default": "\\n",
          "description": "Defines the separator that should be used to split the results into separate items. Defaults to a new line but can be changed depending on the data that should be returned."
        }
      ]
    }
  ]


node_type: nodes-langchain.outputParserStructured
package_name: @n8n/n8n-nodes-langchain
display_name: Structured Output Parser
description: Return data in a defined JSON format
category: transform
development_style: programmatic
version: 1.3
operations: []
credentials_required: []
outputs:
  [
  "ai_outputParser"
  ]

output_names:
  [
  "Output Parser"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Structured Output Parser node documentation
  description: Learn how to use the Structured Output Parser node in n8n. Follow technical documentation to integrate Structured Output Parser node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # Structured Output Parser node

  Use the Structured Output Parser node to return fields based on a JSON Schema.

  On this page, you'll find the node parameters for the Structured Output Parser node, and links to more resources.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Schema Type**: Define the output structure and validation. You have two options to provide the schema:

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-sub-nodes/schema-type-structuring.md"

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'structured-output-parser') ]]

  ## Related resources

  Refer to [LangChain's output parser documentation](https://js.langchain.com/docs/concepts/output_parsers){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  ## Common issues

  For common questions or issues and suggested solutions, refer to [Common issues](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/common-issues.md).

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Schema Type",
      "name": "schemaType",
      "type": "options",
      "default": "fromJson",
      "description": "How to specify the schema for the function",
      "options": [
        {
          "name": "Generate From JSON Example",
          "value": "fromJson",
          "description": "Generate a schema from an example JSON object"
        },
        {
          "name": "Define using JSON Schema",
          "value": "manual",
          "description": "Define the JSON schema manually"
        }
      ],
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "gte": 1.2
              }
            }
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "JSON Example",
      "name": "jsonSchemaExample",
      "type": "json",
      "default": "{\n\t\"state\": \"California\",\n\t\"cities\": [\"Los Angeles\", \"San Francisco\", \"San Diego\"]\n}",
      "description": "Example JSON object to use to generate the schema",
      "displayOptions": {
        "show": {
          "schemaType": [
            "fromJson"
          ]
        }
      },
      "typeOptions": {
        "rows": 10
      },
      "noDataExpression": true
    },
    {
      "displayName": "All properties will be required. To make them optional, use the 'JSON Schema' schema type instead",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "gte": 1.3
              }
            }
          ],
          "schemaType": [
            "fromJson"
          ]
        }
      }
    },
    {
      "displayName": "Input Schema",
      "name": "inputSchema",
      "type": "json",
      "default": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"state\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"cities\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t}\n\t}\n}",
      "description": "Schema to use for the function",
      "displayOptions": {
        "show": {
          "schemaType": [
            "manual"
          ]
        }
      },
      "typeOptions": {
        "rows": 10
      },
      "noDataExpression": false
    },
    {
      "displayName": "JSON Schema",
      "name": "jsonSchema",
      "type": "json",
      "default": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"state\": {\n      \"type\": \"string\"\n    },\n    \"cities\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    }\n  }\n}",
      "description": "JSON Schema to structure and validate the output against",
      "required": true,
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "lte": 1.1
              }
            }
          ]
        }
      },
      "typeOptions": {
        "rows": 10
      }
    },
    {
      "displayName": "Auto-Fix Format",
      "name": "autoFix",
      "type": "boolean",
      "default": false,
      "description": "Whether to automatically fix the output when it is not in the correct format. Will cause another LLM call."
    },
    {
      "displayName": "Customize Retry Prompt",
      "name": "customizeRetryPrompt",
      "type": "boolean",
      "default": false,
      "description": "Whether to customize the prompt used for retrying the output parsing. If disabled, a default prompt will be used.",
      "displayOptions": {
        "show": {
          "autoFix": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Custom Prompt",
      "name": "prompt",
      "type": "string",
      "default": "Instructions:\n--------------\n{instructions}\n--------------\nCompletion:\n--------------\n{completion}\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\n{error}\n--------------\n\nPlease try again. Please only respond with an answer that satisfies the constraints laid out in the Instructions:",
      "description": "Prompt template used for fixing the output. Uses placeholders: \"{instructions}\" for parsing rules, \"{completion}\" for the failed attempt, and \"{error}\" for the validation error message.",
      "displayOptions": {
        "show": {
          "autoFix": [
            true
          ],
          "customizeRetryPrompt": [
            true
          ]
        }
      },
      "typeOptions": {
        "rows": 10
      }
    }
  ]


node_type: nodes-langchain.rerankerCohere
package_name: @n8n/n8n-nodes-langchain
display_name: Reranker Cohere
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "cohereApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_reranker"
  ]

output_names:
  [
  "Reranker"
  ]

updated_at: 2025-11-03 20:57:27
description:
  Use Cohere Reranker to reorder documents after retrieval from a vector store by relevance to the given query.

documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Reranker Cohere
  description: Learn how to use the Reranker Cohere node in n8n. Follow technical documentation to integrate Cohere reranking into your workflows.
  contentType: [integration, reference]
  ---

  # Reranker Cohere

  The Reranker Cohere node allows you to [rerank](/glossary.md#ai-reranking) the resulting chunks from a [vector store](/glossary.md#ai-vector-store). You can connect this node to a vector store.

  The reranker reorders the list of documents retrieved from a vector store for a given query in order of descending relevance.

  On this page, you'll find the node parameters for the Reranker Cohere node, and links to more resources.

  ///  note  | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/cohere.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  ### Model

  Choose the reranking model to use. You can find out more about the available models in [Cohere's model documentation](https://docs.cohere.com/docs/models#rerank).

  ## Related resources

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "Model",
      "name": "modelName",
      "type": "options",
      "default": "rerank-v3.5",
      "description": "The model that should be used to rerank the documents. <a href=\"https://docs.cohere.com/docs/models\">Learn more</a>.",
      "options": [
        {
          "name": "rerank-v3.5",
          "value": "rerank-v3.5"
        },
        {
          "name": "rerank-english-v3.0",
          "value": "rerank-english-v3.0"
        },
        {
          "name": "rerank-multilingual-v3.0",
          "value": "rerank-multilingual-v3.0"
        }
      ]
    },
    {
      "displayName": "Top N",
      "name": "topN",
      "type": "number",
      "default": 3,
      "description": "The maximum number of documents to return after reranking"
    }
  ]


node_type: nodes-langchain.retrieverContextualCompression
package_name: @n8n/n8n-nodes-langchain
display_name: Contextual Compression Retriever
description: Enhances document similarity search by contextual compression.
category: transform
development_style: programmatic
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  {
  "displayName": "Retriever",
  "maxConnections": 1,
  "type": "ai_retriever"
  }
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Contextual Compression Retriever node documentation
  description: Learn how to use the Contextual Compression Retriever node in n8n. Follow technical documentation to integrate Contextual Compression Retriever node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Contextual Compression Retriever node

  The Contextual Compression Retriever node improves the answers returned from [vector store](/glossary.md#ai-vector-store) document similarity searches by taking into account the context from the query.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'contextual-compression-retriever') ]]

  ## Related resources

  Refer to [LangChain's contextual compression retriever documentation](https://js.langchain.com/docs/how_to/contextual_compression/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"


node_type: nodes-langchain.retrieverVectorStore
package_name: @n8n/n8n-nodes-langchain
display_name: Vector Store Retriever
description: Use a Vector Store as Retriever
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  "ai_retriever"
  ]

output_names:
  [
  "Retriever"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Vector Store Retriever node documentation
  description: Learn how to use the Vector Store Retriever node in n8n. Follow technical documentation to integrate Vector Store Retriever node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Vector Store Retriever node

  Use the Vector Store Retriever node to retrieve documents from a [vector store](/glossary.md#ai-vector-store).

  On this page, you'll find the node parameters for the Vector Store Retriever node, and links to more resources.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Limit**: Enter the maximum number of results to return.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'vector-store-retriever') ]]

  ## Related resources

  Refer to [LangChain's vector store retriever documentation](https://js.langchain.com/docs/how_to/vectorstore_retriever/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "Limit",
      "name": "topK",
      "type": "number",
      "default": 4,
      "description": "The maximum number of results to return"
    }
  ]


node_type: nodes-langchain.retrieverMultiQuery
package_name: @n8n/n8n-nodes-langchain
display_name: MultiQuery Retriever
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  {
  "displayName": "Retriever",
  "maxConnections": 1,
  "type": "ai_retriever"
  }
  ]

updated_at: 2025-11-03 20:57:27
description:
  Automates prompt tuning, generates diverse queries and expands document pool for enhanced retrieval.

documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: MultiQuery Retriever node documentation
  description: Learn how to use the MultiQuery Retriever node in n8n. Follow technical documentation to integrate MultiQuery Retriever node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # MultiQuery Retriever node

  The MultiQuery Retriever node automates the process of prompt tuning by using an LLM to generate multiple queries from different perspectives for a given user input query.

  On this page, you'll find the node parameters for the MultiQuery Retriever node, and links to more resources.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node options

  * **Query Count**: Enter how many different versions of the query to generate.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'multiquery-retriever') ]]

  ## Related resources

  Refer to [LangChain's retriever conceptual documentation](https://js.langchain.com/docs/concepts/retrievers){:target=_blank .external-link} and [LangChain's multiquery retriever API documentation](https://v03.api.js.langchain.com/classes/langchain.retrievers_multi_query.MultiQueryRetriever.html){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Query Count",
          "name": "queryCount",
          "default": 3,
          "typeOptions": {
            "minValue": 1
          },
          "description": "Number of different versions of the given question to generate",
          "type": "number"
        }
      ]
    }
  ]


node_type: nodes-langchain.retrieverWorkflow
package_name: @n8n/n8n-nodes-langchain
display_name: Workflow Retriever
description: Use an n8n Workflow as Retriever
category: transform
development_style: programmatic
version: 1.1
operations: []
credentials_required: []
outputs:
  [
  {
  "displayName": "Retriever",
  "maxConnections": 1,
  "type": "ai_retriever"
  }
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Workflow Retriever node documentation
  description: Learn how to use the Workflow Retriever node in n8n. Follow technical documentation to integrate Workflow Retriever node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Workflow Retriever node

  Use the Workflow Retriever node to retrieve data from an n8n workflow for use in a Retrieval QA Chain or another Retriever node.

  On this page, you'll find the node parameters for the Workflow Retriever node, and links to more resources.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  ### Source

  Tell n8n which workflow to call. You can choose either:

  * **Database** and enter a workflow ID.
  * **Parameter** and copy in a complete [workflow JSON](/workflows/export-import.md).

  ### Workflow values

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-sub-nodes/workflow-values.md"

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'workflow-retriever') ]]

  ## Related resources

  Refer to [LangChain's general retriever documentation](https://js.langchain.com/docs/concepts/retrievers/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "The workflow will receive \"query\" as input and the output of the last node will be returned and converted to Documents",
      "name": "executeNotice",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "Source",
      "name": "source",
      "type": "options",
      "default": "database",
      "description": "Where to get the workflow to execute from",
      "options": [
        {
          "name": "Database",
          "value": "database",
          "description": "Load the workflow from the database by ID"
        },
        {
          "name": "Parameter",
          "value": "parameter",
          "description": "Load the workflow from a parameter"
        }
      ]
    },
    {
      "displayName": "Workflow ID",
      "name": "workflowId",
      "type": "string",
      "default": "",
      "description": "The workflow to execute",
      "required": true,
      "displayOptions": {
        "show": {
          "source": [
            "database"
          ],
          "@version": [
            {
              "_cnd": {
                "eq": 1
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Workflow",
      "name": "workflowId",
      "type": "workflowSelector",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "source": [
            "database"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.1
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Workflow JSON",
      "name": "workflowJson",
      "type": "json",
      "default": "\n\n\n",
      "description": "The workflow JSON code to execute",
      "required": true,
      "displayOptions": {
        "show": {
          "source": [
            "parameter"
          ]
        }
      },
      "typeOptions": {
        "rows": 10
      }
    },
    {
      "displayName": "Workflow Values",
      "name": "fields",
      "type": "fixedCollection",
      "default": {},
      "description": "Set the values which should be made available in the workflow",
      "options": [
        {
          "name": "values",
          "displayName": "Values",
          "values": [
            {
              "displayName": "Name",
              "name": "name",
              "type": "string",
              "default": "",
              "placeholder": "e.g. fieldName",
              "description": "Name of the field to set the value of. Supports dot-notation. Example: data.person[0].name.",
              "requiresDataPath": "single"
            },
            {
              "displayName": "Type",
              "name": "type",
              "type": "options",
              "description": "The field value type",
              "options": [
                {
                  "name": "String",
                  "value": "stringValue"
                },
                {
                  "name": "Number",
                  "value": "numberValue"
                },
                {
                  "name": "Boolean",
                  "value": "booleanValue"
                },
                {
                  "name": "Array",
                  "value": "arrayValue"
                },
                {
                  "name": "Object",
                  "value": "objectValue"
                }
              ],
              "default": "stringValue"
            },
            {
              "displayName": "Value",
              "name": "stringValue",
              "type": "string",
              "default": "",
              "displayOptions": {
                "show": {
                  "type": [
                    "stringValue"
                  ]
                }
              },
              "validateType": "string",
              "ignoreValidationDuringExecution": true
            },
            {
              "displayName": "Value",
              "name": "numberValue",
              "type": "string",
              "default": "",
              "displayOptions": {
                "show": {
                  "type": [
                    "numberValue"
                  ]
                }
              },
              "validateType": "number",
              "ignoreValidationDuringExecution": true
            },
            {
              "displayName": "Value",
              "name": "booleanValue",
              "type": "options",
              "default": "true",
              "options": [
                {
                  "name": "True",
                  "value": "true"
                },
                {
                  "name": "False",
                  "value": "false"
                }
              ],
              "displayOptions": {
                "show": {
                  "type": [
                    "booleanValue"
                  ]
                }
              },
              "validateType": "boolean",
              "ignoreValidationDuringExecution": true
            },
            {
              "displayName": "Value",
              "name": "arrayValue",
              "type": "string",
              "default": "",
              "placeholder": "e.g. [ arrayItem1, arrayItem2, arrayItem3 ]",
              "displayOptions": {
                "show": {
                  "type": [
                    "arrayValue"
                  ]
                }
              },
              "validateType": "array",
              "ignoreValidationDuringExecution": true
            },
            {
              "displayName": "Value",
              "name": "objectValue",
              "type": "json",
              "default": "={}",
              "typeOptions": {
                "rows": 2
              },
              "displayOptions": {
                "show": {
                  "type": [
                    "objectValue"
                  ]
                }
              },
              "validateType": "object",
              "ignoreValidationDuringExecution": true
            }
          ]
        }
      ],
      "typeOptions": {
        "multipleValues": true,
        "sortable": true
      }
    }
  ]


node_type: nodes-langchain.textSplitterCharacterTextSplitter
package_name: @n8n/n8n-nodes-langchain
display_name: Character Text Splitter
description: Split text into chunks by characters
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  "ai_textSplitter"
  ]

output_names:
  [
  "Text Splitter"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Character Text Splitter node documentation
  description: Learn how to use the Character Text Splitter node in n8n. Follow technical documentation to integrate Character Text Splitter node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Character Text Splitter node

  Use the Character Text Splitter node to split document data based on characters.

  On this page, you'll find the node parameters for the Character Text Splitter node, and links to more resources.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Separator**: Select the separator used to split the document into separate items.
  * **Chunk Size**: Enter the number of characters in each chunk.
  * **Chunk Overlap**: Enter how much overlap to have between chunks.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'character-text-splitter') ]]

  ## Related resources

  Refer to [LangChain's text splitter documentation](https://js.langchain.com/docs/concepts/text_splitters){:target=_blank .external-link} and [LangChain's API documentation for character text splitting](https://v03.api.js.langchain.com/classes/langchain.text_splitter.CharacterTextSplitter.html){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to a document loader. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_document'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Separator",
      "name": "separator",
      "type": "string",
      "default": ""
    },
    {
      "displayName": "Chunk Size",
      "name": "chunkSize",
      "type": "number",
      "default": 1000,
      "description": "Maximum number of characters per chunk"
    },
    {
      "displayName": "Chunk Overlap",
      "name": "chunkOverlap",
      "type": "number",
      "default": 0,
      "description": "Number of characters shared between consecutive chunks to preserve context"
    }
  ]


node_type: nodes-langchain.textSplitterRecursiveCharacterTextSplitter
package_name: @n8n/n8n-nodes-langchain
display_name: Recursive Character Text Splitter
description: Split text into chunks by characters recursively, recommended for most use cases
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  "ai_textSplitter"
  ]

output_names:
  [
  "Text Splitter"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Recursive Character Text Splitter node documentation
  description: Learn how to use the Recursive Character Text Splitter node in n8n. Follow technical documentation to integrate Recursive Character Text Splitter node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Recursive Character Text Splitter node

  The Recursive Character Text Splitter node splits document data recursively to keep all paragraphs, sentences then words together as long as possible.

  On this page, you'll find the node parameters for the Recursive Character Text Splitter node, and links to more resources.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Chunk Size**: Enter the number of characters in each chunk.
  * **Chunk Overlap**: Enter how much overlap to have between chunks.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'recursive-character-text-splitter') ]]

  ## Related resources

  Refer to [LangChain's text splitter documentation](https://js.langchain.com/docs/concepts/text_splitters){:target=_blank .external-link} and [LangChain's recursively split by character documentation](https://v03.api.js.langchain.com/classes/langchain.text_splitter.RecursiveCharacterTextSplitter.html){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to a document loader. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_document'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Chunk Size",
      "name": "chunkSize",
      "type": "number",
      "default": 1000
    },
    {
      "displayName": "Chunk Overlap",
      "name": "chunkOverlap",
      "type": "number",
      "default": 0
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Additional options to add",
      "options": [
        {
          "displayName": "Split Code",
          "name": "splitCode",
          "default": "markdown",
          "type": "options",
          "options": [
            {
              "name": "cpp",
              "value": "cpp"
            },
            {
              "name": "go",
              "value": "go"
            },
            {
              "name": "java",
              "value": "java"
            },
            {
              "name": "js",
              "value": "js"
            },
            {
              "name": "php",
              "value": "php"
            },
            {
              "name": "proto",
              "value": "proto"
            },
            {
              "name": "python",
              "value": "python"
            },
            {
              "name": "rst",
              "value": "rst"
            },
            {
              "name": "ruby",
              "value": "ruby"
            },
            {
              "name": "rust",
              "value": "rust"
            },
            {
              "name": "scala",
              "value": "scala"
            },
            {
              "name": "swift",
              "value": "swift"
            },
            {
              "name": "markdown",
              "value": "markdown"
            },
            {
              "name": "latex",
              "value": "latex"
            },
            {
              "name": "html",
              "value": "html"
            }
          ]
        }
      ]
    }
  ]


node_type: nodes-langchain.textSplitterTokenSplitter
package_name: @n8n/n8n-nodes-langchain
display_name: Token Splitter
description: Split text into chunks by tokens
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  "ai_textSplitter"
  ]

output_names:
  [
  "Text Splitter"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Token Splitter node documentation
  description: Learn how to use the Token Splitter node in n8n. Follow technical documentation to integrate Token Splitter node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Token Splitter node

  The Token Splitter node splits a raw text string by first converting the text into BPE tokens, then splits these tokens into chunks and converts the tokens within a single chunk back into text.

  On this page, you'll find the node parameters for the Token Splitter node, and links to more resources.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Chunk Size**: Enter the number of characters in each chunk.
  * **Chunk Overlap**: Enter how much overlap to have between chunks.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'token-splitter') ]]

  ## Related resources

  Refer to [LangChain's token documentation](https://js.langchain.com/docs/concepts/tokens/){:target=_blank .external-link} and [LangChain's text splitter documentation](https://js.langchain.com/docs/concepts/text_splitters/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to a document loader. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_document'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Chunk Size",
      "name": "chunkSize",
      "type": "number",
      "default": 1000,
      "description": "Maximum number of tokens per chunk"
    },
    {
      "displayName": "Chunk Overlap",
      "name": "chunkOverlap",
      "type": "number",
      "default": 0,
      "description": "Number of tokens shared between consecutive chunks to preserve context"
    }
  ]


node_type: nodes-langchain.toolCalculator
package_name: @n8n/n8n-nodes-langchain
display_name: Calculator
description: Make it easier for AI agents to perform arithmetic
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  "ai_tool"
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Calculator node documentation
  description: Learn how to use the Calculator node in n8n. Follow technical documentation to integrate Calculator node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # Calculator node

  The Calculator node is a [tool](/glossary.md#ai-tool) that allows an [agent](/glossary.md#ai-agent) to run mathematical calculations.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'calculator') ]]

  ## Related resources

  --8<-- "_snippets/integrations/builtin/cluster-nodes/tools-link.md"

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    }
  ]


node_type: nodes-langchain.toolCode
package_name: @n8n/n8n-nodes-langchain
display_name: Code Tool
description: Write a tool in JS or Python
category: transform
development_style: programmatic
version: 1.3
operations: []
credentials_required: []
outputs:
  [
  "ai_tool"
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Custom Code Tool node documentation
  description: Learn how to use the Custom Code Tool node in n8n. Follow technical documentation to integrate Custom Code Tool node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # Custom Code Tool node

  Use the Custom Code Tool node to write code that an [agent](/glossary.md#ai-agent) can run.

  On this page, you'll find the node parameters for the Custom Code Tool node and links to more resources.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  ### Description

  Give your custom code a description. This tells the agent when to use this tool. For example:

  > Call this tool to get a random color. The input should be a string with comma separated names of colors to exclude.

  ### Language

  You can use JavaScript or Python.

  ### JavaScript / Python box

  Write the code here.

  You can access the tool input using `query`. For example, to take the input string and lowercase it:

  ```js
  let myString = query;
  return myString.toLowerCase();
  ```

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'code-tool') ]]

  ## Related resources

  --8<-- "_snippets/integrations/builtin/cluster-nodes/tools-link.md"

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "See an example of a conversational agent with custom tool written in JavaScript <a href=\"/templates/1963\" target=\"_blank\">here</a>.",
      "name": "noticeTemplateExample",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "displayOptions": {
        "show": {
          "@version": [
            1
          ]
        }
      }
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "The name of the function to be called, could contain letters, numbers, and underscores only",
      "displayOptions": {
        "show": {
          "@version": [
            1.1
          ]
        }
      }
    },
    {
      "displayName": "Description",
      "name": "description",
      "type": "string",
      "default": "",
      "typeOptions": {
        "rows": 3
      }
    },
    {
      "displayName": "Language",
      "name": "language",
      "type": "options",
      "default": "javaScript",
      "options": [
        {
          "name": "JavaScript",
          "value": "javaScript"
        },
        {
          "name": "Python (Beta)",
          "value": "python"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "JavaScript",
      "name": "jsCode",
      "type": "string",
      "default": "// Example: convert the incoming query to uppercase and return it\nreturn query.toUpperCase()",
      "description": "E.g. Converts any text to uppercase",
      "displayOptions": {
        "show": {
          "language": [
            "javaScript"
          ]
        }
      },
      "typeOptions": {
        "editor": "jsEditor"
      },
      "noDataExpression": true
    },
    {
      "displayName": "Python",
      "name": "pythonCode",
      "type": "string",
      "default": "# Example: convert the incoming query to uppercase and return it\nreturn query.upper()",
      "description": "E.g. Converts any text to uppercase",
      "displayOptions": {
        "show": {
          "language": [
            "python"
          ]
        }
      },
      "typeOptions": {
        "editor": "codeNodeEditor",
        "editorLanguage": "python"
      },
      "noDataExpression": true
    },
    {
      "displayName": "Specify Input Schema",
      "name": "specifyInputSchema",
      "type": "boolean",
      "default": false,
      "description": "Whether to specify the schema for the function. This would require the LLM to provide the input in the correct format and would validate it against the schema.",
      "noDataExpression": true
    },
    {
      "displayName": "Schema Type",
      "name": "schemaType",
      "type": "options",
      "default": "fromJson",
      "description": "How to specify the schema for the function",
      "options": [
        {
          "name": "Generate From JSON Example",
          "value": "fromJson",
          "description": "Generate a schema from an example JSON object"
        },
        {
          "name": "Define using JSON Schema",
          "value": "manual",
          "description": "Define the JSON schema manually"
        }
      ],
      "displayOptions": {
        "show": {
          "specifyInputSchema": [
            true
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "JSON Example",
      "name": "jsonSchemaExample",
      "type": "json",
      "default": "{\n\t\"some_input\": \"some_value\"\n}",
      "description": "Example JSON object to use to generate the schema",
      "displayOptions": {
        "show": {
          "specifyInputSchema": [
            true
          ],
          "schemaType": [
            "fromJson"
          ]
        }
      },
      "typeOptions": {
        "rows": 10
      },
      "noDataExpression": true
    },
    {
      "displayName": "All properties will be required. To make them optional, use the 'JSON Schema' schema type instead",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "specifyInputSchema": [
            true
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.3
              }
            }
          ],
          "schemaType": [
            "fromJson"
          ]
        }
      }
    },
    {
      "displayName": "Input Schema",
      "name": "inputSchema",
      "type": "json",
      "default": "{\n\"type\": \"object\",\n\"properties\": {\n\t\"some_input\": {\n\t\t\"type\": \"string\",\n\t\t\"description\": \"Some input to the function\"\n\t\t}\n\t}\n}",
      "description": "Schema to use for the function",
      "displayOptions": {
        "show": {
          "specifyInputSchema": [
            true
          ],
          "schemaType": [
            "manual"
          ]
        }
      },
      "typeOptions": {
        "rows": 10
      },
      "noDataExpression": false
    }
  ]


node_type: nodes-langchain.toolHttpRequest
package_name: @n8n/n8n-nodes-langchain
display_name: HTTP Request Tool
description: Makes an HTTP request and returns the response data
category: output
development_style: programmatic
version: 1.1
operations: []
credentials_required: []
outputs:
  [
  "ai_tool"
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: HTTP Request Tool node documentation
  description: Learn how to use the HTTP Request Tool node in n8n. Follow technical documentation to integrate HTTP Request Tool node into your workflows.
  search:
    exclude: true
  contentType: [integration, reference]
  ---

  # HTTP Request Tool node

  /// warning | Legacy tool version
  New instances of the HTTP Request tool node that you add to workflows use the standard [HTTP Request](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/index.md) node as a tool. This page is describes the legacy, standalone HTTP Request tool node.

  You can identify which tool version is in your workflow by checking if the node has an **Add option** property when you open the node on the canvas. If that button is present, you're using the new version, not the one described on this page.
  ///

  The HTTP Request tool works just like the [HTTP Request](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/index.md) node, but it's designed to be used with an [AI agent](/glossary.md#ai-agent) as a tool to collect information from a website or API.

  On this page, you'll find a list of operations the HTTP Request node supports and links to more resources.

  /// note | Credentials
  Refer to [HTTP Request credentials](/integrations/builtin/credentials/httprequest.md) for guidance on setting up authentication. 
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'http-request-tool') ]]

  ## Related resources

  --8<-- "_snippets/integrations/builtin/cluster-nodes/tools-link.md"

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Description",
      "name": "toolDescription",
      "type": "string",
      "default": "",
      "description": "Explain to LLM what this tool does, better description would allow LLM to produce expected result",
      "typeOptions": {
        "rows": 3
      }
    },
    {
      "displayName": "Method",
      "name": "method",
      "type": "options",
      "default": "GET",
      "options": [
        {
          "name": "DELETE",
          "value": "DELETE"
        },
        {
          "name": "GET",
          "value": "GET"
        },
        {
          "name": "PATCH",
          "value": "PATCH"
        },
        {
          "name": "POST",
          "value": "POST"
        },
        {
          "name": "PUT",
          "value": "PUT"
        }
      ]
    },
    {
      "displayName": "Tip: You can use a {placeholder} for any part of the request to be filled by the model. Provide more context about them in the placeholders section",
      "name": "placeholderNotice",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "URL",
      "name": "url",
      "type": "string",
      "default": "",
      "required": true
    },
    {
      "displayName": "Authentication",
      "name": "authentication",
      "type": "options",
      "default": "none",
      "description": "Select the type of authentication to use if needed, authentication would be done by n8n and your credentials will not be shared with the LLM",
      "options": [
        {
          "name": "None",
          "value": "none"
        },
        {
          "name": "Predefined Credential Type",
          "value": "predefinedCredentialType",
          "description": "We've already implemented auth for many services so that you don't have to set it up manually"
        },
        {
          "name": "Generic Credential Type",
          "value": "genericCredentialType",
          "description": "Fully customizable. Choose between basic, header, OAuth2, etc."
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Credential Type",
      "name": "nodeCredentialType",
      "type": "credentialsSelect",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "predefinedCredentialType"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Make sure you have specified the scope(s) for the Service Account in the credential",
      "name": "googleApiWarning",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "nodeCredentialType": [
            "googleApi"
          ]
        }
      }
    },
    {
      "displayName": "Generic Auth Type",
      "name": "genericAuthType",
      "type": "credentialsSelect",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "genericCredentialType"
          ]
        }
      }
    },
    {
      "displayName": "Send Query Parameters",
      "name": "sendQuery",
      "type": "boolean",
      "default": false,
      "description": "Whether the request has query params or not",
      "noDataExpression": true
    },
    {
      "displayName": "Specify Query Parameters",
      "name": "specifyQuery",
      "type": "options",
      "default": "keypair",
      "options": [
        {
          "name": "Using Fields Below",
          "value": "keypair"
        },
        {
          "name": "Using JSON Below",
          "value": "json"
        },
        {
          "name": "Let Model Specify Entire Body",
          "value": "model"
        }
      ],
      "displayOptions": {
        "show": {
          "sendQuery": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Query Parameters",
      "name": "parametersQuery",
      "type": "fixedCollection",
      "default": {
        "values": [
          {
            "name": ""
          }
        ]
      },
      "options": [
        {
          "name": "values",
          "displayName": "Values",
          "values": [
            {
              "displayName": "Name",
              "name": "name",
              "type": "string",
              "default": ""
            },
            {
              "displayName": "Value Provided",
              "name": "valueProvider",
              "type": "options",
              "options": [
                {
                  "name": "By Model (and is required)",
                  "value": "modelRequired"
                },
                {
                  "name": "By Model (but is optional)",
                  "value": "modelOptional"
                },
                {
                  "name": "Using Field Below",
                  "value": "fieldValue"
                }
              ],
              "default": "modelRequired"
            },
            {
              "displayName": "Value",
              "name": "value",
              "type": "string",
              "default": "",
              "hint": "Use a {placeholder} for any data to be filled in by the model",
              "displayOptions": {
                "show": {
                  "valueProvider": [
                    "fieldValue"
                  ]
                }
              }
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "sendQuery": [
            true
          ],
          "specifyQuery": [
            "keypair"
          ]
        }
      },
      "typeOptions": {
        "multipleValues": true
      }
    },
    {
      "displayName": "JSON",
      "name": "jsonQuery",
      "type": "string",
      "default": "",
      "displayOptions": {
        "show": {
          "sendQuery": [
            true
          ],
          "specifyQuery": [
            "json"
          ]
        }
      },
      "typeOptions": {
        "rows": 5
      }
    },
    {
      "displayName": "Send Headers",
      "name": "sendHeaders",
      "type": "boolean",
      "default": false,
      "description": "Whether the request has headers or not",
      "noDataExpression": true
    },
    {
      "displayName": "Specify Headers",
      "name": "specifyHeaders",
      "type": "options",
      "default": "keypair",
      "options": [
        {
          "name": "Using Fields Below",
          "value": "keypair"
        },
        {
          "name": "Using JSON Below",
          "value": "json"
        },
        {
          "name": "Let Model Specify Entire Body",
          "value": "model"
        }
      ],
      "displayOptions": {
        "show": {
          "sendHeaders": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Header Parameters",
      "name": "parametersHeaders",
      "type": "fixedCollection",
      "default": {
        "values": [
          {
            "name": ""
          }
        ]
      },
      "options": [
        {
          "name": "values",
          "displayName": "Values",
          "values": [
            {
              "displayName": "Name",
              "name": "name",
              "type": "string",
              "default": ""
            },
            {
              "displayName": "Value Provided",
              "name": "valueProvider",
              "type": "options",
              "options": [
                {
                  "name": "By Model (and is required)",
                  "value": "modelRequired"
                },
                {
                  "name": "By Model (but is optional)",
                  "value": "modelOptional"
                },
                {
                  "name": "Using Field Below",
                  "value": "fieldValue"
                }
              ],
              "default": "modelRequired"
            },
            {
              "displayName": "Value",
              "name": "value",
              "type": "string",
              "default": "",
              "hint": "Use a {placeholder} for any data to be filled in by the model",
              "displayOptions": {
                "show": {
                  "valueProvider": [
                    "fieldValue"
                  ]
                }
              }
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "sendHeaders": [
            true
          ],
          "specifyHeaders": [
            "keypair"
          ]
        }
      },
      "typeOptions": {
        "multipleValues": true
      }
    },
    {
      "displayName": "JSON",
      "name": "jsonHeaders",
      "type": "string",
      "default": "",
      "displayOptions": {
        "show": {
          "sendHeaders": [
            true
          ],
          "specifyHeaders": [
            "json"
          ]
        }
      },
      "typeOptions": {
        "rows": 5
      }
    },
    {
      "displayName": "Send Body",
      "name": "sendBody",
      "type": "boolean",
      "default": false,
      "description": "Whether the request has body or not",
      "noDataExpression": true
    },
    {
      "displayName": "Specify Body",
      "name": "specifyBody",
      "type": "options",
      "default": "keypair",
      "options": [
        {
          "name": "Using Fields Below",
          "value": "keypair"
        },
        {
          "name": "Using JSON Below",
          "value": "json"
        },
        {
          "name": "Let Model Specify Entire Body",
          "value": "model"
        }
      ],
      "displayOptions": {
        "show": {
          "sendBody": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Body Parameters",
      "name": "parametersBody",
      "type": "fixedCollection",
      "default": {
        "values": [
          {
            "name": ""
          }
        ]
      },
      "options": [
        {
          "name": "values",
          "displayName": "Values",
          "values": [
            {
              "displayName": "Name",
              "name": "name",
              "type": "string",
              "default": ""
            },
            {
              "displayName": "Value Provided",
              "name": "valueProvider",
              "type": "options",
              "options": [
                {
                  "name": "By Model (and is required)",
                  "value": "modelRequired"
                },
                {
                  "name": "By Model (but is optional)",
                  "value": "modelOptional"
                },
                {
                  "name": "Using Field Below",
                  "value": "fieldValue"
                }
              ],
              "default": "modelRequired"
            },
            {
              "displayName": "Value",
              "name": "value",
              "type": "string",
              "default": "",
              "hint": "Use a {placeholder} for any data to be filled in by the model",
              "displayOptions": {
                "show": {
                  "valueProvider": [
                    "fieldValue"
                  ]
                }
              }
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "sendBody": [
            true
          ],
          "specifyBody": [
            "keypair"
          ]
        }
      },
      "typeOptions": {
        "multipleValues": true
      }
    },
    {
      "displayName": "JSON",
      "name": "jsonBody",
      "type": "string",
      "default": "",
      "displayOptions": {
        "show": {
          "sendBody": [
            true
          ],
          "specifyBody": [
            "json"
          ]
        }
      },
      "typeOptions": {
        "rows": 5
      }
    },
    {
      "displayName": "Placeholder Definitions",
      "name": "placeholderDefinitions",
      "type": "fixedCollection",
      "default": [],
      "options": [
        {
          "name": "values",
          "displayName": "Values",
          "values": [
            {
              "displayName": "Placeholder Name",
              "name": "name",
              "type": "string",
              "default": ""
            },
            {
              "displayName": "Description",
              "name": "description",
              "type": "string",
              "default": ""
            },
            {
              "displayName": "Type",
              "name": "type",
              "type": "options",
              "options": [
                {
                  "name": "Not Specified (Default)",
                  "value": "not specified"
                },
                {
                  "name": "String",
                  "value": "string"
                },
                {
                  "name": "Number",
                  "value": "number"
                },
                {
                  "name": "Boolean",
                  "value": "boolean"
                },
                {
                  "name": "JSON",
                  "value": "json"
                }
              ],
              "default": "not specified"
            }
          ]
        }
      ],
      "typeOptions": {
        "multipleValues": true
      }
    },
    {
      "displayName": "Optimize Response",
      "name": "optimizeResponse",
      "type": "boolean",
      "default": false,
      "description": "Whether the optimize the tool response to reduce amount of data passed to the LLM that could lead to better result and reduce cost",
      "noDataExpression": true
    },
    {
      "displayName": "Expected Response Type",
      "name": "responseType",
      "type": "options",
      "default": "json",
      "options": [
        {
          "name": "JSON",
          "value": "json"
        },
        {
          "name": "HTML",
          "value": "html"
        },
        {
          "name": "Text",
          "value": "text"
        }
      ],
      "displayOptions": {
        "show": {
          "optimizeResponse": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Field Containing Data",
      "name": "dataField",
      "type": "string",
      "default": "",
      "description": "Specify the name of the field in the response containing the data",
      "displayOptions": {
        "show": {
          "optimizeResponse": [
            true
          ],
          "responseType": [
            "json"
          ]
        }
      }
    },
    {
      "displayName": "Include Fields",
      "name": "fieldsToInclude",
      "type": "options",
      "default": "all",
      "description": "What fields response object should include",
      "options": [
        {
          "name": "All",
          "value": "all",
          "description": "Include all fields"
        },
        {
          "name": "Selected",
          "value": "selected",
          "description": "Include only fields specified below"
        },
        {
          "name": "Except",
          "value": "except",
          "description": "Exclude fields specified below"
        }
      ],
      "displayOptions": {
        "show": {
          "optimizeResponse": [
            true
          ],
          "responseType": [
            "json"
          ]
        }
      }
    },
    {
      "displayName": "Fields",
      "name": "fields",
      "type": "string",
      "default": "",
      "description": "Comma-separated list of the field names. Supports dot notation. You can drag the selected fields from the input panel.",
      "displayOptions": {
        "show": {
          "optimizeResponse": [
            true
          ],
          "responseType": [
            "json"
          ]
        },
        "hide": {
          "fieldsToInclude": [
            "all"
          ]
        }
      }
    },
    {
      "displayName": "Selector (CSS)",
      "name": "cssSelector",
      "type": "string",
      "default": "body",
      "description": "Select specific element(e.g. body) or multiple elements(e.g. div) of chosen type in the response HTML.",
      "displayOptions": {
        "show": {
          "optimizeResponse": [
            true
          ],
          "responseType": [
            "html"
          ]
        }
      }
    },
    {
      "displayName": "Return Only Content",
      "name": "onlyContent",
      "type": "boolean",
      "default": false,
      "description": "Whether to return only content of html elements, stripping html tags and attributes",
      "displayOptions": {
        "show": {
          "optimizeResponse": [
            true
          ],
          "responseType": [
            "html"
          ]
        }
      }
    },
    {
      "displayName": "Elements To Omit",
      "name": "elementsToOmit",
      "type": "string",
      "default": "",
      "description": "Comma-separated list of selectors that would be excluded when extracting content",
      "displayOptions": {
        "show": {
          "optimizeResponse": [
            true
          ],
          "responseType": [
            "html"
          ],
          "onlyContent": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Truncate Response",
      "name": "truncateResponse",
      "type": "boolean",
      "default": false,
      "displayOptions": {
        "show": {
          "optimizeResponse": [
            true
          ],
          "responseType": [
            "text",
            "html"
          ]
        }
      }
    },
    {
      "displayName": "Max Response Characters",
      "name": "maxLength",
      "type": "number",
      "default": 1000,
      "displayOptions": {
        "show": {
          "optimizeResponse": [
            true
          ],
          "responseType": [
            "text",
            "html"
          ],
          "truncateResponse": [
            true
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    }
  ]


node_type: nodes-langchain.toolSearXng
package_name: @n8n/n8n-nodes-langchain
display_name: SearXNG
description: Search in SearXNG
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "searXngApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_tool"
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: SearXNG Tool node documentation
  description: Learn how to use the SearXNG Tool node in n8n. Follow technical documentation to integrate SearXNG Tool node into your workflows.
  contentType: [integration, reference]
  ---

  # SearXNG Tool node

  The SearXNG Tool node allows you to integrate search capabilities into your workflows using SearXNG. SearXNG aggregates results from multiple search engines without tracking you.

  On this page, you'll find the node options for the SearXNG Tool node, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/searxng.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node Options

  * **Number of Results**: The number of results to retrieve. The default is 10.
  * **Page Number**: The page number of the search results to retrieve. The default is 1.
  * **Language**: A two-letter [language code](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) to filter search results by language. For example: `en` for English, `fr` for French. The default is `en`.
  * **Safe Search**: Enables or disables filtering explicit content in the search results. Can be None, Moderate, or Strict. The default is None.

  ## Running a SearXNG instance

  This node requires running the SearXNG service on the same network as your n8n instance. Ensure your n8n instance has network access to the SearXNG service.

  This node requires results in JSON format, which isn't enabled in the default SearXNG configuration. To enable JSON output, add `json` to the `search.formats` section of your SearXNG instance's `settings.yml` file:

  ```yaml
  search:
    # options available for formats: [html, csv, json, rss]
    formats:
      - html
      - json
  ```

  If the `formats` section isn't there, add it. The exact location of the `settings.yml` file depends on how you installed SearXNG. You can find more by visiting the [SearXNG configuration documentation](https://docs.searxng.org/admin/installation-searxng.html#configuration).

  The quality and availability of search results depend on the configuration and health of the SearXNG instance you use. 

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'searxng') ]]

  ## Related resources

  Refer to [SearXNG's documentation](https://docs.searxng.org/) for more information about the service. You can also view [LangChain's documentation on their SearXNG integration](https://python.langchain.com/docs/integrations/tools/searx_search/).

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Number of Results",
          "name": "numResults",
          "type": "number",
          "default": 10
        },
        {
          "displayName": "Search Page Number",
          "name": "pageNumber",
          "type": "number",
          "default": 1
        },
        {
          "displayName": "Language",
          "name": "language",
          "type": "string",
          "default": "en",
          "description": "Defines the language to use. It's a two-letter language code. (e.g., `en` for English, `es` for Spanish, or `fr` for French). Head to <a href=\"https://docs.searxng.org/user/search-syntax.html#select-language\">SearXNG search syntax page</a> for more info."
        },
        {
          "displayName": "Safe Search",
          "name": "safesearch",
          "type": "options",
          "options": [
            {
              "name": "None",
              "value": 0
            },
            {
              "name": "Moderate",
              "value": 1
            },
            {
              "name": "Strict",
              "value": 2
            }
          ],
          "default": 0,
          "description": "Filter search results of engines which support safe search"
        }
      ]
    }
  ]


node_type: nodes-langchain.toolSerpApi
package_name: @n8n/n8n-nodes-langchain
display_name: SerpApi (Google Search)
description: Search in Google using SerpAPI
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "serpApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_tool"
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: SerpApi (Google Search) node documentation
  description: Learn how to use the SerpApi (Google Search) node in n8n. Follow technical documentation to integrate SerpApi (Google Search) node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # SerpApi (Google Search) node

  The SerpAPI node allows an [agent](/glossary.md#ai-agent) in your workflow to call Google's Search API.

  On this page, you'll find the node parameters for the SerpAPI node, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/serp.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node options

  * **Country**: Enter the country code you'd like to use. Refer to [Google GL Parameter: Supported Google Countries](https://serpapi.com/google-countries){:target=_blank .external-link} for supported countries and country codes.
  * **Device**: Select the device to use to get the search results.
  * **Explicit Array**: Choose whether to force SerpApi to fetch the Google results even if a cached version is already present (turned on) or not (turned off).
  * **Google Domain**: Enter the Google Domain to use. Refer to [Supported Google Domains](https://serpapi.com/google-domains) for supported domains.
  * **Language**: Enter the language code you'd like to use. Refer to [Google HL Parameter: Supported Google Languages](https://serpapi.com/google-languages){:target=_blank .external-link} for supported languages and language codes.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'serpapi') ]]

  ## Related resources

  Refer to [Serp's documentation](https://serpapi.com/search-api){:target=_blank .external-link} for more information about the service. You can also view [LangChain's documentation on their Serp integration](https://js.langchain.com/docs/integrations/tools/serpapi/){:target=_blank .external-link}.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Country",
          "name": "gl",
          "type": "string",
          "default": "us",
          "description": "Defines the country to use for search. Head to <a href=\"https://serpapi.com/google-countries\">Google countries page</a> for a full list of supported countries."
        },
        {
          "displayName": "Device",
          "name": "device",
          "type": "options",
          "options": [
            {
              "name": "Desktop",
              "value": "desktop"
            },
            {
              "name": "Mobile",
              "value": "mobile"
            },
            {
              "name": "Tablet",
              "value": "tablet"
            }
          ],
          "default": "desktop",
          "description": "Device to use to get the results"
        },
        {
          "displayName": "Explicit Array",
          "name": "no_cache",
          "type": "boolean",
          "default": false,
          "description": "Whether to force SerpApi to fetch the Google results even if a cached version is already present. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month."
        },
        {
          "displayName": "Google Domain",
          "name": "google_domain",
          "type": "string",
          "default": "google.com",
          "description": "Defines the domain to use for search. Head to <a href=\"https://serpapi.com/google-domains\">Google domains page</a> for a full list of supported domains."
        },
        {
          "displayName": "Language",
          "name": "hl",
          "type": "string",
          "default": "en",
          "description": "Defines the language to use. It's a two-letter language code. (e.g., `en` for English, `es` for Spanish, or `fr` for French). Head to <a href=\"https://serpapi.com/google-languages\">Google languages page</a> for a full list of supported languages."
        }
      ]
    }
  ]


node_type: nodes-langchain.toolThink
package_name: @n8n/n8n-nodes-langchain
display_name: Think Tool
description: Invite the AI agent to do some thinking
category: transform
development_style: programmatic
version: 1.1
operations: []
credentials_required: []
outputs:
  [
  "ai_tool"
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Think Tool node documentation
  description: Learn how to use the Think Tool node in n8n. Follow technical documentation to integrate the Tool Think node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Think Tool node

  The Think Tool node is a [tool](/glossary.md#ai-tool) that invites an [agent](/glossary.md#ai-agent) to do some thinking before answering. Essentially, it allows the agent to reflect on the question by talking to itself before providing an answer. In particular, this is useful for complex queries that require a thoughtful response.


  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'think-tool') ]]

  ### Prompting example

  As an example, say you ask the agent:

  <!-- vale off -->
  > *Jack is looking at Anne. Anne is looking at George. Jack is married, George is not, and we don't know if Anne is married. Is a married person looking at an unmarried person?*
  <!-- vale on -->
  	
  The agent will do its thinking with the tool:

  <!-- vale off -->
  > *We have the following information: 1. Jack is looking at Anne. 2. Anne is looking at George. 3. Jack is married. 4. George is not married. 5. We don't know if Anne is married or not.*

  > *We need to determine if a married person is looking at an unmarried person. Let's consider both cases for Anne:*

  > *Case 1: Anne is married.*

  > - *If Anne is married, then she (married) is looking at George (unmarried). In this case, a married person (Anne) is looking at an unmarried person (George).*

  > *Case 2: Anne is unmarried.*

  > - *If Anne is unmarried, then Jack (married) is looking at Anne (unmarried). In this case, a married person (Jack) is looking at an unmarried person (Anne).*

  > *In both scenarios, we find that a married person is looking at an unmarried person. Therefore, the answer to the question is yes.*
  <!-- vale on -->
  	
  and then afterward provide the answer:

  <!-- vale off -->
  > *Yes, a married person is looking at an unmarried person. In both possible scenarios regarding Anne's marital status, we find that a married individual (either Jack or Anne) is looking at an unmarried individual (either George or Anne).*
  <!-- vale on -->

  ## Related resources

  --8<-- "_snippets/integrations/builtin/cluster-nodes/tools-link.md"

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Think Tool Description",
      "name": "description",
      "type": "string",
      "default": "Use the tool to think about something. It will not obtain new information or change the database, but just append the thought to the log. Use it when complex reasoning or some cache memory is needed.",
      "description": "The thinking tool's description",
      "required": true,
      "typeOptions": {
        "rows": 3
      }
    }
  ]


node_type: nodes-langchain.toolVectorStore
package_name: @n8n/n8n-nodes-langchain
display_name: Vector Store Question Answer Tool
description: Answer questions with a vector store
category: transform
development_style: programmatic
version: 1.1
operations: []
credentials_required: []
outputs:
  [
  "ai_tool"
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Vector Store Question Answer Tool node documentation
  description: Learn how to use the Vector Store Question Answer Tool node in n8n. Follow technical documentation to integrate Vector Store Question Answer Tool node into your workflows.
  contentType: [integration, reference]
  ---

  # Vector Store Question Answer Tool node

  The Vector Store Question Answer node is a [tool](/glossary.md#ai-tool) that allows an [agent](/glossary.md#ai-agent) to summarize results and answer questions based on chunks from a [vector store](/glossary.md#ai-vector-store). 

  On this page, you'll find the node parameters for the Vector Store Question Answer node, and links to more resources.

  /// note | Examples and templates
  For usage examples and templates to help you get started, refer to n8n's [Vector Store Question Answer Tool integrations](https://n8n.io/integrations/vector-store-tool/){:target=_blank .external-link} page.
  ///	

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  ### Description of Data

  Enter a description of the data in the vector store.

  ### Limit

  The maximum number of results to return.

  ## How n8n populates the tool description

  n8n uses the node name (select the name to edit) and **Description of Data** parameter to populate the tool description for AI agents using the following format:

  > Useful for when you need to answer questions about [node name]. Whenever you need information about [Description of Data], you should ALWAYS use this. Input should be a fully formed question.

  Spaces in the node name are converted to underscores in the tool description.

  /// warning | Avoid special characters in node names
  Using special characters in the node name will cause errors when the agent runs:

  ![model errors from special characters](/_images/integrations/builtin/cluster-nodes/toolvectorstore/name-characters-error.png)

  Use only alphanumeric characters, spaces, dashes, and underscores in node names.
  ///

  ## Related resources

  View [example workflows and related content](https://n8n.io/integrations/vector-store-tool/){:target=_blank .external-link} on n8n's website.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/tools-link.md"

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Data Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "Name of the data in vector store. This will be used to fill this tool description: Useful for when you need to answer questions about [name]. Whenever you need information about [data description], you should ALWAYS use this. Input should be a fully formed question.",
      "displayOptions": {
        "show": {
          "@version": [
            1
          ]
        }
      }
    },
    {
      "displayName": "Description of Data",
      "name": "description",
      "type": "string",
      "default": "",
      "description": "Describe the data in vector store. This will be used to fill this tool description: Useful for when you need to answer questions about [name]. Whenever you need information about [data description], you should ALWAYS use this. Input should be a fully formed question.",
      "typeOptions": {
        "rows": 3
      }
    },
    {
      "displayName": "Limit",
      "name": "topK",
      "type": "number",
      "default": 4,
      "description": "The maximum number of results to return"
    }
  ]


node_type: nodes-langchain.toolWikipedia
package_name: @n8n/n8n-nodes-langchain
display_name: Wikipedia
description: Search in Wikipedia
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  "ai_tool"
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Wikipedia node documentation
  description: Learn how to use the Wikipedia node in n8n. Follow technical documentation to integrate Wikipedia node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Wikipedia node

  The Wikipedia node is a [tool](/glossary.md#ai-tool) that allows an [agent](/glossary.md#ai-agent) to search and return information from Wikipedia.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'wikipedia') ]]

  ## Related resources

  --8<-- "_snippets/integrations/builtin/cluster-nodes/tools-link.md"

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    }
  ]


node_type: nodes-langchain.toolWolframAlpha
package_name: @n8n/n8n-nodes-langchain
display_name: Wolfram|Alpha
description: Connects to WolframAlpha's computational intelligence engine.
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "wolframAlphaApi",
  "required": true
  }
  ]

outputs:
  [
  "ai_tool"
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Wolfram|Alpha tool node documentation
  description: Learn how to use the Wolfram|Alpha tool node in n8n. Follow technical documentation to integrate Wolfram|Alpha tool node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Wolfram|Alpha tool node

  Use the Wolfram|Alpha tool node to connect your [agents](/glossary.md#ai-agent) and [chains](/glossary.md#ai-chain) to Wolfram|Alpha's computational intelligence engine.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/wolframalpha.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'wolframoralpha') ]]

  ## Related resources

  Refer to [Wolfram|Alpha's documentation](https://products.wolframalpha.com/api){:target=_blank .external-link} for more information about the service. You can also view [LangChain's documentation on their WolframAlpha Tool](https://js.langchain.com/docs/integrations/tools/wolframalpha/){:target=_blank .external-link}.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    }
  ]


node_type: nodes-langchain.toolWorkflow
package_name: @n8n/n8n-nodes-langchain
display_name: Call n8n Sub-Workflow Tool
description: Uses another n8n workflow as a tool. Allows packaging any n8n node(s) as a tool.
category: transform
development_style: programmatic
version: 2.2
operations: []
credentials_required: []
outputs:
  [
  "ai_tool"
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Call n8n Workflow Tool node documentation
  description: Learn how to use the Call n8n Workflow Tool node in n8n. Follow technical documentation to integrate Call n8n Workflow Tool node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # Call n8n Workflow Tool node

  The Call n8n Workflow Tool node is a [tool](/glossary.md#ai-tool) that allows an [agent](/glossary.md#ai-agent) to run another n8n workflow and fetch its output data. 

  On this page, you'll find the node parameters for the Call n8n Workflow Tool node, and links to more resources.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  ### Description

  Enter a custom code a description. This tells the agent when to use this tool. For example:

  > Call this tool to get a random color. The input should be a string with comma separated names of colors to exclude.

  ### Source

  Tell n8n which workflow to call. You can choose either:

  * **Database** to select the workflow from a list or enter a workflow ID.
  * **Define Below** and copy in a complete [workflow JSON](/workflows/export-import.md).

  ### Workflow Inputs

  When using **Database** as workflow source, once you choose a sub-workflow (and define the **Workflow Input Schema** in the sub-workflow), you can define the **Workflow Inputs**.

  Select the **Refresh** button to pull in the input fields from the sub-workflow.

  You can define the workflow input values using any combination of the following options:

  * providing fixed values
  * using expressions to reference data from the current workflow
  * [letting the AI model specify the parameter](/advanced-ai/examples/using-the-fromai-function.md) by selecting the button AI button on the right side of the field
  * using the [`$fromAI()` function](/advanced-ai/examples/using-the-fromai-function.md#use-the-fromai-function) in expressions to control the way the model fills in data and to mix AI generated input with other custom input

  To reference data from the current workflow, drag fields from the input panel to the field with the Expressions mode selected.

  To get started with the `$fromAI()` function, select the "Let the model define this parameter" button on the right side of the field and then use the **X** on the box to revert to user-defined values. The field will change to an expression field pre-populated with the `$fromAI()` expression. From here, you can customize the expression to add other static or dynamic content, or tweak the `$fromAI()` function parameters.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'workflow-tool') ]]

  ## Related resources

  --8<-- "_snippets/integrations/builtin/cluster-nodes/tools-link.md"

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "See an example of a workflow to suggest meeting slots using AI <a href=\"/templates/1953\" target=\"_blank\">here</a>.",
      "name": "noticeTemplateExample",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "The name of the function to be called, could contain letters, numbers, and underscores only",
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "lte": 2.1
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Description",
      "name": "description",
      "type": "string",
      "default": "",
      "typeOptions": {
        "rows": 3
      }
    },
    {
      "displayName": "This tool will call the workflow you define below, and look in the last node for the response. The workflow needs to start with an Execute Workflow trigger",
      "name": "executeNotice",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "Source",
      "name": "source",
      "type": "options",
      "default": "database",
      "description": "Where to get the workflow to execute from",
      "options": [
        {
          "name": "Database",
          "value": "database",
          "description": "Load the workflow from the database by ID"
        },
        {
          "name": "Define Below",
          "value": "parameter",
          "description": "Pass the JSON code of a workflow"
        }
      ]
    },
    {
      "displayName": "Workflow",
      "name": "workflowId",
      "type": "workflowSelector",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "source": [
            "database"
          ]
        }
      }
    },
    {
      "displayName": "Workflow Inputs",
      "name": "workflowInputs",
      "type": "resourceMapper",
      "default": {
        "mappingMode": "defineBelow",
        "value": null
      },
      "required": true,
      "displayOptions": {
        "show": {
          "source": [
            "database"
          ]
        },
        "hide": {
          "workflowId": [
            ""
          ]
        }
      },
      "typeOptions": {
        "loadOptionsDependsOn": [
          "workflowId.value"
        ],
        "resourceMapper": {
          "localResourceMapperMethod": "loadSubWorkflowInputs",
          "valuesLabel": "Workflow Inputs",
          "mode": "map",
          "fieldWords": {
            "singular": "workflow input",
            "plural": "workflow inputs"
          },
          "addAllFields": true,
          "multiKeyMatch": false,
          "supportAutoMap": false
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Workflow JSON",
      "name": "workflowJson",
      "type": "json",
      "default": "\n\n\n\n\n\n\n\n\n",
      "description": "The workflow JSON code to execute",
      "required": true,
      "displayOptions": {
        "show": {
          "source": [
            "parameter"
          ]
        }
      },
      "typeOptions": {
        "rows": 10
      }
    }
  ]


node_type: nodes-langchain.manualChatTrigger
package_name: @n8n/n8n-nodes-langchain
display_name: Manual Chat Trigger
description: Runs the flow on new manual chat message
category: trigger
development_style: programmatic
version: 1.1
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2025-11-03 20:57:27
properties_schema:
  [
    {
      "displayName": "This node is where a manual chat workflow execution starts. To make one, go back to the canvas and click ‘Chat’",
      "name": "notice",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "Chat and execute workflow",
      "name": "openChat",
      "type": "button",
      "default": "",
      "typeOptions": {
        "buttonConfig": {
          "action": "openChat"
        }
      }
    }
  ]


node_type: nodes-langchain.chatTrigger
package_name: @n8n/n8n-nodes-langchain
display_name: Chat Trigger
description: Runs the workflow when an n8n generated webchat is submitted
category: trigger
development_style: programmatic
version: 1.3
operations: []
outputs:
  [
  "main"
  ]

updated_at: 2025-11-03 20:57:27
properties_schema:
  [
    {
      "displayName": "Make Chat Publicly Available",
      "name": "public",
      "type": "boolean",
      "default": false,
      "description": "Whether the chat should be publicly available or only accessible through the manual chat interface"
    },
    {
      "displayName": "Mode",
      "name": "mode",
      "type": "options",
      "default": "hostedChat",
      "options": [
        {
          "name": "Hosted Chat",
          "value": "hostedChat",
          "description": "Chat on a page served by n8n"
        },
        {
          "name": "Embedded Chat",
          "value": "webhook",
          "description": "Chat through a widget embedded in another page, or by calling a webhook"
        }
      ],
      "displayOptions": {
        "show": {
          "public": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Chat will be live at the URL above once you activate this workflow. Live executions will show up in the ‘executions’ tab",
      "name": "hostedChatNotice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "mode": [
            "hostedChat"
          ],
          "public": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Follow the instructions <a href=\"https://www.npmjs.com/package/@n8n/chat\" target=\"_blank\">here</a> to embed chat in a webpage (or just call the webhook URL at the top of this section). Chat will be live once you activate this workflow",
      "name": "embeddedChatNotice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "mode": [
            "webhook"
          ],
          "public": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Authentication",
      "name": "authentication",
      "type": "options",
      "default": "none",
      "description": "The way to authenticate",
      "options": [
        {
          "name": "Basic Auth",
          "value": "basicAuth",
          "description": "Simple username and password (the same one for all users)"
        },
        {
          "name": "n8n User Auth",
          "value": "n8nUserAuth",
          "description": "Require user to be logged in with their n8n account"
        },
        {
          "name": "None",
          "value": "none"
        }
      ],
      "displayOptions": {
        "show": {
          "public": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Initial Message(s)",
      "name": "initialMessages",
      "type": "string",
      "default": "Hi there! 👋\nMy name is Nathan. How can I assist you today?",
      "description": "Default messages shown at the start of the chat, one per line",
      "displayOptions": {
        "show": {
          "mode": [
            "hostedChat"
          ],
          "public": [
            true
          ]
        }
      },
      "typeOptions": {
        "rows": 3
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Allow File Uploads",
          "name": "allowFileUploads",
          "type": "boolean",
          "default": false,
          "description": "Whether to allow file uploads in the chat"
        },
        {
          "displayName": "Allowed File Mime Types",
          "name": "allowedFilesMimeTypes",
          "type": "string",
          "default": "*",
          "placeholder": "e.g. image/*, text/*, application/pdf",
          "description": "Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>."
        }
      ],
      "displayOptions": {
        "show": {
          "public": [
            false
          ],
          "@version": [
            1,
            1.1
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Allowed Origins (CORS)",
          "name": "allowedOrigins",
          "type": "string",
          "default": "*",
          "description": "Comma-separated list of URLs allowed for cross-origin non-preflight requests. Use * (default) to allow all origins.",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat",
                "webhook"
              ]
            }
          }
        },
        {
          "displayName": "Allow File Uploads",
          "name": "allowFileUploads",
          "type": "boolean",
          "default": false,
          "description": "Whether to allow file uploads in the chat",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          }
        },
        {
          "displayName": "Allowed File Mime Types",
          "name": "allowedFilesMimeTypes",
          "type": "string",
          "default": "*",
          "placeholder": "e.g. image/*, text/*, application/pdf",
          "description": "Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>.",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          }
        },
        {
          "displayName": "Input Placeholder",
          "name": "inputPlaceholder",
          "type": "string",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": "Type your question..",
          "placeholder": "e.g. Type your message here",
          "description": "Shown as placeholder text in the chat input field"
        },
        {
          "displayName": "Load Previous Session",
          "name": "loadPreviousSession",
          "type": "options",
          "options": [
            {
              "name": "Off",
              "value": "notSupported",
              "description": "Loading messages of previous session is turned off"
            },
            {
              "name": "From Memory",
              "value": "memory",
              "description": "Load session messages from memory"
            },
            {
              "name": "Manually",
              "value": "manually",
              "description": "Manually return messages of session"
            }
          ],
          "default": "notSupported",
          "description": "If loading messages of a previous session should be enabled"
        },
        {
          "displayName": "Require Button Click to Start Chat",
          "name": "showWelcomeScreen",
          "type": "boolean",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": false,
          "description": "Whether to show the welcome screen at the start of the chat"
        },
        {
          "displayName": "Start Conversation Button Text",
          "name": "getStarted",
          "type": "string",
          "displayOptions": {
            "show": {
              "showWelcomeScreen": [
                true
              ],
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": "New Conversation",
          "placeholder": "e.g. New Conversation",
          "description": "Shown as part of the welcome screen, in the middle of the chat window"
        },
        {
          "displayName": "Subtitle",
          "name": "subtitle",
          "type": "string",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": "Start a chat. We're here to help you 24/7.",
          "placeholder": "e.g. We're here for you",
          "description": "Shown at the top of the chat, under the title"
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": "Hi there! 👋",
          "placeholder": "e.g. Welcome",
          "description": "Shown at the top of the chat"
        },
        {
          "displayName": "Custom Chat Styling",
          "name": "customCss",
          "type": "string",
          "typeOptions": {
            "rows": 10,
            "editor": "cssEditor"
          },
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": ":root {\n  /* Colors */\n  --chat--color-primary: #e74266;\n  --chat--color-primary-shade-50: #db4061;\n  --chat--color-primary-shade-100: #cf3c5c;\n  --chat--color-secondary: #20b69e;\n  --chat--color-secondary-shade-50: #1ca08a;\n  --chat--color-white: #ffffff;\n  --chat--color-light: #f2f4f8;\n  --chat--color-light-shade-50: #e6e9f1;\n  --chat--color-light-shade-100: #c2c5cc;\n  --chat--color-medium: #d2d4d9;\n  --chat--color-dark: #101330;\n  --chat--color-disabled: #d2d4d9;\n  --chat--color-typing: #404040;\n\n  /* Base Layout */\n  --chat--spacing: 1rem;\n  --chat--border-radius: 0.25rem;\n  --chat--transition-duration: 0.15s;\n  --chat--font-family: (\n    -apple-system,\n    BlinkMacSystemFont,\n    'Segoe UI',\n    Roboto,\n    Oxygen-Sans,\n    Ubuntu,\n    Cantarell,\n    'Helvetica Neue',\n    sans-serif\n  );\n\n  /* Window Dimensions */\n  --chat--window--width: 400px;\n  --chat--window--height: 600px;\n  --chat--window--bottom: var(--chat--spacing);\n  --chat--window--right: var(--chat--spacing);\n  --chat--window--z-index: 9999;\n  --chat--window--border: 1px solid var(--chat--color-light-shade-50);\n  --chat--window--border-radius: var(--chat--border-radius);\n  --chat--window--margin-bottom: var(--chat--spacing);\n\n  /* Header Styles */\n  --chat--header-height: auto;\n  --chat--header--padding: var(--chat--spacing);\n  --chat--header--background: var(--chat--color-dark);\n  --chat--header--color: var(--chat--color-light);\n  --chat--header--border-top: none;\n  --chat--header--border-bottom: none;\n  --chat--header--border-left: none;\n  --chat--header--border-right: none;\n  --chat--heading--font-size: 2em;\n  --chat--subtitle--font-size: inherit;\n  --chat--subtitle--line-height: 1.8;\n\n  /* Message Styles */\n  --chat--message--font-size: 1rem;\n  --chat--message--padding: var(--chat--spacing);\n  --chat--message--border-radius: var(--chat--border-radius);\n  --chat--message-line-height: 1.5;\n  --chat--message--margin-bottom: calc(var(--chat--spacing) * 1);\n  --chat--message--bot--background: var(--chat--color-white);\n  --chat--message--bot--color: var(--chat--color-dark);\n  --chat--message--bot--border: none;\n  --chat--message--user--background: var(--chat--color-secondary);\n  --chat--message--user--color: var(--chat--color-white);\n  --chat--message--user--border: none;\n  --chat--message--pre--background: rgba(0, 0, 0, 0.05);\n  --chat--messages-list--padding: var(--chat--spacing);\n\n  /* Toggle Button */\n  --chat--toggle--size: 64px;\n  --chat--toggle--width: var(--chat--toggle--size);\n  --chat--toggle--height: var(--chat--toggle--size);\n  --chat--toggle--border-radius: 50%;\n  --chat--toggle--background: var(--chat--color-primary);\n  --chat--toggle--hover--background: var(--chat--color-primary-shade-50);\n  --chat--toggle--active--background: var(--chat--color-primary-shade-100);\n  --chat--toggle--color: var(--chat--color-white);\n\n  /* Input Area */\n  --chat--textarea--height: 50px;\n  --chat--textarea--max-height: 30rem;\n  --chat--input--font-size: inherit;\n  --chat--input--border: 0;\n  --chat--input--border-radius: 0;\n  --chat--input--padding: 0.8rem;\n  --chat--input--background: var(--chat--color-white);\n  --chat--input--text-color: initial;\n  --chat--input--line-height: 1.5;\n  --chat--input--placeholder--font-size: var(--chat--input--font-size);\n  --chat--input--border-active: 0;\n  --chat--input--left--panel--width: 2rem;\n\n  /* Button Styles */\n  --chat--button--color: var(--chat--color-light);\n  --chat--button--background: var(--chat--color-primary);\n  --chat--button--padding: calc(var(--chat--spacing) * 1 / 2) var(--chat--spacing);\n  --chat--button--border-radius: var(--chat--border-radius);\n  --chat--button--hover--color: var(--chat--color-light);\n  --chat--button--hover--background: var(--chat--color-primary-shade-50);\n  --chat--close--button--color-hover: var(--chat--color-primary);\n\n  /* Send and File Buttons */\n  --chat--input--send--button--background: var(--chat--color-white);\n  --chat--input--send--button--color: var(--chat--color-secondary);\n  --chat--input--send--button--background-hover: var(--chat--color-primary-shade-50);\n  --chat--input--send--button--color-hover: var(--chat--color-secondary-shade-50);\n  --chat--input--file--button--background: var(--chat--color-white);\n  --chat--input--file--button--color: var(--chat--color-secondary);\n  --chat--input--file--button--background-hover: var(--chat--input--file--button--background);\n  --chat--input--file--button--color-hover: var(--chat--color-secondary-shade-50);\n  --chat--files-spacing: 0.25rem;\n\n  /* Body and Footer */\n  --chat--body--background: var(--chat--color-light);\n  --chat--footer--background: var(--chat--color-light);\n  --chat--footer--color: var(--chat--color-dark);\n}\n\n\n/* You can override any class styles, too. Right-click inspect in Chat UI to find class to override. */\n.chat-message {\n\tmax-width: 50%;\n}",
          "description": "Override default styling of the public chat interface with CSS"
        },
        {
          "displayName": "Response Mode",
          "name": "responseMode",
          "type": "options",
          "options": [
            {
              "name": "When Last Node Finishes",
              "value": "lastNode",
              "description": "Returns data of the last-executed node"
            },
            {
              "name": "Using 'Respond to Webhook' Node",
              "value": "responseNode",
              "description": "Response defined in that node"
            }
          ],
          "default": "lastNode",
          "description": "When and how to respond to the webhook"
        }
      ],
      "displayOptions": {
        "show": {
          "mode": [
            "hostedChat",
            "webhook"
          ],
          "public": [
            true
          ],
          "@version": [
            1,
            1.1
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Allowed Origins (CORS)",
          "name": "allowedOrigins",
          "type": "string",
          "default": "*",
          "description": "Comma-separated list of URLs allowed for cross-origin non-preflight requests. Use * (default) to allow all origins.",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat",
                "webhook"
              ]
            }
          }
        },
        {
          "displayName": "Allow File Uploads",
          "name": "allowFileUploads",
          "type": "boolean",
          "default": false,
          "description": "Whether to allow file uploads in the chat",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          }
        },
        {
          "displayName": "Allowed File Mime Types",
          "name": "allowedFilesMimeTypes",
          "type": "string",
          "default": "*",
          "placeholder": "e.g. image/*, text/*, application/pdf",
          "description": "Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>.",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          }
        },
        {
          "displayName": "Input Placeholder",
          "name": "inputPlaceholder",
          "type": "string",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": "Type your question..",
          "placeholder": "e.g. Type your message here",
          "description": "Shown as placeholder text in the chat input field"
        },
        {
          "displayName": "Load Previous Session",
          "name": "loadPreviousSession",
          "type": "options",
          "options": [
            {
              "name": "Off",
              "value": "notSupported",
              "description": "Loading messages of previous session is turned off"
            },
            {
              "name": "From Memory",
              "value": "memory",
              "description": "Load session messages from memory"
            },
            {
              "name": "Manually",
              "value": "manually",
              "description": "Manually return messages of session"
            }
          ],
          "default": "notSupported",
          "description": "If loading messages of a previous session should be enabled"
        },
        {
          "displayName": "Require Button Click to Start Chat",
          "name": "showWelcomeScreen",
          "type": "boolean",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": false,
          "description": "Whether to show the welcome screen at the start of the chat"
        },
        {
          "displayName": "Start Conversation Button Text",
          "name": "getStarted",
          "type": "string",
          "displayOptions": {
            "show": {
              "showWelcomeScreen": [
                true
              ],
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": "New Conversation",
          "placeholder": "e.g. New Conversation",
          "description": "Shown as part of the welcome screen, in the middle of the chat window"
        },
        {
          "displayName": "Subtitle",
          "name": "subtitle",
          "type": "string",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": "Start a chat. We're here to help you 24/7.",
          "placeholder": "e.g. We're here for you",
          "description": "Shown at the top of the chat, under the title"
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": "Hi there! 👋",
          "placeholder": "e.g. Welcome",
          "description": "Shown at the top of the chat"
        },
        {
          "displayName": "Custom Chat Styling",
          "name": "customCss",
          "type": "string",
          "typeOptions": {
            "rows": 10,
            "editor": "cssEditor"
          },
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": ":root {\n  /* Colors */\n  --chat--color-primary: #e74266;\n  --chat--color-primary-shade-50: #db4061;\n  --chat--color-primary-shade-100: #cf3c5c;\n  --chat--color-secondary: #20b69e;\n  --chat--color-secondary-shade-50: #1ca08a;\n  --chat--color-white: #ffffff;\n  --chat--color-light: #f2f4f8;\n  --chat--color-light-shade-50: #e6e9f1;\n  --chat--color-light-shade-100: #c2c5cc;\n  --chat--color-medium: #d2d4d9;\n  --chat--color-dark: #101330;\n  --chat--color-disabled: #d2d4d9;\n  --chat--color-typing: #404040;\n\n  /* Base Layout */\n  --chat--spacing: 1rem;\n  --chat--border-radius: 0.25rem;\n  --chat--transition-duration: 0.15s;\n  --chat--font-family: (\n    -apple-system,\n    BlinkMacSystemFont,\n    'Segoe UI',\n    Roboto,\n    Oxygen-Sans,\n    Ubuntu,\n    Cantarell,\n    'Helvetica Neue',\n    sans-serif\n  );\n\n  /* Window Dimensions */\n  --chat--window--width: 400px;\n  --chat--window--height: 600px;\n  --chat--window--bottom: var(--chat--spacing);\n  --chat--window--right: var(--chat--spacing);\n  --chat--window--z-index: 9999;\n  --chat--window--border: 1px solid var(--chat--color-light-shade-50);\n  --chat--window--border-radius: var(--chat--border-radius);\n  --chat--window--margin-bottom: var(--chat--spacing);\n\n  /* Header Styles */\n  --chat--header-height: auto;\n  --chat--header--padding: var(--chat--spacing);\n  --chat--header--background: var(--chat--color-dark);\n  --chat--header--color: var(--chat--color-light);\n  --chat--header--border-top: none;\n  --chat--header--border-bottom: none;\n  --chat--header--border-left: none;\n  --chat--header--border-right: none;\n  --chat--heading--font-size: 2em;\n  --chat--subtitle--font-size: inherit;\n  --chat--subtitle--line-height: 1.8;\n\n  /* Message Styles */\n  --chat--message--font-size: 1rem;\n  --chat--message--padding: var(--chat--spacing);\n  --chat--message--border-radius: var(--chat--border-radius);\n  --chat--message-line-height: 1.5;\n  --chat--message--margin-bottom: calc(var(--chat--spacing) * 1);\n  --chat--message--bot--background: var(--chat--color-white);\n  --chat--message--bot--color: var(--chat--color-dark);\n  --chat--message--bot--border: none;\n  --chat--message--user--background: var(--chat--color-secondary);\n  --chat--message--user--color: var(--chat--color-white);\n  --chat--message--user--border: none;\n  --chat--message--pre--background: rgba(0, 0, 0, 0.05);\n  --chat--messages-list--padding: var(--chat--spacing);\n\n  /* Toggle Button */\n  --chat--toggle--size: 64px;\n  --chat--toggle--width: var(--chat--toggle--size);\n  --chat--toggle--height: var(--chat--toggle--size);\n  --chat--toggle--border-radius: 50%;\n  --chat--toggle--background: var(--chat--color-primary);\n  --chat--toggle--hover--background: var(--chat--color-primary-shade-50);\n  --chat--toggle--active--background: var(--chat--color-primary-shade-100);\n  --chat--toggle--color: var(--chat--color-white);\n\n  /* Input Area */\n  --chat--textarea--height: 50px;\n  --chat--textarea--max-height: 30rem;\n  --chat--input--font-size: inherit;\n  --chat--input--border: 0;\n  --chat--input--border-radius: 0;\n  --chat--input--padding: 0.8rem;\n  --chat--input--background: var(--chat--color-white);\n  --chat--input--text-color: initial;\n  --chat--input--line-height: 1.5;\n  --chat--input--placeholder--font-size: var(--chat--input--font-size);\n  --chat--input--border-active: 0;\n  --chat--input--left--panel--width: 2rem;\n\n  /* Button Styles */\n  --chat--button--color: var(--chat--color-light);\n  --chat--button--background: var(--chat--color-primary);\n  --chat--button--padding: calc(var(--chat--spacing) * 1 / 2) var(--chat--spacing);\n  --chat--button--border-radius: var(--chat--border-radius);\n  --chat--button--hover--color: var(--chat--color-light);\n  --chat--button--hover--background: var(--chat--color-primary-shade-50);\n  --chat--close--button--color-hover: var(--chat--color-primary);\n\n  /* Send and File Buttons */\n  --chat--input--send--button--background: var(--chat--color-white);\n  --chat--input--send--button--color: var(--chat--color-secondary);\n  --chat--input--send--button--background-hover: var(--chat--color-primary-shade-50);\n  --chat--input--send--button--color-hover: var(--chat--color-secondary-shade-50);\n  --chat--input--file--button--background: var(--chat--color-white);\n  --chat--input--file--button--color: var(--chat--color-secondary);\n  --chat--input--file--button--background-hover: var(--chat--input--file--button--background);\n  --chat--input--file--button--color-hover: var(--chat--color-secondary-shade-50);\n  --chat--files-spacing: 0.25rem;\n\n  /* Body and Footer */\n  --chat--body--background: var(--chat--color-light);\n  --chat--footer--background: var(--chat--color-light);\n  --chat--footer--color: var(--chat--color-dark);\n}\n\n\n/* You can override any class styles, too. Right-click inspect in Chat UI to find class to override. */\n.chat-message {\n\tmax-width: 50%;\n}",
          "description": "Override default styling of the public chat interface with CSS"
        },
        {
          "displayName": "Response Mode",
          "name": "responseMode",
          "type": "options",
          "options": [
            {
              "name": "When Last Node Finishes",
              "value": "lastNode",
              "description": "Returns data of the last-executed node"
            },
            {
              "name": "Using 'Respond to Webhook' Node",
              "value": "responseNode",
              "description": "Response defined in that node"
            },
            {
              "name": "Streaming",
              "value": "streaming",
              "description": "Streaming response from specified nodes (e.g. Agents)"
            }
          ],
          "default": "lastNode",
          "description": "When and how to respond to the webhook"
        }
      ],
      "displayOptions": {
        "show": {
          "mode": [
            "hostedChat",
            "webhook"
          ],
          "public": [
            true
          ],
          "@version": [
            1.2
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Allow File Uploads",
          "name": "allowFileUploads",
          "type": "boolean",
          "default": false,
          "description": "Whether to allow file uploads in the chat"
        },
        {
          "displayName": "Allowed File Mime Types",
          "name": "allowedFilesMimeTypes",
          "type": "string",
          "default": "*",
          "placeholder": "e.g. image/*, text/*, application/pdf",
          "description": "Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>."
        },
        {
          "displayName": "Response Mode",
          "name": "responseMode",
          "type": "options",
          "options": [
            {
              "name": "When Last Node Finishes",
              "value": "lastNode",
              "description": "Returns data of the last-executed node"
            },
            {
              "name": "Using Response Nodes",
              "value": "responseNodes",
              "description": "Send responses to the chat by using 'Respond to Chat' or 'Respond to Webhook' nodes"
            }
          ],
          "default": "lastNode",
          "description": "When and how to respond to the chat"
        }
      ],
      "displayOptions": {
        "show": {
          "public": [
            false
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.3
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Allowed Origins (CORS)",
          "name": "allowedOrigins",
          "type": "string",
          "default": "*",
          "description": "Comma-separated list of URLs allowed for cross-origin non-preflight requests. Use * (default) to allow all origins.",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat",
                "webhook"
              ]
            }
          }
        },
        {
          "displayName": "Allow File Uploads",
          "name": "allowFileUploads",
          "type": "boolean",
          "default": false,
          "description": "Whether to allow file uploads in the chat",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          }
        },
        {
          "displayName": "Allowed File Mime Types",
          "name": "allowedFilesMimeTypes",
          "type": "string",
          "default": "*",
          "placeholder": "e.g. image/*, text/*, application/pdf",
          "description": "Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>.",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          }
        },
        {
          "displayName": "Input Placeholder",
          "name": "inputPlaceholder",
          "type": "string",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": "Type your question..",
          "placeholder": "e.g. Type your message here",
          "description": "Shown as placeholder text in the chat input field"
        },
        {
          "displayName": "Load Previous Session",
          "name": "loadPreviousSession",
          "type": "options",
          "options": [
            {
              "name": "Off",
              "value": "notSupported",
              "description": "Loading messages of previous session is turned off"
            },
            {
              "name": "From Memory",
              "value": "memory",
              "description": "Load session messages from memory"
            },
            {
              "name": "Manually",
              "value": "manually",
              "description": "Manually return messages of session"
            }
          ],
          "default": "notSupported",
          "description": "If loading messages of a previous session should be enabled"
        },
        {
          "displayName": "Require Button Click to Start Chat",
          "name": "showWelcomeScreen",
          "type": "boolean",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": false,
          "description": "Whether to show the welcome screen at the start of the chat"
        },
        {
          "displayName": "Start Conversation Button Text",
          "name": "getStarted",
          "type": "string",
          "displayOptions": {
            "show": {
              "showWelcomeScreen": [
                true
              ],
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": "New Conversation",
          "placeholder": "e.g. New Conversation",
          "description": "Shown as part of the welcome screen, in the middle of the chat window"
        },
        {
          "displayName": "Subtitle",
          "name": "subtitle",
          "type": "string",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": "Start a chat. We're here to help you 24/7.",
          "placeholder": "e.g. We're here for you",
          "description": "Shown at the top of the chat, under the title"
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": "Hi there! 👋",
          "placeholder": "e.g. Welcome",
          "description": "Shown at the top of the chat"
        },
        {
          "displayName": "Custom Chat Styling",
          "name": "customCss",
          "type": "string",
          "typeOptions": {
            "rows": 10,
            "editor": "cssEditor"
          },
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          },
          "default": ":root {\n  /* Colors */\n  --chat--color-primary: #e74266;\n  --chat--color-primary-shade-50: #db4061;\n  --chat--color-primary-shade-100: #cf3c5c;\n  --chat--color-secondary: #20b69e;\n  --chat--color-secondary-shade-50: #1ca08a;\n  --chat--color-white: #ffffff;\n  --chat--color-light: #f2f4f8;\n  --chat--color-light-shade-50: #e6e9f1;\n  --chat--color-light-shade-100: #c2c5cc;\n  --chat--color-medium: #d2d4d9;\n  --chat--color-dark: #101330;\n  --chat--color-disabled: #d2d4d9;\n  --chat--color-typing: #404040;\n\n  /* Base Layout */\n  --chat--spacing: 1rem;\n  --chat--border-radius: 0.25rem;\n  --chat--transition-duration: 0.15s;\n  --chat--font-family: (\n    -apple-system,\n    BlinkMacSystemFont,\n    'Segoe UI',\n    Roboto,\n    Oxygen-Sans,\n    Ubuntu,\n    Cantarell,\n    'Helvetica Neue',\n    sans-serif\n  );\n\n  /* Window Dimensions */\n  --chat--window--width: 400px;\n  --chat--window--height: 600px;\n  --chat--window--bottom: var(--chat--spacing);\n  --chat--window--right: var(--chat--spacing);\n  --chat--window--z-index: 9999;\n  --chat--window--border: 1px solid var(--chat--color-light-shade-50);\n  --chat--window--border-radius: var(--chat--border-radius);\n  --chat--window--margin-bottom: var(--chat--spacing);\n\n  /* Header Styles */\n  --chat--header-height: auto;\n  --chat--header--padding: var(--chat--spacing);\n  --chat--header--background: var(--chat--color-dark);\n  --chat--header--color: var(--chat--color-light);\n  --chat--header--border-top: none;\n  --chat--header--border-bottom: none;\n  --chat--header--border-left: none;\n  --chat--header--border-right: none;\n  --chat--heading--font-size: 2em;\n  --chat--subtitle--font-size: inherit;\n  --chat--subtitle--line-height: 1.8;\n\n  /* Message Styles */\n  --chat--message--font-size: 1rem;\n  --chat--message--padding: var(--chat--spacing);\n  --chat--message--border-radius: var(--chat--border-radius);\n  --chat--message-line-height: 1.5;\n  --chat--message--margin-bottom: calc(var(--chat--spacing) * 1);\n  --chat--message--bot--background: var(--chat--color-white);\n  --chat--message--bot--color: var(--chat--color-dark);\n  --chat--message--bot--border: none;\n  --chat--message--user--background: var(--chat--color-secondary);\n  --chat--message--user--color: var(--chat--color-white);\n  --chat--message--user--border: none;\n  --chat--message--pre--background: rgba(0, 0, 0, 0.05);\n  --chat--messages-list--padding: var(--chat--spacing);\n\n  /* Toggle Button */\n  --chat--toggle--size: 64px;\n  --chat--toggle--width: var(--chat--toggle--size);\n  --chat--toggle--height: var(--chat--toggle--size);\n  --chat--toggle--border-radius: 50%;\n  --chat--toggle--background: var(--chat--color-primary);\n  --chat--toggle--hover--background: var(--chat--color-primary-shade-50);\n  --chat--toggle--active--background: var(--chat--color-primary-shade-100);\n  --chat--toggle--color: var(--chat--color-white);\n\n  /* Input Area */\n  --chat--textarea--height: 50px;\n  --chat--textarea--max-height: 30rem;\n  --chat--input--font-size: inherit;\n  --chat--input--border: 0;\n  --chat--input--border-radius: 0;\n  --chat--input--padding: 0.8rem;\n  --chat--input--background: var(--chat--color-white);\n  --chat--input--text-color: initial;\n  --chat--input--line-height: 1.5;\n  --chat--input--placeholder--font-size: var(--chat--input--font-size);\n  --chat--input--border-active: 0;\n  --chat--input--left--panel--width: 2rem;\n\n  /* Button Styles */\n  --chat--button--color: var(--chat--color-light);\n  --chat--button--background: var(--chat--color-primary);\n  --chat--button--padding: calc(var(--chat--spacing) * 1 / 2) var(--chat--spacing);\n  --chat--button--border-radius: var(--chat--border-radius);\n  --chat--button--hover--color: var(--chat--color-light);\n  --chat--button--hover--background: var(--chat--color-primary-shade-50);\n  --chat--close--button--color-hover: var(--chat--color-primary);\n\n  /* Send and File Buttons */\n  --chat--input--send--button--background: var(--chat--color-white);\n  --chat--input--send--button--color: var(--chat--color-secondary);\n  --chat--input--send--button--background-hover: var(--chat--color-primary-shade-50);\n  --chat--input--send--button--color-hover: var(--chat--color-secondary-shade-50);\n  --chat--input--file--button--background: var(--chat--color-white);\n  --chat--input--file--button--color: var(--chat--color-secondary);\n  --chat--input--file--button--background-hover: var(--chat--input--file--button--background);\n  --chat--input--file--button--color-hover: var(--chat--color-secondary-shade-50);\n  --chat--files-spacing: 0.25rem;\n\n  /* Body and Footer */\n  --chat--body--background: var(--chat--color-light);\n  --chat--footer--background: var(--chat--color-light);\n  --chat--footer--color: var(--chat--color-dark);\n}\n\n\n/* You can override any class styles, too. Right-click inspect in Chat UI to find class to override. */\n.chat-message {\n\tmax-width: 50%;\n}",
          "description": "Override default styling of the public chat interface with CSS"
        },
        {
          "displayName": "Response Mode",
          "name": "responseMode",
          "type": "options",
          "options": [
            {
              "name": "When Last Node Finishes",
              "value": "lastNode",
              "description": "Returns data of the last-executed node"
            },
            {
              "name": "Streaming",
              "value": "streaming",
              "description": "Streaming response from specified nodes (e.g. Agents)"
            },
            {
              "name": "Using 'Respond to Webhook' Node",
              "value": "responseNode",
              "description": "Response defined in that node"
            }
          ],
          "default": "lastNode",
          "description": "When and how to respond to the chat",
          "displayOptions": {
            "show": {
              "/mode": [
                "webhook"
              ]
            }
          }
        },
        {
          "displayName": "Response Mode",
          "name": "responseMode",
          "type": "options",
          "options": [
            {
              "name": "When Last Node Finishes",
              "value": "lastNode",
              "description": "Returns data of the last-executed node"
            },
            {
              "name": "Streaming",
              "value": "streaming",
              "description": "Streaming response from specified nodes (e.g. Agents)"
            },
            {
              "name": "Using Response Nodes",
              "value": "responseNodes",
              "description": "Send responses to the chat by using 'Respond to Chat' or 'Respond to Webhook' nodes"
            }
          ],
          "default": "lastNode",
          "description": "When and how to respond to the webhook",
          "displayOptions": {
            "show": {
              "/mode": [
                "hostedChat"
              ]
            }
          }
        }
      ],
      "displayOptions": {
        "show": {
          "mode": [
            "hostedChat",
            "webhook"
          ],
          "public": [
            true
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.3
              }
            }
          ]
        }
      }
    }
  ]

credentials_required:
  [
    {
      "name": "httpBasicAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "basicAuth"
          ]
        }
      }
    }
  ]


node_type: nodes-langchain.chat
package_name: @n8n/n8n-nodes-langchain
display_name: Respond to Chat
description: Send a message to a chat
category: input
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2025-11-03 20:57:27
properties_schema:
  [
    {
      "displayName": "Verify you're using a chat trigger with the 'Response Mode' option set to 'Using Response Nodes'",
      "name": "generalNotice",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "Message",
      "name": "message",
      "type": "string",
      "default": "",
      "required": true,
      "typeOptions": {
        "rows": 6
      }
    },
    {
      "displayName": "Wait for User Reply",
      "name": "waitUserReply",
      "type": "boolean",
      "default": true
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Add Memory Input Connection",
          "name": "memoryConnection",
          "type": "boolean",
          "default": false
        },
        {
          "displayName": "Limit Wait Time",
          "name": "limitWaitTime",
          "type": "fixedCollection",
          "description": "Whether to limit the time this node should wait for a user response before execution resumes",
          "default": {
            "values": {
              "limitType": "afterTimeInterval",
              "resumeAmount": 45,
              "resumeUnit": "minutes"
            }
          },
          "options": [
            {
              "displayName": "Values",
              "name": "values",
              "values": [
                {
                  "displayName": "Limit Type",
                  "name": "limitType",
                  "type": "options",
                  "default": "afterTimeInterval",
                  "description": "Sets the condition for the execution to resume. Can be a specified date or after some time.",
                  "options": [
                    {
                      "name": "After Time Interval",
                      "description": "Waits for a certain amount of time",
                      "value": "afterTimeInterval"
                    },
                    {
                      "name": "At Specified Time",
                      "description": "Waits until the set date and time to continue",
                      "value": "atSpecifiedTime"
                    }
                  ]
                },
                {
                  "displayName": "Amount",
                  "name": "resumeAmount",
                  "type": "number",
                  "displayOptions": {
                    "show": {
                      "limitType": [
                        "afterTimeInterval"
                      ]
                    }
                  },
                  "typeOptions": {
                    "minValue": 0,
                    "numberPrecision": 2
                  },
                  "default": 1,
                  "description": "The time to wait"
                },
                {
                  "displayName": "Unit",
                  "name": "resumeUnit",
                  "type": "options",
                  "displayOptions": {
                    "show": {
                      "limitType": [
                        "afterTimeInterval"
                      ]
                    }
                  },
                  "options": [
                    {
                      "name": "Minutes",
                      "value": "minutes"
                    },
                    {
                      "name": "Hours",
                      "value": "hours"
                    },
                    {
                      "name": "Days",
                      "value": "days"
                    }
                  ],
                  "default": "hours",
                  "description": "Unit of the interval value"
                },
                {
                  "displayName": "Max Date and Time",
                  "name": "maxDateAndTime",
                  "type": "dateTime",
                  "displayOptions": {
                    "show": {
                      "limitType": [
                        "atSpecifiedTime"
                      ]
                    }
                  },
                  "default": "",
                  "description": "Continue execution after the specified date and time"
                }
              ]
            }
          ],
          "displayOptions": {
            "show": {
              "/waitUserReply": [
                true
              ]
            }
          }
        }
      ]
    }
  ]


node_type: nodes-langchain.vectorStoreInMemory
package_name: @n8n/n8n-nodes-langchain
display_name: Simple Vector Store
description: The easiest way to experiment with vector stores, without external setup.
category: transform
development_style: programmatic
version: 1.3
operations: []
credentials_required: []
updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Simple Vector Store node documentation
  description: Learn how to use the Simple Vector Store node in n8n. Follow technical documentation to integrate Simple Vector Store node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Simple Vector Store node

  Use the Simple Vector Store node to store and retrieve [embeddings](/glossary.md#ai-embedding) in n8n's in-app memory. 

  On this page, you'll find the node parameters for the Simple Vector Store node, and links to more resources.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  /// note | This node is different from AI memory nodes
  The simple vector storage described here is different to the AI memory nodes such as [Simple Memory](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/index.md).

  This node creates a [vector database](/glossary.md#ai-vector-store) in the app memory.
  ///

  ## Data safety limitations

  Before using the Simple Vector Store node, it's important to understand its limitations and how it works.

  /// warning
  n8n recommends using Simple Vector store for development use only.
  ///

  ### Vector store data isn't persistent

  This node stores data in memory only. All data is lost when n8n restarts and may also be purged in low-memory conditions.

  ### All instance users can access vector store data

  Memory keys for the Simple Vector Store node are global, not scoped to individual workflows.

  This means that all users of the instance can access vector store data by adding a Simple Vector Store node and selecting the memory key, regardless of the access controls set for the original workflow. Take care not to expose sensitive information when ingesting data with the Simple Vector Store node.

  ## Node usage patterns

  You can use the Simple Vector Store node in the following patterns.

  ### Use as a regular node to insert and retrieve documents

  You can use the Simple Vector Store as a regular node to insert or get documents. This pattern places the Simple Vector Store in the regular connection flow without using an agent.

  You can see an example of in step 2 of [this template](https://n8n.io/workflows/2465-building-your-first-whatsapp-chatbot/).

  ### Connect directly to an AI agent as a tool

  You can connect the Simple Vector Store node directly to the [tool](/glossary.md#ai-tool) connector of an [AI agent](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/index.md) to use a vector store as a resource when answering queries.

  Here, the connection would be: AI agent (tools connector) -> Simple Vector Store node.

  ### Use a retriever to fetch documents

  You can use the [Vector Store Retriever](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.retrievervectorstore.md) node with the Simple Vector Store node to fetch documents from the Simple Vector Store node. This is often used with the [Question and Answer Chain](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainretrievalqa/index.md) node to fetch documents from the vector store that match the given chat input.

  An [example of the connection flow](https://n8n.io/workflows/1960-ask-questions-about-a-pdf-using-ai/) (the linked example uses Pinecone, but the pattern is the same) would be: Question and Answer Chain (Retriever connector) -> Vector Store Retriever (Vector Store connector) -> Simple Vector Store.

  ### Use the Vector Store Question Answer Tool to answer questions

  Another pattern uses the [Vector Store Question Answer Tool](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolvectorstore.md) to summarize results and answer questions from the Simple Vector Store node. Rather than connecting the Simple Vector Store directly as a tool, this pattern uses a tool specifically designed to summarizes data in the vector store.

  The [connections flow](https://n8n.io/workflows/2465-building-your-first-whatsapp-chatbot/) in this case would look like this: AI agent (tools connector) -> Vector Store Question Answer Tool (Vector Store connector) -> Simple Vector store.

  ## Memory Management

  The Simple Vector Store implements memory management to prevent excessive memory usage:

  - Automatically cleans up old vector stores when memory pressure increases
  - Removes inactive stores that haven't been accessed for a configurable amount of time

  ### Configuration Options

  You can control memory usage with these environment variables:

   | Variable                      | Type   | Default | Description                                                                         |
   |-------------------------------|--------|---------|-------------------------------------------------------------------------------------|
   | `N8N_VECTOR_STORE_MAX_MEMORY` | Number | -1      | Maximum memory in MB allowed for all vector stores combined (-1 to disable limits). |
   | `N8N_VECTOR_STORE_TTL_HOURS`  | Number | -1      | Hours of inactivity after which a store gets removed (-1 to disable TTL).           |

  On n8n Cloud, these values are preset to 100MB (about 8,000 documents, depending on document size and metadata) and 7 days respectively. For self-hosted instances, both values default to -1(no memory limits or time-based cleanup).

  ## Node parameters

  --8<-- "_snippets/integrations/builtin/cluster-nodes/vector-store-mode.md"

  --8<-- "_snippets/integrations/builtin/cluster-nodes/vector-store-rerank-results.md"

  <!-- vale from-write-good.Weasel = NO -->
  ### Get Many parameters
  <!-- vale from-write-good.Weasel = YES -->

  * **Memory Key**: Select or create the key containing the vector memory you want to query.
  * **Prompt**: Enter the search query.
  * **Limit**: Enter how many results to retrieve from the vector store. For example, set this to `10` to get the ten best results.


  ### Insert Documents parameters

  * **Memory Key**: Select or create the key you want to store the vector memory as.
  * **Clear Store**: Use this parameter to control whether to wipe the vector store for the given memory key for this workflow before inserting data (turned on).

  ### Retrieve Documents (As Vector Store for Chain/Tool) parameters

  * **Memory Key**: Select or create the key containing the vector memory you want to query.

  ### Retrieve Documents (As Tool for AI Agent) parameters

  * **Name**: The name of the vector store.
  * **Description**: Explain to the LLM what this tool does. A good, specific description allows LLMs to produce expected results more often.
  * **Memory Key**: Select or create the key containing the vector memory you want to query.
  * **Limit**: Enter how many results to retrieve from the vector store. For example, set this to `10` to get the ten best results.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'in-memory-vector-store') ]]

  ## Related resources

  Refer to [LangChains's Memory Vector Store documentation](https://js.langchain.com/docs/integrations/vectorstores/memory/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

properties_schema:
  [
    {
      "displayName": "Tip: Get a feel for vector stores in n8n with our",
      "name": "ragStarterCallout",
      "type": "callout",
      "default": "",
      "typeOptions": {
        "calloutAction": {
          "label": "RAG starter template",
          "type": "openSampleWorkflowTemplate",
          "templateId": "rag-starter-template"
        }
      }
    },
    {
      "displayName": "Operation Mode",
      "name": "mode",
      "type": "options",
      "default": "retrieve",
      "options": [
        {
          "name": "Get Many",
          "value": "load",
          "description": "Get many ranked documents from vector store for query",
          "action": "Get ranked documents from vector store"
        },
        {
          "name": "Insert Documents",
          "value": "insert",
          "description": "Insert documents into vector store",
          "action": "Add documents to vector store"
        },
        {
          "name": "Retrieve Documents (As Vector Store for Chain/Tool)",
          "value": "retrieve",
          "description": "Retrieve documents from vector store to be used as vector store with AI nodes",
          "action": "Retrieve documents for Chain/Tool as Vector Store",
          "outputConnectionType": "ai_vectorStore"
        },
        {
          "name": "Retrieve Documents (As Tool for AI Agent)",
          "value": "retrieve-as-tool",
          "description": "Retrieve documents from vector store to be used as tool with AI nodes",
          "action": "Retrieve documents for AI Agent as Tool",
          "outputConnectionType": "ai_tool"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve"
          ]
        }
      },
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Name",
      "name": "toolName",
      "type": "string",
      "default": "",
      "description": "Name of the vector store",
      "required": true,
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "lte": 1.2
              }
            }
          ],
          "mode": [
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "Description",
      "name": "toolDescription",
      "type": "string",
      "default": "",
      "description": "Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often",
      "required": true,
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve-as-tool"
          ]
        }
      },
      "typeOptions": {
        "rows": 2
      }
    },
    {
      "displayName": "Memory Key",
      "name": "memoryKey",
      "type": "string",
      "default": "vector_store_key",
      "description": "The key to use to store the vector memory in the workflow data. The key will be prefixed with the workflow ID to avoid collisions.",
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "lte": 1.1
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Memory Key",
      "name": "memoryKey",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": "vector_store_key"
      },
      "description": "The key to use to store the vector memory in the workflow data. These keys are shared between workflows.",
      "required": true,
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "gte": 1.2
              }
            }
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "typeOptions": {
            "searchListMethod": "vectorStoresSearch",
            "searchable": true,
            "allowNewResource": {
              "label": "resourceLocator.mode.list.addNewResource.vectorStoreInMemory",
              "defaultName": "vector_store_key",
              "method": "createVectorStore"
            }
          }
        },
        {
          "displayName": "Manual",
          "name": "id",
          "type": "string",
          "placeholder": "vector_store_key"
        }
      ]
    },
    {
      "displayName": "Embedding Batch Size",
      "name": "embeddingBatchSize",
      "type": "number",
      "default": 200,
      "description": "Number of documents to embed in a single batch",
      "displayOptions": {
        "show": {
          "mode": [
            "insert"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.1
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Clear Store",
      "name": "clearStore",
      "type": "boolean",
      "default": false,
      "description": "Whether to clear the store before inserting new data",
      "displayOptions": {
        "show": {
          "mode": [
            "insert"
          ]
        }
      }
    },
    {
      "displayName": "<strong>For experimental use only</strong>: Data is stored in memory and will be lost if n8n restarts. Data may also be cleared if available memory gets low, and is accessible to all users of this instance. <a href=\"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreinmemory/\">More info</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "mode": [
            "insert"
          ]
        }
      }
    },
    {
      "displayName": "Prompt",
      "name": "prompt",
      "type": "string",
      "default": "",
      "description": "Search prompt to retrieve matching documents from the vector store using similarity-based ranking",
      "required": true,
      "displayOptions": {
        "show": {
          "mode": [
            "load"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "topK",
      "type": "number",
      "default": 4,
      "description": "Number of top results to fetch from vector store",
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "Include Metadata",
      "name": "includeDocumentMetadata",
      "type": "boolean",
      "default": true,
      "description": "Whether or not to include document metadata",
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "Rerank Results",
      "name": "useReranker",
      "type": "boolean",
      "default": false,
      "description": "Whether or not to rerank results",
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "ID of an embedding entry",
      "required": true,
      "displayOptions": {
        "show": {
          "mode": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "<strong>For experimental use only</strong>: Data is stored in memory and will be lost if n8n restarts. Data may also be cleared if available memory gets low, and is accessible to all users of this instance. <a href=\"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreinmemory/\">More info</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "<strong>For experimental use only</strong>: Data is stored in memory and will be lost if n8n restarts. Data may also be cleared if available memory gets low, and is accessible to all users of this instance. <a href=\"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreinmemory/\">More info</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve"
          ]
        }
      }
    }
  ]

outputs:
  [
    "={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}"
  ]


node_type: nodes-langchain.vectorStoreInMemoryInsert
package_name: @n8n/n8n-nodes-langchain
display_name: In Memory Vector Store Insert
description: Insert data into an in-memory vector store
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2025-11-03 20:57:27
properties_schema:
  [
    {
      "displayName": "The embbded data are stored in the server memory, so they will be lost when the server is restarted. Additionally, if the amount of data is too large, it may cause the server to crash due to insufficient memory.",
      "name": "notice",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "Clear Store",
      "name": "clearStore",
      "type": "boolean",
      "default": false,
      "description": "Whether to clear the store before inserting new data"
    },
    {
      "displayName": "Memory Key",
      "name": "memoryKey",
      "type": "string",
      "default": "vector_store_key",
      "description": "The key to use to store the vector memory in the workflow data. The key will be prefixed with the workflow ID to avoid collisions."
    }
  ]


node_type: nodes-langchain.vectorStoreInMemoryLoad
package_name: @n8n/n8n-nodes-langchain
display_name: In Memory Vector Store Load
description: Load embedded data from an in-memory vector store
category: transform
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  "ai_vectorStore"
  ]

output_names:
  [
  "Vector Store"
  ]

updated_at: 2025-11-03 20:57:27
properties_schema:
  [
    {
      "displayName": "Memory Key",
      "name": "memoryKey",
      "type": "string",
      "default": "vector_store_key",
      "description": "The key to use to store the vector memory in the workflow data. The key will be prefixed with the workflow ID to avoid collisions."
    }
  ]


node_type: nodes-langchain.vectorStoreMilvus
package_name: @n8n/n8n-nodes-langchain
display_name: Milvus Vector Store
description: Work with your data in Milvus Vector Store
category: transform
development_style: programmatic
version: 1.3
operations: []
credentials_required:
  [
  {
  "name": "milvusApi",
  "required": true
  }
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Milvus Vector Store node documentation
  description: Learn how to use the Milvus Vector Store node in n8n. Follow technical documentation to integrate Milvus Vector Store node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Milvus Vector Store node

  Use the Milvus node to interact with your Milvus database as [vector store](/glossary.md#ai-vector-store). You can insert documents into a vector database, get documents from a vector database, retrieve documents to provide them to a retriever connected to a [chain](/glossary.md#ai-chain), or connect directly to an [agent](/glossary.md#ai-agent) as a [tool](/glossary.md#ai-tool).

  On this page, you'll find the node parameters for the Milvus node, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/milvus.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node usage patterns

  You can use the Milvus Vector Store node in the following patterns.

  ### Use as a regular node to insert and retrieve documents

  You can use the Milvus Vector Store as a regular node to insert, or get documents. This pattern places the Milvus Vector Store in the regular connection flow without using an agent.

  See this [example template](https://n8n.io/workflows/3573-create-a-rag-system-with-paul-essays-milvus-and-openai-for-cited-answers/) for how to build a system that stores documents in Milvus and retrieves them to support cited, chat-based answers.


  ### Connect directly to an AI agent as a tool

  You can connect the Milvus Vector Store node directly to the tool connector of an [AI agent](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/index.md) to use a vector store as a resource when answering queries.

  Here, the connection would be: AI agent (tools connector) -> Milvus Vector Store node. See this [example template](https://n8n.io/workflows/3576-paul-graham-essay-search-and-chat-with-milvus-vector-database/) where data is embedded and indexed in Milvus, and the AI Agent uses the vector store as a knowledge tool for question-answering.


  ### Use a retriever to fetch documents

  You can use the [Vector Store Retriever](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.retrievervectorstore.md) node with the Milvus Vector Store node to fetch documents from the Milvus Vector Store node. This is often used with the [Question and Answer Chain](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainretrievalqa/index.md) node to fetch documents from the vector store that match the given chat input.

  A typical node connection flow looks like this: Question and Answer Chain (Retriever connector) -> Vector Store Retriever (Vector Store connector) -> Milvus Vector Store.

  Check out this [workflow example](https://n8n.io/workflows/3574-create-a-paul-graham-essay-qanda-system-with-openai-and-milvus-vector-database/) to see how to ingest external data into Milvus and build a chat-based semantic Q&A system.


  ### Use the Vector Store Question Answer Tool to answer questions

  Another pattern uses the [Vector Store Question Answer Tool](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolvectorstore.md) to summarize results and answer questions from the Milvus Vector Store node. Rather than connecting the Milvus Vector Store directly as a tool, this pattern uses a tool specifically designed to summarizes data in the vector store.

  The connections flow would look like this: AI agent (tools connector) -> Vector Store Question Answer Tool (Vector Store connector) -> Milvus Vector store.

  ## Node parameters

  --8<-- "_snippets/integrations/builtin/cluster-nodes/vector-store-mode.md"

  --8<-- "_snippets/integrations/builtin/cluster-nodes/vector-store-rerank-results.md"

  <!-- vale from-write-good.Weasel = NO -->
  ### Get Many parameters
  <!-- vale from-write-good.Weasel = YES -->

  * **Milvus Collection**: Select or enter the Milvus Collection to use.
  * **Prompt**: Enter your search query.
  * **Limit**: Enter how many results to retrieve from the vector store. For example, set this to `10` to get the ten best results.

  ### Insert Documents parameters

  * **Milvus Collection**: Select or enter the Milvus Collection to use.
  * **Clear Collection**: Specify whether to clear the collection before inserting new documents.

  ### Retrieve Documents (As Vector Store for Chain/Tool) parameters

  * **Milvus collection**: Select or enter the Milvus Collection to use.

  ### Retrieve Documents (As Tool for AI Agent) parameters

  * **Name**: The name of the vector store.
  * **Description**: Explain to the LLM what this tool does. A good, specific description allows LLMs to produce expected results more often.
  * **Milvus Collection**: Select or enter the Milvus Collection to use.
  * **Limit**: Enter how many results to retrieve from the vector store. For example, set this to `10` to get the ten best results.

  ## Node options

  ### Metadata Filter

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-root-nodes/vector-store-metadata-filter.md"

  ### Clear Collection

  Available in **Insert Documents** mode. Deletes all data from the collection before inserting the new data.

  ## Related resources

  Refer to [LangChain's Milvus documentation](https://js.langchain.com/docs/integrations/vectorstores/milvus/) for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

properties_schema:
  [
    {
      "displayName": "Tip: Get a feel for vector stores in n8n with our",
      "name": "ragStarterCallout",
      "type": "callout",
      "default": "",
      "typeOptions": {
        "calloutAction": {
          "label": "RAG starter template",
          "type": "openSampleWorkflowTemplate",
          "templateId": "rag-starter-template"
        }
      }
    },
    {
      "displayName": "Operation Mode",
      "name": "mode",
      "type": "options",
      "default": "retrieve",
      "options": [
        {
          "name": "Get Many",
          "value": "load",
          "description": "Get many ranked documents from vector store for query",
          "action": "Get ranked documents from vector store"
        },
        {
          "name": "Insert Documents",
          "value": "insert",
          "description": "Insert documents into vector store",
          "action": "Add documents to vector store"
        },
        {
          "name": "Retrieve Documents (As Vector Store for Chain/Tool)",
          "value": "retrieve",
          "description": "Retrieve documents from vector store to be used as vector store with AI nodes",
          "action": "Retrieve documents for Chain/Tool as Vector Store",
          "outputConnectionType": "ai_vectorStore"
        },
        {
          "name": "Retrieve Documents (As Tool for AI Agent)",
          "value": "retrieve-as-tool",
          "description": "Retrieve documents from vector store to be used as tool with AI nodes",
          "action": "Retrieve documents for AI Agent as Tool",
          "outputConnectionType": "ai_tool"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve"
          ]
        }
      },
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Name",
      "name": "toolName",
      "type": "string",
      "default": "",
      "description": "Name of the vector store",
      "required": true,
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "lte": 1.2
              }
            }
          ],
          "mode": [
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "Description",
      "name": "toolDescription",
      "type": "string",
      "default": "",
      "description": "Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often",
      "required": true,
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve-as-tool"
          ]
        }
      },
      "typeOptions": {
        "rows": 2
      }
    },
    {
      "displayName": "Milvus Collection",
      "name": "milvusCollection",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "required": true,
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "typeOptions": {
            "searchListMethod": "milvusCollectionsSearch"
          }
        },
        {
          "displayName": "ID",
          "name": "id",
          "type": "string"
        }
      ]
    },
    {
      "displayName": "Embedding Batch Size",
      "name": "embeddingBatchSize",
      "type": "number",
      "default": 200,
      "description": "Number of documents to embed in a single batch",
      "displayOptions": {
        "show": {
          "mode": [
            "insert"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.1
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Clear Collection",
          "name": "clearCollection",
          "type": "boolean",
          "default": false,
          "description": "Whether to clear the collection before inserting new data"
        }
      ],
      "displayOptions": {
        "show": {
          "mode": [
            "insert"
          ]
        }
      }
    },
    {
      "displayName": "Prompt",
      "name": "prompt",
      "type": "string",
      "default": "",
      "description": "Search prompt to retrieve matching documents from the vector store using similarity-based ranking",
      "required": true,
      "displayOptions": {
        "show": {
          "mode": [
            "load"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "topK",
      "type": "number",
      "default": 4,
      "description": "Number of top results to fetch from vector store",
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "Include Metadata",
      "name": "includeDocumentMetadata",
      "type": "boolean",
      "default": true,
      "description": "Whether or not to include document metadata",
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "Rerank Results",
      "name": "useReranker",
      "type": "boolean",
      "default": false,
      "description": "Whether or not to rerank results",
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "ID of an embedding entry",
      "required": true,
      "displayOptions": {
        "show": {
          "mode": [
            "update"
          ]
        }
      }
    }
  ]

outputs:
  [
    "={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}"
  ]


node_type: nodes-langchain.vectorStoreMongoDBAtlas
package_name: @n8n/n8n-nodes-langchain
display_name: MongoDB Atlas Vector Store
description: Work with your data in MongoDB Atlas Vector Store
category: transform
development_style: programmatic
version: 1.3
operations: []
credentials_required:
  [
  {
  "name": "mongoDb",
  "required": true
  }
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: MongoDB Atlas Vector Store node documentation
  description: Learn how to use the MongoDB Atlas Vector Store node in n8n. Follow technical documentation to integrate MongoDB Atlas Vector Store node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # MongoDB Atlas Vector Store node

  MongoDB Atlas Vector Search is a feature of MongoDB Atlas that enables users to store and query vector embeddings. Use this node to interact with Vector Search indexes in your MongoDB Atlas collections. You can insert documents, retrieve documents, and use the vector store in chains or as a tool for agents.

  On this page, you'll find the node parameters for the MongoDB Atlas Vector Store node, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/mongodb.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Prerequisites

  Before using this node, create a [Vector Search index](https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-type/) in your MongoDB Atlas collection. Follow these steps to create one:

  1. Log in to the [MongoDB Atlas dashboard](https://cloud.mongodb.com/).

  3. Select your organization and project.
  4. Find "Search & Vector Search" section.
  5. Select your cluster and click "Go to search".
  7. Click "Create Search Index".
  8. Choose "Vector Search" mode and use the visual or JSON editors. For example:
     ```json
     {
       "fields": [
         {
           "type": "vector",
           "path": "<field-name>",
           "numDimensions": 1536, // any other value
           "similarity": "<similarity-function>"
         }
       ]
     }
     ```

  9. Adjust the "dimensions" value according to your embedding model (For example, `1536` for OpenAI's `text-embedding-small-3`).
  10. Name your index and create.

  Make sure to note the following values which are required when configuring the node:

  - Collection name
  - Vector index name 
  - Field names for embeddings and metadata

  ## Node usage patterns

  You can use the MongoDB Atlas Vector Store node in the following patterns:

  ### Use as a regular node to insert and retrieve documents

  You can use the MongoDB Atlas Vector Store as a regular node to insert or get documents. This pattern places the MongoDB Atlas Vector Store in the regular connection flow without using an agent.

  You can see an example of this in scenario 1 of [this template](https://n8n.io/workflows/2621-ai-agent-to-chat-with-files-in-supabase-storage/) (the template uses the Supabase Vector Store, but the pattern is the same).

  ### Connect directly to an AI agent as a tool

  You can connect the MongoDB Atlas Vector Store node directly to the tool connector of an [AI agent](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/index.md) to use the vector store as a resource when answering queries.

  Here, the connection would be: AI agent (tools connector) -> MongoDB Atlas Vector Store node.

  ### Use a retriever to fetch documents

  You can use the [Vector Store Retriever](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.retrievervectorstore.md) node with the MongoDB Atlas Vector Store node to fetch documents from the MongoDB Atlas Vector Store node. This is often used with the [Question and Answer Chain](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainretrievalqa/index.md) node to fetch documents from the vector store that match the given chat input.

  An [example of the connection flow](https://n8n.io/workflows/1960-ask-questions-about-a-pdf-using-ai/) (the linked example uses Pinecone, but the pattern is the same) would be: Question and Answer Chain (Retriever connector) -> Vector Store Retriever (Vector Store connector) -> MongoDB Atlas Vector Store.

  ### Use the Vector Store Question Answer Tool to answer questions

  Another pattern uses the [Vector Store Question Answer Tool](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolvectorstore.md) to summarize results and answer questions from the MongoDB Atlas Vector Store node. Rather than connecting the MongoDB Atlas Vector Store directly as a tool, this pattern uses a tool specifically designed to summarize data in the vector store.

  The [connections flow](https://n8n.io/workflows/2465-building-your-first-whatsapp-chatbot/) (the linked example uses the In-Memory Vector Store, but the pattern is the same) in this case would look like this: AI agent (tools connector) -> Vector Store Question Answer Tool (Vector Store connector) -> In-Memory Vector store.

  ## Node parameters

  --8<-- "_snippets/integrations/builtin/cluster-nodes/vector-store-mode.md"

  --8<-- "_snippets/integrations/builtin/cluster-nodes/vector-store-rerank-results.md"

  <!-- vale off -->
  ### Get Many parameters
  <!-- vale on -->

  - **Mongo Collection**: Enter the name of the MongoDB collection to use.
  - **Vector Index Name**: Enter the name of the Vector Search index in your MongoDB Atlas collection.
  - **Embedding Field**: Enter the field name in your documents that contains the vector embeddings.
  - **Metadata Field**: Enter the field name in your documents that contains the text metadata.

  ### Insert Documents parameters

  - **Mongo Collection**: Enter the name of the MongoDB collection to use.
  - **Vector Index Name**: Enter the name of the Vector Search index in your MongoDB Atlas collection.
  - **Embedding Field**: Enter the field name in your documents that contains the vector embeddings.
  - **Metadata Field**: Enter the field name in your documents that contains the text metadata.

  ### Retrieve Documents parameters (As Vector Store for Chain/Tool)

  - **Mongo Collection**: Enter the name of the MongoDB collection to use.
  - **Vector Index Name**: Enter the name of the Vector Search index in your MongoDB Atlas collection.
  - **Embedding Field**: Enter the field name in your documents that contains the vector embeddings.
  - **Metadata Field**: Enter the field name in your documents that contains the text metadata.

  ### Retrieve Documents (As Tool for AI Agent) parameters

  - **Name**: The name of the vector store.
  - **Description**: Explain to the LLM what this tool does. A good, specific description allows LLMs to produce expected results more often.
  - **Mongo Collection**: Enter the name of the MongoDB collection to use.
  - **Vector Index Name**: Enter the name of the Vector Search index in your MongoDB Atlas collection.
  - **Limit**: Enter how many results to retrieve from the vector store. For example, set this to `10` to get the ten best results.

  ## Node options

  ### Options

  - **Metadata Filter**: Filters results based on metadata.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'mongodb-atlas-vector-store') ]]

  ## Related resources

  Refer to:

  - [LangChain's MongoDB Atlas Vector Search documentation](https://js.langchain.com/docs/integrations/vectorstores/mongodb_atlas){:target=_blank .external-link} for more information about the service.
  - [MongoDB Atlas Vector Search documentation](https://www.mongodb.com/docs/atlas/atlas-vector-search/){:target=_blank .external-link} for more information about MongoDB Atlas Vector Search.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  --8<-- "_snippets/self-hosting/starter-kits/self-hosted-ai-starter-kit.md"

properties_schema:
  [
    {
      "displayName": "Tip: Get a feel for vector stores in n8n with our",
      "name": "ragStarterCallout",
      "type": "callout",
      "default": "",
      "typeOptions": {
        "calloutAction": {
          "label": "RAG starter template",
          "type": "openSampleWorkflowTemplate",
          "templateId": "rag-starter-template"
        }
      }
    },
    {
      "displayName": "Operation Mode",
      "name": "mode",
      "type": "options",
      "default": "retrieve",
      "options": [
        {
          "name": "Get Many",
          "value": "load",
          "description": "Get many ranked documents from vector store for query",
          "action": "Get ranked documents from vector store"
        },
        {
          "name": "Insert Documents",
          "value": "insert",
          "description": "Insert documents into vector store",
          "action": "Add documents to vector store"
        },
        {
          "name": "Retrieve Documents (As Vector Store for Chain/Tool)",
          "value": "retrieve",
          "description": "Retrieve documents from vector store to be used as vector store with AI nodes",
          "action": "Retrieve documents for Chain/Tool as Vector Store",
          "outputConnectionType": "ai_vectorStore"
        },
        {
          "name": "Retrieve Documents (As Tool for AI Agent)",
          "value": "retrieve-as-tool",
          "description": "Retrieve documents from vector store to be used as tool with AI nodes",
          "action": "Retrieve documents for AI Agent as Tool",
          "outputConnectionType": "ai_tool"
        },
        {
          "name": "Update Documents",
          "value": "update",
          "description": "Update documents in vector store by ID",
          "action": "Update vector store documents"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve"
          ]
        }
      },
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Name",
      "name": "toolName",
      "type": "string",
      "default": "",
      "description": "Name of the vector store",
      "required": true,
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "lte": 1.2
              }
            }
          ],
          "mode": [
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "Description",
      "name": "toolDescription",
      "type": "string",
      "default": "",
      "description": "Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often",
      "required": true,
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve-as-tool"
          ]
        }
      },
      "typeOptions": {
        "rows": 2
      }
    },
    {
      "displayName": "MongoDB Collection",
      "name": "mongoCollection",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "required": true,
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "typeOptions": {
            "searchListMethod": "mongoCollectionSearch"
          }
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "placeholder": "e.g. my_collection"
        }
      ]
    },
    {
      "displayName": "Embedding",
      "name": "embedding",
      "type": "string",
      "default": "embedding",
      "description": "The field with the embedding array",
      "required": true
    },
    {
      "displayName": "Metadata Field",
      "name": "metadata_field",
      "type": "string",
      "default": "text",
      "description": "The text field of the raw data",
      "required": true
    },
    {
      "displayName": "Vector Index Name",
      "name": "vectorIndexName",
      "type": "string",
      "default": "",
      "description": "The name of the vector index",
      "required": true
    },
    {
      "displayName": "Embedding Batch Size",
      "name": "embeddingBatchSize",
      "type": "number",
      "default": 200,
      "description": "Number of documents to embed in a single batch",
      "displayOptions": {
        "show": {
          "mode": [
            "insert"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.1
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Clear Namespace",
          "name": "clearNamespace",
          "type": "boolean",
          "default": false,
          "description": "Whether to clear documents in the namespace before inserting new data"
        },
        {
          "displayName": "Namespace",
          "name": "namespace",
          "type": "string",
          "description": "Logical partition for documents. Uses metadata.namespace field for filtering.",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "mode": [
            "insert"
          ]
        }
      }
    },
    {
      "displayName": "Prompt",
      "name": "prompt",
      "type": "string",
      "default": "",
      "description": "Search prompt to retrieve matching documents from the vector store using similarity-based ranking",
      "required": true,
      "displayOptions": {
        "show": {
          "mode": [
            "load"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "topK",
      "type": "number",
      "default": 4,
      "description": "Number of top results to fetch from vector store",
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "Include Metadata",
      "name": "includeDocumentMetadata",
      "type": "boolean",
      "default": true,
      "description": "Whether or not to include document metadata",
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "Rerank Results",
      "name": "useReranker",
      "type": "boolean",
      "default": false,
      "description": "Whether or not to rerank results",
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "ID of an embedding entry",
      "required": true,
      "displayOptions": {
        "show": {
          "mode": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Namespace",
          "name": "namespace",
          "type": "string",
          "description": "Logical partition for documents. Uses metadata.namespace field for filtering.",
          "default": ""
        },
        {
          "displayName": "Metadata Filter",
          "name": "metadata",
          "type": "fixedCollection",
          "description": "Metadata to filter the document by",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "placeholder": "Add filter field",
          "options": [
            {
              "name": "metadataValues",
              "displayName": "Fields to Set",
              "values": [
                {
                  "displayName": "Name",
                  "name": "name",
                  "type": "string",
                  "default": "",
                  "required": true
                },
                {
                  "displayName": "Value",
                  "name": "value",
                  "type": "string",
                  "default": ""
                }
              ]
            }
          ]
        },
        {
          "displayName": "Pre Filter",
          "name": "preFilter",
          "type": "json",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": "",
          "placeholder": "{ \"key\": \"value\" }",
          "hint": "This is a filter applied in the $vectorSearch stage <a href=\"https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/#atlas-vector-search-pre-filter\">here</a>",
          "required": true,
          "description": "MongoDB Atlas Vector Search pre-filter"
        },
        {
          "displayName": "Post Filter Pipeline",
          "name": "postFilterPipeline",
          "type": "json",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": "",
          "placeholder": "[{ \"$match\": { \"$gt\": \"1950-01-01\" }, ... }]",
          "hint": "Learn more about aggregation pipeline <a href=\"https://docs.mongodb.com/manual/core/aggregation-pipeline/\">here</a>",
          "required": true,
          "description": "MongoDB aggregation pipeline in JSON format"
        }
      ],
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Namespace",
          "name": "namespace",
          "type": "string",
          "description": "Logical partition for documents. Uses metadata.namespace field for filtering.",
          "default": ""
        },
        {
          "displayName": "Metadata Filter",
          "name": "metadata",
          "type": "fixedCollection",
          "description": "Metadata to filter the document by",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "placeholder": "Add filter field",
          "options": [
            {
              "name": "metadataValues",
              "displayName": "Fields to Set",
              "values": [
                {
                  "displayName": "Name",
                  "name": "name",
                  "type": "string",
                  "default": "",
                  "required": true
                },
                {
                  "displayName": "Value",
                  "name": "value",
                  "type": "string",
                  "default": ""
                }
              ]
            }
          ]
        },
        {
          "displayName": "Pre Filter",
          "name": "preFilter",
          "type": "json",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": "",
          "placeholder": "{ \"key\": \"value\" }",
          "hint": "This is a filter applied in the $vectorSearch stage <a href=\"https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/#atlas-vector-search-pre-filter\">here</a>",
          "required": true,
          "description": "MongoDB Atlas Vector Search pre-filter"
        },
        {
          "displayName": "Post Filter Pipeline",
          "name": "postFilterPipeline",
          "type": "json",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": "",
          "placeholder": "[{ \"$match\": { \"$gt\": \"1950-01-01\" }, ... }]",
          "hint": "Learn more about aggregation pipeline <a href=\"https://docs.mongodb.com/manual/core/aggregation-pipeline/\">here</a>",
          "required": true,
          "description": "MongoDB aggregation pipeline in JSON format"
        }
      ],
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve"
          ]
        }
      }
    }
  ]

outputs:
  [
    "={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}"
  ]


node_type: nodes-langchain.vectorStorePGVector
package_name: @n8n/n8n-nodes-langchain
display_name: Postgres PGVector Store
description: Work with your data in Postgresql with the PGVector extension
category: transform
development_style: programmatic
version: 1.3
operations: []
credentials_required:
  [
  {
  "name": "postgres",
  "required": true,
  "testedBy": "postgresConnectionTest"
  }
  ]

updated_at: 2025-11-03 20:57:27
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: PGVector Vector Store node documentation
  description: Learn how to use the PGVector Vector Store node in n8n. Follow technical documentation to integrate PGVector Vector Store node into your workflows.
  priority: medium
  ---

  # PGVector Vector Store node

  PGVector is an extension of Postgresql. Use this node to interact with the PGVector tables in your Postgresql database. You can insert documents into a vector table, get documents from a vector table, retrieve documents to provide them to a retriever connected to a [chain](/glossary.md#ai-chain), or connect directly to an [agent](/glossary.md#ai-agent) as a [tool](/glossary.md#ai-tool).

  On this page, you'll find the node parameters for the PGVector node, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/postgres.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node usage patterns

  You can use the PGVector Vector Store node in the following patterns.

  ### Use as a regular node to insert and retrieve documents

  You can use the PGVector Vector Store as a regular node to insert or get documents. This pattern places the PGVector Vector Store in the regular connection flow without using an agent.

  You can see an example of this in scenario 1 of [this template](https://n8n.io/workflows/2621-ai-agent-to-chat-with-files-in-supabase-storage/) (the template uses the Supabase Vector Store, but the pattern is the same).

  ### Connect directly to an AI agent as a tool

  You can connect the PGVector Vector Store node directly to the tool connector of an [AI agent](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/index.md) to use a vector store as a resource when answering queries.

  Here, the connection would be: AI agent (tools connector) -> PGVector Vector Store node.

  ### Use a retriever to fetch documents

  You can use the [Vector Store Retriever](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.retrievervectorstore.md) node with the PGVector Vector Store node to fetch documents from the PGVector Vector Store node. This is often used with the [Question and Answer Chain](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainretrievalqa/index.md) node to fetch documents from the vector store that match the given chat input.

  An [example of the connection flow](https://n8n.io/workflows/1960-ask-questions-about-a-pdf-using-ai/) (the linked example uses Pinecone, but the pattern is the same) would be: Question and Answer Chain (Retriever connector) -> Vector Store Retriever (Vector Store connector) -> PGVector Vector Store.

  ### Use the Vector Store Question Answer Tool to answer questions

  Another pattern uses the [Vector Store Question Answer Tool](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolvectorstore.md) to summarize results and answer questions from the PGVector Vector Store node. Rather than connecting the PGVector Vector Store directly as a tool, this pattern uses a tool specifically designed to summarizes data in the vector store.

  The [connections flow](https://n8n.io/workflows/2465-building-your-first-whatsapp-chatbot/) (the linked example uses the Simple Vector Store, but the pattern is the same) in this case would look like this: AI agent (tools connector) -> Vector Store Question Answer Tool (Vector Store connector) -> Simple Vector store.

  ## Node parameters

  --8<-- "_snippets/integrations/builtin/cluster-nodes/vector-store-mode.md"

  --8<-- "_snippets/integrations/builtin/cluster-nodes/vector-store-rerank-results.md"

  <!-- vale off -->
  ### Get Many parameters
  <!-- vale on -->

  * **Table name**: Enter the name of the table you want to query.
  * **Prompt**: Enter your search query.
  * **Limit**: Enter a number to set how many results to retrieve from the vector store. For example, set this to `10` to get the ten best results.

  ### Insert Documents parameters

  * **Table name**: Enter the name of the table you want to query.

  ### Retrieve Documents parameters (As Vector Store for Chain/Tool)

  * **Table name**: Enter the name of the table you want to query.

  ### Retrieve Documents (As Tool for AI Agent) parameters

  * **Name**: The name of the vector store.
  * **Description**: Explain to the LLM what this tool does. A good, specific description allows LLMs to produce expected results more often.
  * **Table Name**: Enter the PGVector table to use.
  * **Limit**: Enter how many results to retrieve from the vector store. For example, set this to `10` to get the ten best results.

  ## Node options

  ### Collection

  A way to separate datasets in PGVector. This creates a separate table and column to keep track of which collection a vector belongs to.

  * **Use Collection**: Select whether to use a collection (turned on) or not (turned off).
  * **Collection Name**: Enter the name of the collection you want to use.
  * **Collection Table Name**: Enter the name of the table to store collection information in.

  ### Column Names

  The following options specify the names of the columns to store the vectors and corresponding information in:

  * **ID Column Name**
  * **Vector Column Name**
  * **Content Column Name**
  * **Metadata Column Name**

  ### Metadata Filter

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-root-nodes/vector-store-metadata-filter.md"

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'postgres-pgvector-store') ]]

  ## Related resources

  Refer to [LangChain's PGVector documentation](https://js.langchain.com/docs/integrations/vectorstores/pgvector){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"

  --8<-- "_snippets/self-hosting/starter-kits/self-hosted-ai-starter-kit.md"

properties_schema:
  [
    {
      "displayName": "Tip: Get a feel for vector stores in n8n with our",
      "name": "ragStarterCallout",
      "type": "callout",
      "default": "",
      "typeOptions": {
        "calloutAction": {
          "label": "RAG starter template",
          "type": "openSampleWorkflowTemplate",
          "templateId": "rag-starter-template"
        }
      }
    },
    {
      "displayName": "Operation Mode",
      "name": "mode",
      "type": "options",
      "default": "retrieve",
      "options": [
        {
          "name": "Get Many",
          "value": "load",
          "description": "Get many ranked documents from vector store for query",
          "action": "Get ranked documents from vector store"
        },
        {
          "name": "Insert Documents",
          "value": "insert",
          "description": "Insert documents into vector store",
          "action": "Add documents to vector store"
        },
        {
          "name": "Retrieve Documents (As Vector Store for Chain/Tool)",
          "value": "retrieve",
          "description": "Retrieve documents from vector store to be used as vector store with AI nodes",
          "action": "Retrieve documents for Chain/Tool as Vector Store",
          "outputConnectionType": "ai_vectorStore"
        },
        {
          "name": "Retrieve Documents (As Tool for AI Agent)",
          "value": "retrieve-as-tool",
          "description": "Retrieve documents from vector store to be used as tool with AI nodes",
          "action": "Retrieve documents for AI Agent as Tool",
          "outputConnectionType": "ai_tool"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve"
          ]
        }
      },
      "typeOptions": {
        "containerClass": "ndv-connection-hint-notice"
      }
    },
    {
      "displayName": "Name",
      "name": "toolName",
      "type": "string",
      "default": "",
      "description": "Name of the vector store",
      "required": true,
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "lte": 1.2
              }
            }
          ],
          "mode": [
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "Description",
      "name": "toolDescription",
      "type": "string",
      "default": "",
      "description": "Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often",
      "required": true,
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve-as-tool"
          ]
        }
      },
      "typeOptions": {
        "rows": 2
      }
    },
    {
      "displayName": "Table Name",
      "name": "tableName",
      "type": "string",
      "default": "n8n_vectors",
      "description": "The table name to store the vectors in. If table does not exist, it will be created."
    },
    {
      "displayName": "Embedding Batch Size",
      "name": "embeddingBatchSize",
      "type": "number",
      "default": 200,
      "description": "Number of documents to embed in a single batch",
      "displayOptions": {
        "show": {
          "mode": [
            "insert"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.1
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Collection",
          "name": "collection",
          "type": "fixedCollection",
          "description": "Collection of vectors",
          "default": {
            "values": {
              "useCollection": false,
              "collectionName": "n8n",
              "collectionTable": "n8n_vector_collections"
            }
          },
          "typeOptions": {},
          "placeholder": "Add Collection Settings",
          "options": [
            {
              "name": "values",
              "displayName": "Collection Settings",
              "values": [
                {
                  "displayName": "Use Collection",
                  "name": "useCollection",
                  "type": "boolean",
                  "default": false
                },
                {
                  "displayName": "Collection Name",
                  "name": "collectionName",
                  "type": "string",
                  "default": "n8n",
                  "required": true,
                  "displayOptions": {
                    "show": {
                      "useCollection": [
                        true
                      ]
                    }
                  }
                },
                {
                  "displayName": "Collection Table Name",
                  "name": "collectionTableName",
                  "type": "string",
                  "default": "n8n_vector_collections",
                  "required": true,
                  "displayOptions": {
                    "show": {
                      "useCollection": [
                        true
                      ]
                    }
                  }
                }
              ]
            }
          ]
        },
        {
          "displayName": "Column Names",
          "name": "columnNames",
          "type": "fixedCollection",
          "description": "The names of the columns in the PGVector table",
          "default": {
            "values": {
              "idColumnName": "id",
              "vectorColumnName": "embedding",
              "contentColumnName": "text",
              "metadataColumnName": "metadata"
            }
          },
          "typeOptions": {},
          "placeholder": "Set Column Names",
          "options": [
            {
              "name": "values",
              "displayName": "Column Name Settings",
              "values": [
                {
                  "displayName": "ID Column Name",
                  "name": "idColumnName",
                  "type": "string",
                  "default": "id",
                  "required": true
                },
                {
                  "displayName": "Vector Column Name",
                  "name": "vectorColumnName",
                  "type": "string",
                  "default": "embedding",
                  "required": true
                },
                {
                  "displayName": "Content Column Name",
                  "name": "contentColumnName",
                  "type": "string",
                  "default": "text",
                  "required": true
                },
                {
                  "displayName": "Metadata Column Name",
                  "name": "metadataColumnName",
                  "type": "string",
                  "default": "metadata",
                  "required": true
                }
              ]
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "mode": [
            "insert"
          ]
        }
      }
    },
    {
      "displayName": "Prompt",
      "name": "prompt",
      "type": "string",
      "default": "",
      "description": "Search prompt to retrieve matching documents from the vector store using similarity-based ranking",
      "required": true,
      "displayOptions": {
        "show": {
          "mode": [
            "load"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "topK",
      "type": "number",
      "default": 4,
      "description": "Number of top results to fetch from vector store",
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "Include Metadata",
      "name": "includeDocumentMetadata",
      "type": "boolean",
      "default": true,
      "description": "Whether or not to include document metadata",
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "Rerank Results",
      "name": "useReranker",
      "type": "boolean",
      "default": false,
      "description": "Whether or not to rerank results",
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "ID of an embedding entry",
      "required": true,
      "displayOptions": {
        "show": {
          "mode": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Distance Strategy",
          "name": "distanceStrategy",
          "type": "options",
          "default": "cosine",
          "description": "The method to calculate the distance between two vectors",
          "options": [
            {
              "name": "Cosine",
              "value": "cosine"
            },
            {
              "name": "Inner Product",
              "value": "innerProduct"
            },
            {
              "name": "Euclidean",
              "value": "euclidean"
            }
          ]
        },
        {
          "displayName": "Collection",
          "name": "collection",
          "type": "fixedCollection",
          "description": "Collection of vectors",
          "default": {
            "values": {
              "useCollection": false,
              "collectionName": "n8n",
              "collectionTable": "n8n_vector_collections"
            }
          },
          "typeOptions": {},
          "placeholder": "Add Collection Settings",
          "options": [
            {
              "name": "values",
              "displayName": "Collection Settings",
              "values": [
                {
                  "displayName": "Use Collection",
                  "name": "useCollection",
                  "type": "boolean",
                  "default": false
                },
                {
                  "displayName": "Collection Name",
                  "name": "collectionName",
                  "type": "string",
                  "default": "n8n",
                  "required": true,
                  "displayOptions": {
                    "show": {
                      "useCollection": [
                        true
                      ]
                    }
                  }
                },
                {
                  "displayName": "Collection Table Name",
                  "name": "collectionTableName",
                  "type": "string",
                  "default": "n8n_vector_collections",
                  "required": true,
                  "displayOptions": {
                    "show": {
                      "useCollection": [
                        true
                      ]
                    }
                  }
                }
              ]
            }
          ]
        },
        {
          "displayName": "Column Names",
          "name": "columnNames",
          "type": "fixedCollection",
          "description": "The names of the columns in the PGVector table",
          "default": {
            "values": {
              "idColumnName": "id",
              "vectorColumnName": "embedding",
              "contentColumnName": "text",
              "metadataColumnName": "metadata"
            }
          },
          "typeOptions": {},
          "placeholder": "Set Column Names",
          "options": [
            {
              "name": "values",
              "displayName": "Column Name Settings",
              "values": [
                {
                  "displayName": "ID Column Name",
                  "name": "idColumnName",
                  "type": "string",
                  "default": "id",
                  "required": true
                },
                {
                  "displayName": "Vector Column Name",
                  "name": "vectorColumnName",
                  "type": "string",
                  "default": "embedding",
                  "required": true
                },
                {
                  "displayName": "Content Column Name",
                  "name": "contentColumnName",
                  "type": "string",
                  "default": "text",
                  "required": true
                },
                {
                  "displayName": "Metadata Column Name",
                  "name": "metadataColumnName",
                  "type": "string",
                  "default": "metadata",
                  "required": true
                }
              ]
            }
          ]
        },
        {
          "displayName": "Metadata Filter",
          "name": "metadata",
          "type": "fixedCollection",
          "description": "Metadata to filter the document by",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "placeholder": "Add filter field",
          "options": [
            {
              "name": "metadataValues",
              "displayName": "Fields to Set",
              "values": [
                {
                  "displayName": "Name",
                  "name": "name",
                  "type": "string",
                  "default": "",
                  "required": true
                },
                {
                  "displayName": "Value",
                  "name": "value",
                  "type": "string",
                  "default": ""
                }
              ]
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "mode": [
            "load",
            "retrieve-as-tool"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Distance Strategy",
          "name": "distanceStrategy",
          "type": "options",
          "default": "cosine",
          "description": "The method to calculate the distance between two vectors",
          "options": [
            {
              "name": "Cosine",
              "value": "cosine"
            },
            {
              "name": "Inner Product",
              "value": "innerProduct"
            },
            {
              "name": "Euclidean",
              "value": "euclidean"
            }
          ]
        },
        {
          "displayName": "Collection",
          "name": "collection",
          "type": "fixedCollection",
          "description": "Collection of vectors",
          "default": {
            "values": {
              "useCollection": false,
              "collectionName": "n8n",
              "collectionTable": "n8n_vector_collections"
            }
          },
          "typeOptions": {},
          "placeholder": "Add Collection Settings",
          "options": [
            {
              "name": "values",
              "displayName": "Collection Settings",
              "values": [
                {
                  "displayName": "Use Collection",
                  "name": "useCollection",
                  "type": "boolean",
                  "default": false
                },
                {
                  "displayName": "Collection Name",
                  "name": "collectionName",
                  "type": "string",
                  "default": "n8n",
                  "required": true,
                  "displayOptions": {
                    "show": {
                      "useCollection": [
                        true
                      ]
                    }
                  }
                },
                {
                  "displayName": "Collection Table Name",
                  "name": "collectionTableName",
                  "type": "string",
                  "default": "n8n_vector_collections",
                  "required": true,
                  "displayOptions": {
                    "show": {
                      "useCollection": [
                        true
                      ]
                    }
                  }
                }
              ]
            }
          ]
        },
        {
          "displayName": "Column Names",
          "name": "columnNames",
          "type": "fixedCollection",
          "description": "The names of the columns in the PGVector table",
          "default": {
            "values": {
              "idColumnName": "id",
              "vectorColumnName": "embedding",
              "contentColumnName": "text",
              "metadataColumnName": "metadata"
            }
          },
          "typeOptions": {},
          "placeholder": "Set Column Names",
          "options": [
            {
              "name": "values",
              "displayName": "Column Name Settings",
              "values": [
                {
                  "displayName": "ID Column Name",
                  "name": "idColumnName",
                  "type": "string",
                  "default": "id",
                  "required": true
                },
                {
                  "displayName": "Vector Column Name",
                  "name": "vectorColumnName",
                  "type": "string",
                  "default": "embedding",
                  "required": true
                },
                {
                  "displayName": "Content Column Name",
                  "name": "contentColumnName",
                  "type": "string",
                  "default": "text",
                  "required": true
                },
                {
                  "displayName": "Metadata Column Name",
                  "name": "metadataColumnName",
                  "type": "string",
                  "default": "metadata",
                  "required": true
                }
              ]
            }
          ]
        },
        {
          "displayName": "Metadata Filter",
          "name": "metadata",
          "type": "fixedCollection",
          "description": "Metadata to filter the document by",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "placeholder": "Add filter field",
          "options": [
            {
              "name": "metadataValues",
              "displayName": "Fields to Set",
              "values": [
                {
                  "displayName": "Name",
                  "name": "name",
                  "type": "string",
                  "default": "",
                  "required": true
                },
                {
                  "displayName": "Value",
                  "name": "value",
                  "type": "string",
                  "default": ""
                }
              ]
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve"
          ]
        }
      }
    }
  ]

outputs:
[cell repeats an earlier one in this file: 425 characters]


