n8n - ✅(Solved) Fix $fromAI button not shown for fields with parameter name "name" in AI Agent tool mode [3 pull requests, 1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
n8n-io/n8n#28261Fetched 2026-04-10 03:44:35
View on GitHub
Comments
1
Participants
2
Timeline
9
Reactions
0
Author
Timeline (top)
labeled ×3cross-referenced ×2commented ×1mentioned ×1

Root Cause

This appears to be the same root cause as #16793 (Supabase Vector Store), which was closed as stale.

Fix Action

Fix / Workaround

Workaround: Add a second field with a different parameter name (e.g. page_title) and map it to name internally before the API call. This works but results in two fields for the same purpose.

PR fix notes

PR #11: feat: optional name field, AI-optimized descriptions, auto-name generation (v1.4.0)

Description (problem / solution / changelog)

Summary

This PR improves the BookStack node for AI agent / MCP usage by making the name field optional on Create operations and significantly improving all tool descriptions so that LLMs can use the BookStack tools correctly and token-efficiently.

Key changes:

  • Optional name on Create: The name field is no longer required for Page, Book, Chapter, and Shelf creation. When omitted, the node auto-generates a name from the content (markdown headings, first text line, description, or timestamp fallback).
  • AI-optimized tool descriptions: Every field description has been rewritten so that an LLM knows exactly what each tool does, what parameters to provide, what the response contains, and when to use which operation.
  • Token-efficient navigation strategy: Descriptions guide AI agents to use Search first (returns only IDs and previews), then Get by ID for full content - preventing catastrophic token usage on large BookStack instances.
  • Markdown-first approach: Descriptions recommend markdown over HTML (~3x fewer tokens) and warn against setting both simultaneously.
  • Archive-first best practice: Node description suggests moving content to an Archive shelf instead of permanent deletion.
  • QA documentation: Added KNOWN_ISSUES.md (20 pre-existing issues documented), updated CLAUDE.md (project knowledge base for AI-assisted development), and comprehensive CHANGELOG.md.

Files changed:

  • nodes/Bookstack/Bookstack.node.ts — auto-name generation logic (generateFallbackName, decodeHtmlEntities), updated node description
  • nodes/Bookstack/descriptions/*.ts — all 9 description files updated with improved field descriptions and consistent action texts
  • CLAUDE.md — new project knowledge base for LLM-assisted development
  • KNOWN_ISSUES.md — 20 pre-existing issues documented during QA audit
  • CHANGELOG.md — complete v1.4.0 changelog
  • package.json — version bump to 1.4.0

Important: Testing status & recommendation

⚠️ This PR has been tested in a local development environment (pnpm run dev via Docker) but NOT yet in a production n8n instance.

I was unable to test this in my live n8n environment directly. The changes work correctly in the dev environment (TypeScript compiles, node loads, operations are visible in the UI), but I strongly recommend the following before merging to main:

  1. Test in a real n8n instance with an actual BookStack connection:

    • Create a page without providing a name → verify auto-generated name
    • Create a page with a name → verify it still works as before (no regression)
    • Test Global Search → verify results return correctly
    • Test as an AI Agent tool → verify LLM receives and understands the descriptions
  2. Consider publishing as a beta/pre-release version first (e.g., 1.4.0-beta.1 on npm) so users can test before it becomes the default. If n8n community nodes support pre-release tags, this would allow early adopters to opt in via npm install n8n-nodes-bookstack@beta while the stable version remains on 1.3.0.

  3. No breaking changes were introduced — all existing workflows that provide a name on Create will continue to work identically. The only behavioral difference is that omitting the name now succeeds (with auto-generation) instead of being blocked by the UI.

Motivation

When using BookStack as an AI Agent tool via MCP in n8n, the AI was forced to ask the user for a name on every Create operation because name was marked as required. This broke the automated workflow where an AI agent should be able to create, organize, and manage BookStack content autonomously (e.g., receiving notes via webhook, searching for the right location, and filing them automatically).

The improved descriptions also ensure that any LLM using these tools knows:

  • The BookStack hierarchy (Shelves > Books > Chapters > Pages)
  • How to search efficiently (Global Search first, then Get by ID)
  • How to move content (Update with new parent IDs)
  • That markdown is preferred over HTML for token efficiency
  • What each API response contains
  • That delete is permanent and cascading

QA audit results

Three independent automated QA audits were performed covering:

  • Every execution path through the node
  • All field descriptions for LLM correctness (simulated 10 real tasks)
  • All supporting files (API helpers, credentials, config, documentation)

Result: 0 critical issues, 0 regressions from v1.4.0 changes. 20 pre-existing issues were found and documented in KNOWN_ISSUES.md (none introduced by this PR).

Hope to her from you :)

Changed files

  • CHANGELOG.md (modified, +21/-0)
  • CLAUDE.md (added, +430/-0)
  • KNOWN_ISSUES.md (added, +314/-0)
  • nodes/Bookstack/Bookstack.node.ts (modified, +80/-4)
  • nodes/Bookstack/descriptions/Attachment.description.ts (modified, +5/-5)
  • nodes/Bookstack/descriptions/Book.description.ts (modified, +11/-12)
  • nodes/Bookstack/descriptions/Chapter.description.ts (modified, +12/-13)
  • nodes/Bookstack/descriptions/Global.description.ts (modified, +6/-6)
  • nodes/Bookstack/descriptions/Image.description.ts (modified, +5/-5)
  • nodes/Bookstack/descriptions/ListOperations.ts (modified, +4/-4)
  • nodes/Bookstack/descriptions/Page.description.ts (modified, +28/-16)
  • nodes/Bookstack/descriptions/Shelf.description.ts (modified, +11/-12)
  • package.json (modified, +1/-1)

PR #28282: fix(editor): allow $fromAI button for fields named "name" in AI tool nodes

Description (problem / solution / changelog)

Summary

Fields with the parameter name name in community nodes (and other nodes) with usableAsTool: true were not showing the ✦ Defined automatically by the model ($fromAI) button in AI Agent tool mode, while all other string fields with identical configuration did show it.

Root cause: 'parameters.name' was in PATH_DENYLIST in fromAIOverride.utils.ts, causing the canBeContentOverride() function to return false for any parameter named name.

Fix: Remove 'parameters.name' from PATH_DENYLIST. Built-in AI tool nodes that should not expose $fromAI are already handled by NODE_DENYLIST. Vector store nodes are excluded via their category check. There is no remaining justification for blocking parameters named name globally across all community nodes.

A regression test was added to ensure parameters named name are not accidentally re-blocked in the future.

Related Linear tickets, Github issues, and Community forum posts

Fixes #28261

Also related to #16793 (closed as stale, same root cause).

Review / Merge checklist

  • PR title and summary are descriptive.
  • Docs updated or follow-up ticket created.
  • Tests included.

Changed files

  • packages/cli/src/modules/mcp/mcp.controller.ts (modified, +49/-1)
  • packages/frontend/editor-ui/src/features/ndv/parameters/utils/fromAIOverride.utils.test.ts (modified, +11/-0)
  • packages/frontend/editor-ui/src/features/ndv/parameters/utils/fromAIOverride.utils.ts (modified, +0/-1)

PR #28371: fix(editor): show $fromAI button for parameters named 'name' in community nodes

Description (problem / solution / changelog)

Summary

When using a community node (with usableAsTool: true) as an AI Agent tool, fields with the parameter name name did not show the "✦ Defined automatically by the model" ($fromAI) button. All other fields worked correctly regardless of their names.

Root cause: 'parameters.name' was in the global PATH_DENYLIST in fromAIOverride.utils.ts. This was intended to prevent the AI from overriding the tool-identity name field on toolVectorStore and toolWorkflow, but it blocked all nodes — including community nodes where name is just a regular resource field (page name, record name, etc.).

Fix:

  • Remove 'parameters.name' from the global PATH_DENYLIST
  • Introduce a NODE_PATH_DENYLIST structure that maps specific node types to their denied paths
  • Add toolVectorStore and toolWorkflow entries to NODE_PATH_DENYLIST for parameters.name

This preserves the original intent (don't let the AI set the tool's identity name on built-in tool nodes) while allowing community nodes to use $fromAI on their name fields.

Related Linear tickets, Github issues, and Community forum posts

Fixes https://github.com/n8n-io/n8n/issues/28261

Review / Merge checklist

  • PR title and summary are descriptive.
  • Docs updated or follow-up ticket created.
  • Tests included.

Changed files

  • packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/execution/PendingCallsManager.ts (modified, +4/-0)
  • packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/execution/__tests__/PendingCallsManager.test.ts (modified, +26/-0)
  • packages/frontend/editor-ui/src/features/ndv/parameters/utils/fromAIOverride.utils.test.ts (modified, +43/-0)
  • packages/frontend/editor-ui/src/features/ndv/parameters/utils/fromAIOverride.utils.ts (modified, +12/-1)
RAW_BUFFERClick to expand / collapse

Bug Description

When using a node with usableAsTool: true as a tool in an AI Agent workflow, fields with the parameter name name do not show the "✦ Defined automatically by the model" ($fromAI) button, while all other string fields with identical configuration do.

This prevents AI agents from dynamically generating titles/names for resources, which is a common requirement for content management nodes.

I discovered this while working on the n8n-nodes-bookstack community node. To isolate the issue, I added multiple test fields with identical configuration — the only difference being the parameter name:

FieldParameter name$fromAI button
Page Title (AI)page_title✅ appears
Test Name Fieldtest_name_field✅ appears
Namename❌ missing
Book IDbook_id✅ appears
Chapter IDchapter_id✅ appears
Markdown Contentmarkdown✅ appears
Tagstags✅ appears

All fields use type: 'string', no required: true, same displayOptions. The name field is the only one excluded.

This appears to be the same root cause as #16793 (Supabase Vector Store), which was closed as stale.

Workaround: Add a second field with a different parameter name (e.g. page_title) and map it to name internally before the API call. This works but results in two fields for the same purpose.

Image Image

To Reproduce

  1. Install or create any community node with usableAsTool: true
  2. Define two fields in the node's description with identical config:
    • Field A: { displayName: 'Name', name: 'name', type: 'string', default: '' }
    • Field B: { displayName: 'Title', name: 'title', type: 'string', default: '' }
  3. Create a new workflow with an AI Agent node
  4. Click "+" on the Agent's Tools slot and add the custom node as a tool
  5. Open the tool node's Parameters tab
  6. Observe: "Title" has the ✦ ($fromAI) button, "Name" does not

Expected behavior

All string fields should show the "✦ Defined automatically by the model" ($fromAI) button in AI Agent tool mode, regardless of their parameter name. The parameter name name should not be treated differently from any other parameter name.

Debug Info

...

Operating System

Windows 11 (Docker Desktop)

n8n Version

2.15.0

Node.js Version

20

Database

SQLite (default)

Execution mode

main (default)

Hosting

self hosted

extent analysis

TL;DR

The issue can be worked around by using a different parameter name for the field, such as page_title, instead of name, which is currently excluded from showing the "✦ Defined automatically by the model" ($fromAI) button.

Guidance

  • Verify that the issue is specific to fields with the parameter name name by testing with different names, as shown in the provided table.
  • Try using a different parameter name for the field, such as page_title, to see if the $fromAI button appears.
  • If using a different parameter name is not feasible, consider mapping a second field with a different name to name internally before the API call, as described in the provided workaround.
  • Check if the issue is related to the usableAsTool: true configuration or if it occurs in other scenarios as well.

Example

No code snippet is provided as the issue seems to be related to the node configuration rather than code.

Notes

The issue might be related to a previous issue (#16793) that was closed as stale, which could indicate a deeper problem. The workaround provided may not be ideal, as it results in two fields for the same purpose.

Recommendation

Apply the workaround by using a different parameter name for the field, such as page_title, instead of name, as this is the most straightforward solution to make the $fromAI button appear.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

All string fields should show the "✦ Defined automatically by the model" ($fromAI) button in AI Agent tool mode, regardless of their parameter name. The parameter name name should not be treated differently from any other parameter name.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING