AutomationFlowsAI & RAG › Evaluation Metric Example: Check If Tool Was Called

Evaluation Metric Example: Check If Tool Was Called

ByDavid Roberts @davidn8n on n8n.io

This is a template for n8n's evaluation feature.

Chat trigger trigger★★★★☆ complexityAI-powered15 nodesAgentOpenAI ChatTool CalculatorHTTP Request ToolChat TriggerEvaluation TriggerEvaluation
AI & RAG Trigger: Chat trigger Nodes: 15 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #4268 — we link there as the canonical source.

This workflow follows the Agent → Chat Trigger recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "ffd0cca6-4a60-4058-b3fb-c92d949ea864",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -960,
        -120
      ],
      "parameters": {
        "options": {
          "returnIntermediateSteps": true
        }
      },
      "typeVersion": 1.9
    },
    {
      "id": "73055399-e667-45cb-8a32-accb83dd74f8",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1000,
        140
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "54ffa0e9-dbf7-4406-9952-485ca46d1172",
      "name": "Calculator",
      "type": "@n8n/n8n-nodes-langchain.toolCalculator",
      "position": [
        -840,
        140
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "09dcce53-ce33-4263-b903-655db12d13dd",
      "name": "Check if tool called",
      "type": "n8n-nodes-base.set",
      "position": [
        -340,
        -240
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "58c48e6f-4a12-4bf6-94ae-705244273a84",
              "name": "tool_called",
              "type": "boolean",
              "value": "={{ $json.intermediateSteps.filter(x => x.action.tool == $('When fetching a dataset row').item.json.tool_to_call).length > 0 }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "62fb0980-6c8e-4ab6-b914-59339b4b385f",
      "name": "Fetch a webpage",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -700,
        140
      ],
      "parameters": {
        "url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "ec4c82df-8804-49f2-a8ba-348f29b97cd6",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -980,
        -200
      ],
      "parameters": {
        "color": 7,
        "width": 300,
        "height": 220,
        "content": "Make sure to enable 'Return intermediate steps' in the agent, to get the list of executed tools"
      },
      "typeVersion": 1
    },
    {
      "id": "f6fa8aef-4362-4691-85fc-2612eb1dee63",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -1440,
        -240
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "d1274230-aa4d-4456-93ea-8123e263df7d",
      "name": "Match chat format",
      "type": "n8n-nodes-base.set",
      "position": [
        -1220,
        40
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e6e064bb-ac06-40ca-97bf-42f682b30065",
              "name": "chatInput",
              "type": "string",
              "value": "={{ $json.question }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "474a2321-7a4c-41be-a8fa-718f5a093171",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -380,
        -320
      ],
      "parameters": {
        "color": 7,
        "width": 180,
        "height": 240,
        "content": "Check whether the list of executed tools contains the target tool"
      },
      "typeVersion": 1
    },
    {
      "id": "3351706d-e7e9-4701-9224-b4c873167c0d",
      "name": "Return chat response",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -340,
        40
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "e7beb2d8-f864-4aea-84f2-0d82987f52f8",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1740,
        -280
      ],
      "parameters": {
        "width": 200,
        "height": 500,
        "content": "## How it works\nThis template shows how to calculate a workflow evaluation metric: **whether a specific tool was called** by an agent.\n\nYou can find more information on workflow evaluation [here](https://docs.n8n.io/advanced-ai/evaluations/overview), and other metric examples [here](https://docs.n8n.io/advanced-ai/evaluations/metric-based-evaluations/#2-calculate-metrics)."
      },
      "typeVersion": 1
    },
    {
      "id": "a990cca2-7ea5-4d43-9cc2-b6257299bcc1",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1500,
        -60
      ],
      "parameters": {
        "color": 7,
        "width": 220,
        "height": 260,
        "content": "Read in [this test dataset](https://docs.google.com/spreadsheets/d/1uuPS5cHtSNZ6HNLOi75A2m8nVWZrdBZ_Ivf58osDAS8/edit?gid=969651976#gid=969651976) of questions and the tools that should be called when answering them"
      },
      "typeVersion": 1
    },
    {
      "id": "f0f7e18c-029f-4e0a-ac2f-168e10b5f51f",
      "name": "When fetching a dataset row",
      "type": "n8n-nodes-base.evaluationTrigger",
      "position": [
        -1440,
        40
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1uuPS5cHtSNZ6HNLOi75A2m8nVWZrdBZ_Ivf58osDAS8/edit?gid=969651976#gid=969651976"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1uuPS5cHtSNZ6HNLOi75A2m8nVWZrdBZ_Ivf58osDAS8/edit?gid=969651976#gid=969651976"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "e0c49dc5-a06b-4552-b53c-e5dfc51017e0",
      "name": "Evaluation",
      "type": "n8n-nodes-base.evaluation",
      "position": [
        -120,
        -240
      ],
      "parameters": {
        "metrics": {
          "assignments": [
            {
              "id": "66ed21d5-a10a-47a3-993d-459aa4a4fbba",
              "name": "tool_called",
              "type": "number",
              "value": "={{ $json.tool_called.toNumber() }}"
            }
          ]
        },
        "operation": "setMetrics"
      },
      "typeVersion": 4.6
    },
    {
      "id": "5b14c47b-2dae-4ca7-882c-d0ec722eadab",
      "name": "Evaluating?",
      "type": "n8n-nodes-base.evaluation",
      "position": [
        -580,
        -120
      ],
      "parameters": {
        "operation": "checkIfEvaluating"
      },
      "typeVersion": 4.6
    }
  ],
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Evaluating?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculator": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Evaluating?": {
      "main": [
        [
          {
            "node": "Check if tool called",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Return chat response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch a webpage": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Match chat format": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Check if tool called": {
      "main": [
        [
          {
            "node": "Evaluation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When fetching a dataset row": {
      "main": [
        [
          {
            "node": "Match chat format",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This is a template for n8n's evaluation feature.

Source: https://n8n.io/workflows/4268/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Score open-ended AI responses with a judge model. This template shows how to evaluate a customer support agent using a separate LLM that rates each response on correctness and helpfulness, going beyon

Chat Trigger, Evaluation Trigger, Agent +3
AI & RAG

💰 Beginner Investor – Learn the market faster with AI-powered insights guiding your decisions. 📈 Retail Trader – Optimize your trading strategy with in-depth analysis typically reserved for profession

HTTP Request, Output Parser Structured, OpenAI Chat +4
AI & RAG

Who is this workflow for? This workflow is designed for SEO analysts, content creators, marketing agencies, and developers who need to index a website and then interact with its content as if it were

Agent, OpenAI Chat, Memory Buffer Window +10
AI & RAG

This workflow transforms WhatsApp into a powerful personal AI using n8n + Green-API. Send text or voice messages — the assistant understands intent and handles daily tasks automatically. 💰 Expense & i

Tool Calculator, Google Sheets Tool, OpenAI Chat +10
AI & RAG

Categories: AI Agents, Design Automation, Business Tools

Tool Workflow, HTTP Request Tool, Memory Buffer Window +7