Two AI agents get the same one-sentence brief, the same model, and the same n8n Cloud instance. One drives the n8n-as-code CLI, the other drives n8n's own native MCP server. Every figure below is computed from the deployed workflow by the n8n server's own validation RPC — no model grades anything.
The four scored axes, each normalised 0-100. Further from the centre is better on every one of them, tokens and seconds included: the axis is efficiency, not cost. Two of the four are relative, so a branch score on them moves when the other branch moves. It happened here once: between two consecutive published runs Native MCP was not re-run at all, same builds, same tokens, same seconds, and its token score still rose because n8n-as-code had got more expensive. A score going up does not always mean that branch did better. Mean of 6 runs on the current weights, across 3 orchestrator(s) and 3 model(s). Every run is listed below. 1 earlier run(s) are in that table but out of this chart: they were scored under a different weight scheme.
| Component | Share | Source |
|---|---|---|
| Requirement coverage | 40 % | Required capabilities checked on node types and wiring, never on node names |
| Node schema validity | 40 % | n8n server RPC validate_node_config, per node |
| Graph integrity | 20 % | Adjacency traversal, orphan detection, AI sub-connections |
Four dimensions, 25 points each, from the run with 5 builds per tool and 3 isolated judges per build. Median across the judges of a build, then mean across builds.
Three of the four dimensions are a dead heat, and the whole difference sits on one: connections, where Native MCP leads by 5.4 of 25.
10 builds on the same four dimensions, from 2.7.0-rc.1 · 5 builds each · both branches remeasured. A radar saturates past four or five overlaid shapes, so these are parallel coordinates: the axes stand side by side and heights compare directly. Thin lines are individual builds, thick lines the mean of each tool.
No build collapses on the last axis in this run: every one of them delivered the briefing somewhere a person would see it.
Every submitted run, one line each. The figures above are the mean of this column, which is the point of collecting runs from several orchestrators and models: one run is a single paired trial, and a tool that only wins under one harness has not won. What cannot be pooled is the raw measurements, because the relative axes are defined between the two branches within a run; the composites themselves average fine.
| Run | Harness | Model | n8n-as-code | Native MCP |
|---|---|---|---|---|
| 2.5.0 from tarballs · 1 build each · three-axis scheme | Claude Code | claude-opus-5 | 100 | 76.3 |
| 2.6.0-rc.6 · 1 build each | Claude-Code | claude-opus-5 orchestrator, sonnet workers | 87 | 91.3 |
| 2.6.0-rc.6 · 5 builds each | Claude-Code | claude-opus-5 orchestrator, sonnet workers | 89.8 | 88.2 |
| 2.6.0-rc.6 · 5 builds each · default agent context | Claude-Code | claude-opus-5 orchestrator, sonnet workers | 86.8 | 90 |
| 2.7.0-rc.1 · 5 builds each · both branches remeasured | Claude-Code | claude-opus-5 orchestrator, sonnet workers | 94.5 | 87.3 |
| Antigravity Live · 1 build each · Gemini 3.8 Flash | Antigravity | Gemini 3.8 Flash Medium | 91.6 | 82.5 |
| 2.7.0 stable · 1 build each · full quality panel · ZCode (executed as run_16, renumbered run_17 at publication) | ZCode | GLM-5.3-Flash (orchestrator and workers) | 88.4 | 97.9 |