Skip to main content

n8n Node — Coding Agent Reference

Attach this document at the start of any AI session where you are building VH3 AI n8n workflows. It covers the node’s resources, operations, routing decisions, patterns, and constraints, and works with Claude.ai, Claude Code, Cursor, or any chat session with the file attached.

Connecting your AI assistant to n8n

The official n8n connector (developed by n8n GmbH, available in the Claude connector directory) connects Claude to your live n8n instance. On instances running n8n v2.18.4 or higher, it exposes the full instance-level MCP — including workflow building, not just execution. What it can do (verified on VH3-managed instances): Setup (Claude.ai) — step by step:
1

Open Claude Code in Code mode

Switch to Code mode in Claude.ai. Your active connectors appear in the input bar at the bottom of the screen.
Claude Code main screen showing the connector bar with an n8n connector active
2

Open Connectors → Browse connectors

Click on the Connectors area, then click Add → Browse connectors to open the connector directory.
Claude Code connectors panel with the Add dropdown open showing Browse connectors option
3

Search for n8n in the directory

In the Directory, select Connectors and search for n8n. The official n8n connector by n8n GmbH will appear.
Claude.ai connector directory search showing the n8n connector result
4

In n8n, open Settings → Instance-level MCP

Switch to your n8n instance. Click Settings in the left sidebar and select Instance-level MCP from the menu.
n8n settings sidebar with Instance-level MCP highlighted in the menu
5

Enable MCP and copy the Server URL

Toggle Instance-level MCP on, then copy the Server URL shown in the Connection details panel. This is the URL you’ll paste back into Claude.
n8n Instance-level MCP settings page showing the toggle enabled and Server URL https://n8n.vh3.ai/mcp-server/http
VH3-managed instances: Your URL is https://{your-company}.n8n.vh3.ai/mcp-server/http. Contact VH3 support if Instance-level MCP is not yet enabled on your instance.
6

Paste the Server URL and connect

Back in the Claude connector directory, click the n8n connector. When the Install n8n dialog appears, paste your Server URL into the field and click Continue.
7

Allow OAuth access

Claude will ask for permission to access your n8n instance. Click Allow — this grants Claude the ability to list, execute, create, and update workflows on your behalf.
OAuth permission screen showing Claude wants access to your n8n instance with a list of permitted actions
8

Connector active — start building

The n8n connector now appears in your directory and is active in the Claude Code input bar. You can now ask Claude to build, validate, and deploy workflows directly on your instance.
Claude connector directory showing the n8n connector listed and active
Setup (Claude Code — CLI):
Enable instance-level MCP in your n8n instance first: Settings → Instance-level MCP. Full tool reference: n8n MCP tools reference
VH3-managed instances: Your n8n URL is https://{your-company}.n8n.vh3.ai. The n8n-nodes-vh3ai community node and VH3 credentials are pre-installed. Contact VH3 support if you need your MCP access token or API key.

This reference document — the VH3 AI layer

The official n8n MCP knows n8n’s built-in nodes and the Workflow SDK. It does not know the VH3 AI community node — its resources, operations, routing rules, or patterns. Without this document, an AI assistant will not know:
  • Which resource and operation to choose for a given question (section 5)
  • That jobFeed should be preferred over jobs for reads (section 3d)
  • The correct timeAxis for performance vs intake questions (section 4)
  • How ingestEmail status values route downstream (section 6.8)
  • That custom field IDs must be fetched from the job type first (section 10)
  • The exact node type name (n8n-nodes-vh3ai.vh3Ai) and credential type (vh3AiApi)
Attach this document at the start of any session where you are building VH3 AI workflows. Combined with the n8n connector, this is the complete stack.

Optional: czlonkowski/n8n-mcp (Cursor and offline authoring)

czlonkowski/n8n-mcp is a separate community MCP server. It is not what the official Claude n8n connector uses, and is not required for the build experience described above. Consider it if you are working in Cursor or another editor, want stricter pre-deploy validation, or need offline node schema lookup without a live n8n connection. It uses different tool names (n8n_create_workflow, get_node, etc.) and requires a one-time install via npx or Docker. Setup: github.com/czlonkowski/n8n-mcp

Summary


1. Identity


2. Credential: vh3AiApi

Four fields are stored in the credential. Two are fixed defaults and should not be changed unless VH3 support instructs otherwise. When generating a VH3 AI node block in JSON, reference the credential as:

3. Resource taxonomy

The node exposes 30 resources split across three internal API layers. This split is invisible in the UI but critical for understanding timeout, latency, and data freshness expectations.

3a. BigChange data resources (CRUD)

These map directly to the BigChange field-service platform. Operations are typically fast (<2 s). The resource values are used in $parameter["resource"].

3b. Web Services resources (BigChange driver API)

Thin proxy over the BigChange Web Services layer. Responses use different envelope shapes (result array, not data).

3c. VH3 AI intelligence resources

These call the FSI intelligence layer. They are slower (2–25 s depending on operation) and consume LLM tokens for synthesis operations.

3d. FSI-first principle

When both a BigChange resource and a VH3 AI intelligence resource can answer the same question, prefer the intelligence layer. The FSI layer ingests and enriches all job data continuously. For read operations — job feeds, aggregations, search, analysis, monitoring — it is faster (often cached), returns richer data, and avoids unnecessary load on the BigChange API.
The intelligence layer does not write to BigChange. It is read-only for operational intelligence. To create or modify records — jobs, contacts, invoices, notes — use the BigChange CRUD resources (section 3a).

4. The time axis — critical for data quality

Several Job Feed and Aggregate Jobs operations accept a dateField or timeAxis parameter. Choosing the wrong axis produces misleading results.

Available timestamp fields

Decision rules

Default to actualStartAt for any performance or workload question. It reflects real field activity and excludes jobs that were planned but never worked.
createdAt includes jobs that were planned but never attended. Do not use it for performance analysis unless the user is explicitly asking about intake volume or pipeline.
Partial periods: When the current period (e.g. this_week) is still in progress, say so before drawing conclusions. The compareTo parameter (previous_period, same_period_last_week, same_period_last_month) handles apples-to-apples comparison automatically — prefer it over inventing date ranges.

5. Routing guide — which resource and operation to use

Use this table when the user’s intent is expressed in natural language, to select the right VH3 AI node operation.

6. Per-resource operation reference

6.1 Job Feed (jobFeed)

Aggregate metrics: job_count, completion_rate, first_visit_fix_rate, avg_start_delta_mins, avg_end_delta_mins. Period presets: today, yesterday, this_week, last_week, this_month, last_month, last_7_days, last_30_days, last_90_days. Override with startDate/endDate for custom ranges. Date filtering on semantic search operations is applied client-side after the API responds. Set maxAgeMonths to limit result age.

6.3 Sentinel (sentinel)

Available sentinels: carryover_accumulation, customer_noncomplete_anomaly, customer_risk_escalation, data_quality_alert, engineer_performance_slip, fvf_rate_drop, new_problem_site, repeat_failure_escalation, scheduling_accuracy_drift, site_deterioration, sla_breach_cluster, workload_imbalance.
For scheduled automations, use getSentinelResults (cached, instant) rather than runSentinels (re-computes) to avoid latency in time-sensitive triggers.

6.4 Report (reports)

Report types: start_of_day, midday, close_of_business, day_review, start_of_week, midweek, end_of_week. Set workflow/node timeout to ≥ 30 s for narrative reports.

6.5 Investigate (investigate)

6.6 Case (cases)

6.7 Connie (connie)

For AI Agent workflows, use connieChat with sessionKey-scoped sessionId so follow-up messages retain context.

6.8 Email (email)

ingestEmail status values — every implementation must route on this field:
PDF vs HTML input: Many FM portals send job orders as PDF attachments rather than HTML body. The ingestEmail operation accepts plain text (emailText) — it does not process binary PDFs directly. For PDF-based portals, extract the text first using n8n’s Extract From File node before passing it to ingestEmail. Build your workflow to switch on whether the email has a PDF attachment and handle both paths feeding the same ingestEmail node.

6.9 Briefing (briefing)

6.10 Account Report (accountReport)

6.11 Pulse (pulse)

6.12 Intelligence (intelligence)

6.13 Weather (weather)

6.14 Users (users)


7. BigChange CRUD resources — operation summary

All BigChange resources follow a consistent pattern. Key operations per resource:

Jobs (jobs)

create, update, get, getAll, delete, schedule, unschedule, start, setResult, cancel, addStock, deleteStock, updateStockQty, addWaypoint, deleteWaypoint, addRecurrence

Contacts (contacts)

create, update, get, getAll, getByRef, delete, getGroups

Resources/Engineers (resources)

get, getAll, getGroups

Vehicles (vehicles)

get, getAll, create, update, getGroups

Invoices (invoices)

get, getAll, create, addLine, markSent, markPaid, cancel

Notes (notes)

create, update, get, getAll, delete

Persons (persons)

create, update, get, getAll, delete, getConsentHistory

Quotes (quotes)

get, getAll, create, update, addLine, markSent, markAccepted, markRejected

Sales Opportunities (salesOpportunities)

get, getAll, update, addLine, deleteLine, listProbabilities, listStages

Purchase Orders (purchaseOrders)

get, getAll, create, update, addLine, listSeries

Job Groups (jobGroups)

get, getAll, getStatusHistory

Stock (stock)

getCategories, getDetails, getItems, getMovements, getSuppliers

Reference Data (referenceData)

getDepartmentCodes, getNominalCodes

Worksheets (worksheets)

get, getAll, getQuestions, getAnswers

Worksheet Groups (worksheetGroups)

get, getAll

Job Types (jobTypes)

getAll

8. Using the node as an AI Tool sub-node

Because usableAsTool: true is set, the node can be attached directly to an AI Agent node as a tool. The agent reads each operation’s description field at runtime to decide which to call.

Architecture for an agent workflow

Key agent configuration notes

  1. System prompt: Copy the system message from /agent-kits/n8n-agents. It encodes the time-axis rules, identity scoping, and response format. Do not re-describe parameter enums in the system prompt — they live in the tool descriptions already.
  2. Memory: Use Buffer Window with contextWindowLength: 10. Set sessionKey to the channel ID or user ID so follow-up queries retain context.
  3. Timeouts: Set the VH3 AI Tool timeout to ≥ 30 s. Investigation and narrative reports regularly take 20–25 s; default short timeouts will fail silently.
  4. Token cost: Each tool call adds tokens. Prefer fast operations (search, jobFeed, sentinel) in high-frequency triggers. Reserve investigate and reports for steps that genuinely need language synthesis.

Combining the VH3 AI Tool with other LangChain sub-nodes

Complex ingestion workflows often pair the VH3 AI Tool with other LangChain nodes in the same agent or as adjacent steps. A common pattern is using the Information Extractor node (with a lightweight model such as Gemini Flash) to extract typed custom field values from unstructured email or document text — using the custom field schema fetched from Job Types at runtime to build the extraction prompt. This keeps field extraction data-driven rather than hardcoded to a specific job type, and handles schema changes without workflow edits. See Pattern F in section 9.

When to use deterministic nodes vs. an AI Agent


9. Workflow patterns

Pattern A: Daily sentinel digest to Slack

Pattern B: Email triage pipeline

Pattern C: Enriched job briefing on job creation

Pattern D: Monthly account report loop

Pattern E: Conversational ops assistant (AI Agent)

Pattern F: FM portal email → job creation with custom field extraction

This is the core portal ingestion pattern. The key non-obvious steps are the PDF/HTML split, the Information Extractor for custom fields, and the Wait + verify step that handles indexing lag between BigChange creation and FSI visibility.
Any workflow with more than two configurable values — type IDs, contact IDs, email addresses, Slack channels — should centralise them in a Set node at the start. This makes the workflow easy to adapt per tenant without hunting through individual node parameters.

Pattern G: Bulk tabular import (CSV / XLSX → jobs)

Converting spreadsheet rows into synthetic portal email bodies lets the same ingestEmail pipeline handle both live emails and bulk imports without duplicating job creation logic.

10. Important constraints

General

  • Never expose internal IDs in agent replies. Use job references, engineer names, customer names, and site addresses.
  • companyId in credentials is required for single-record Get operations on BigChange resources. It is not required for VH3 AI intelligence operations.
  • simplify: true (where available) strips null, empty string, and empty array fields from responses — recommended when passing data downstream.
  • returnAll: true on list operations uses automatic pagination. Only use it when you genuinely need the full dataset; large tenants can have thousands of jobs.
  • Batch email classification (batchClassifyEmail) is significantly more efficient than calling classifyEmail in a loop. Use it whenever you have multiple emails to process in the same step.
  • Binary data in workflows. Any workflow that handles file attachments (PDFs, spreadsheets, images) should have Binary mode set to Filesystem in the workflow settings. Without this, binary payloads are stored inline with execution records, which causes memory pressure and can silently fail on large files. Set this before building any attachment-handling or import workflow.

Destructive actions — confirm before generating

Any operation that creates, updates, deletes, cancels, or transitions a BigChange record is irreversible or difficult to undo. Before generating a workflow that includes these operations:
  1. Confirm intent explicitly with the user — do not infer that a write is needed from context alone.
  2. Check for existing records before creating. Duplicate jobs, contacts, or invoices are a common source of data quality problems.
  3. Scope updates narrowly — patch only the fields the user specified. Do not reset or overwrite fields that were not mentioned.
  4. If you are unsure about the correct approach for a write operation, say so and ask the user rather than proceeding on an assumption.

Custom fields on jobs — fetch the job type first

BigChange jobs support custom fields whose schema is defined per job type. The available fields, their IDs, and their value types vary by tenant configuration.
Before constructing a Create Job or Update Job payload that includes custom fields, always fetch the job type first using Job Type (BigChange) → getAll and inspect the returned custom field definitions. Do not guess field IDs or types — they are not portable between job types or tenants.
The same principle applies to other entities with custom field support (contacts, resources). If you are unsure whether custom fields are involved, ask.

Polling frequency

  • Avoid high-frequency polling loops with expensive operations. investigate, generateReport, and generateBriefing are not suitable for loops that run more than once per trigger event.
  • For sentinel monitoring, prefer getSentinelResults (cached, returns pre-computed results instantly) over runSentinels (re-computes) in any schedule that runs more than once or twice per day.
  • Where BigChange supports webhooks or event-based triggers, use them in preference to polling on a tight schedule.
  • If a workflow needs to wait for a job status to change, use a wait/delay node with a reasonable interval rather than a tight loop.

Relative timestamps in expressions

Hardcoded dates make workflows brittle. Use n8n’s Luxon-based $now expression for any date that should be calculated at runtime.
Use these patterns when populating dateFrom, dateTo, startDate, endDate, and month fields. Never hardcode a date string in a workflow intended to run on a schedule.

11. Workflow authoring practice

Sticky notes

Use n8n’s Sticky Note node liberally on the canvas. Add a sticky note:
  • At the top of every workflow describing its purpose, trigger conditions, and any VH3 or BigChange-specific context a future editor will need.
  • Beside any node that calls a write operation, explaining why the write is necessary and what happens if it fails.
  • Wherever a parameter value is non-obvious (e.g. a specific contact ID, hardcoded job type, or calculated expression) to explain the reasoning.
  • At branch points (Switch, IF) to document the routing logic in plain English.
Sticky notes have no execution cost and make a significant difference when workflows are revisited weeks later or handed to another developer.

Capturing user preferences and recurring patterns

When building workflows for a specific tenant or user, notice patterns that emerge in how they describe their work:
  • Preferred job statuses, result values, or engineer groupings they always filter by.
  • Specific customers or sites they monitor closely.
  • Report cadences and delivery channels they rely on.
  • Naming conventions for workflows, notes, and cases.
Where the same preference appears more than once, consider surfacing it as a workflow-level variable or a dedicated config node at the top of the workflow rather than embedding it in multiple node parameters. This makes the workflow easier to adapt without hunting through individual nodes. If you observe a pattern that suggests a repeating automation opportunity (e.g. the user manually runs the same report every Monday), point it out and offer to formalise it.

12. Quick reference: n8n JSON node block shape

The subtitle expression on the node is: ={{$parameter["operation"] + " (" + $parameter["resource"] + ")"}} — you do not need to set it manually in JSON.

n8n Community Node

Installation, credentials, hosting, and operation list.

n8n Agent Prompts

System prompt for AI Agent node workflows.

Verified on n8n

Official integration page and full action catalogue.

GitHub

Source code, changelog, and contribution guide.