0.0 / 30
What changed in the harness
Selection accuracy 98→98, token cost up 6%, unconfirmed writes 0%→0%.
Category breakdown
Where the score comes from.
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
01Safety
02Legibility
22.4 / 30
03Economics
19.1 / 20
04Discoverability
10.4 / 20
Highest-impact fix
Estimated gain +30 pointsAdd explicit identity and permission preflight tools
Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
Defects and rewrites.
15 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.
| Tool | Defect types | Suggested rewrite |
|---|---|---|
n8n_safety_status |
no_return_description |
Return the current n8n Manager safety configuration: read-only mode, backup-before-mutation, and audit logging settings, along with the backup directory and audit log location. |
n8n_set_safety_mode |
no_return_description |
Configure local safety settings: read-only mode (blocks mutations when enabled), backup-before-mutation (exports workflows before mutating them), and audit logging. Returns the resulting safety configuration. |
n8n_get_workflow |
name_restates_behavior no_return_description |
Retrieve a specific n8n workflow by ID. Returns the full workflow definition including all nodes with their parameters and positions, connections, and workflow settings. |
n8n_update_workflow |
no_return_description |
Replace an existing n8n workflow with the provided full workflow JSON. Returns the updated workflow definition; a JSON backup may be saved first depending on safety settings. |
n8n_delete_workflow |
name_restates_behavior no_return_description |
Remove a workflow from an n8n server. By default a JSON backup of the workflow is saved before deletion so it can be restored later. Returns the backup path or deletion confirmation. |
n8n_activate_workflow |
name_restates_behavior no_return_description |
Enable or disable a workflow by passing active as true or false, controlling whether it responds to triggers. Returns the workflow's updated active status. |
n8n_list_executions |
name_restates_behavior no_return_description |
List recent workflow executions on an n8n server, optionally filtered by workflow ID or status (success, error, waiting). Returns execution details including status, timing, and error messages. |
n8n_add_server |
no_return_description |
Add or update an n8n server connection using its name, URL, and API key, optionally setting it as the default server; the API key can be created in n8n under Settings > API. Returns the saved server configuration. |
n8n_list_servers |
name_restates_behavior no_return_description |
Return all configured n8n server connections, including each server's name, URL, and whether it is the default server. |
n8n_ping_server |
no_return_description |
Test the connection to an n8n server using its configured credentials. Returns whether the server is reachable and responding, along with any error details. |
n8n_remove_server |
name_restates_behavior no_return_description |
Remove a configured n8n server connection by name. Returns confirmation of the removal and the remaining list of configured servers. |
n8n_list_backups |
no_return_description |
List local workflow backups created before n8n mutations, optionally filtered by server or workflow ID. Returns backup file paths, workflow IDs, and timestamps. |
n8n_restore_workflow |
no_return_description |
Restore a workflow from a local backup path. Creates a new workflow by default, or overwrites an existing workflow when target_workflow_id is provided, optionally activating it after restore. Returns the restored workflow's ID and active status. |
n8n_import_workflow |
no_return_description |
Import a complete n8n workflow JSON onto a server, creating the workflow and optionally activating it after import. Returns the created workflow's ID. |
n8n_describe_nodes |
no_return_description |
List common n8n node types, optionally filtered by category (trigger, action, logic, transform, ai, all). Returns node descriptions to help choose which nodes to use when building workflows. |
Selection evidence
Confusable tool pairs.
9 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
n8n_create_workflow |
n8n_import_workflow |
high | Both descriptions say they create a workflow from 'full workflow JSON', so a task like 'load this workflow JSON onto the server' or 'set up this workflow from the JSON I have' matches both; only param shape (nodes/connections arrays vs workflow_json string) differs. |
n8n_export_workflow |
n8n_import_workflow |
medium | Both are about moving a workflow between n8n instances as JSON; a task like 'transfer/copy this workflow to staging' could land on import (create on target) instead of export (extract JSON from source), since direction is easy to misread. |
n8n_list_workflows |
n8n_list_executions |
medium | A task like 'show me what's been running' or 'list my recent workflow activity' is ambiguous: list_workflows returns workflows with active status while list_executions returns run history, and 'list the workflows that ran' matches both. |
n8n_get_workflow |
n8n_describe_nodes |
medium | Both describe retrieving 'information' about nodes; 'tell me the nodes available / about the nodes in this workflow' is ambiguous between getting a specific workflow's nodes (get_workflow) and the catalog of node types (describe_nodes). |
n8n_list_workflows |
n8n_list_backups |
medium | A task like 'list all my saved workflows' or 'show the workflows I've kept copies of' could map to the live workflows on the server (list_workflows) or the local snapshots (list_backups), since both involve listing workflows. |
n8n_add_server |
n8n_ping_server |
low | A task like 'verify/test my server connection' is ambiguous: add_server is 'Add or update an n8n server connection' while ping_server 'Test the connection', so testing could be phrased as updating the connection rather than pinging. |
n8n_update_workflow |
n8n_restore_workflow |
low | 'Revert this workflow to a previous version' could be done either by overwriting via update_workflow with saved JSON or by restore_workflow with a backup_path; both eventually overwrite the existing workflow. |
n8n_safety_status |
n8n_set_safety_mode |
low | A task like 'make sure safety/read-only is on' might invoke the status call to inspect rather than set_safety_mode to configure, and vice-versa; the get/set boundary is the only disambiguator. |
n8n_list_executions |
n8n_list_backups |
low | 'Show me the workflow history' is ambiguous: list_executions returns run history with status/errors, while list_backups returns saved snapshots created before mutations, both arguably 'history'. |
Compare the field