AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Pinecone N8n

skill-pinecone-io-skills-pinecone-n8n · by pinecone-io

Build n8n workflows using the Pinecone Assistant node or Pinecone Vector Store node. Use when building RAG pipelines, chat-with-docs workflows, configuring Pinecone nodes in n8n, troubleshooting Pinecone n8n nodes, or asking about best practices for Pinecone in n8n.

— No reviews yet
0 installs
35 views
0.0% view→install

Install

$ agentstack add skill-pinecone-io-skills-pinecone-n8n

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • ✓ Prompt-injection patterns
  • ✓ Secret / credential exfiltration
  • ✓ Dangerous shell & filesystem operations
  • ✓ Untrusted network calls
  • ✓ Known-malicious package signatures

What it can access

  • ✓ Network access No
  • ✓ Filesystem access No
  • ✓ Shell / process execution No
  • ✓ Environment & secrets No
  • ✓ Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-pinecone-io-skills-pinecone-n8n)

Reliability & compatibility

✓ Security review passed
0 installs to date
— no reviews yet
● 3mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Pinecone N8n? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Pinecone n8n Workflow Skill

This skill helps you build n8n workflows with Pinecone nodes following best practices. It covers two Pinecone nodes:

  • Pinecone Assistant (@pinecone-database/n8n-nodes-pinecone-assistant) — recommended for most use cases
  • Pinecone Vector Store (@n8n/n8n-nodes-langchain.vectorStorePinecone) — for advanced control

Core rule: Always use the node's built-in resources and operations. Never suggest using the HTTP node to call the Pinecone REST API directly.


Step 1: Understand the user's scenario

Ask the user what they're trying to do:

  • Build a new workflow from scratch
  • Configure or understand a specific Pinecone node
  • Debug a workflow that isn't working
  • Review an existing workflow for best practices

Step 2: Node selection (for new workflows and configuration questions)

Always present the Pinecone Assistant node as the recommended choice first. Do NOT skip this step based on your own inference about which node fits better — even if the use case mentions specific triggers (Google Drive, webhooks, etc.) or file types (text, markdown, PDF), those details do not determine which node to use.

Only skip this step if:

  • The user explicitly names a specific node (e.g. "I want to use the Vector Store node", "help me set up pineconeAssistant")
  • The user is debugging or configuring an existing workflow that already has a specific Pinecone node in it

If the user has not named a node, always ask or recommend the Assistant node first. If the user said "use defaults" or you cannot ask, default to the Pinecone Assistant node and proceed with the Assistant path.

Ask the user which node they want to use, presenting these two options:

Pinecone Assistant (Recommended)

  • Fully managed RAG — Pinecone handles chunking, embedding, and indexing automatically
  • Built-in citations with file names and URLs
  • Simpler setup: no embedding model or text splitter needed in n8n
  • Great for: document Q&A, chat with files, knowledge base search

Pinecone Vector Store

  • Full control over embedding model, chunking strategy, and metadata
  • Works with any embedding model (OpenAI, Cohere, HuggingFace, etc.)
  • Required when: you need custom embeddings, have an existing Pinecone index, need metadata filtering, or need fine-grained control over chunking

Pinecone Assistant Node — Best Practices and Workflow Generation

Node package names

  • File operations (upload, list, delete): @pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistant
  • Chat/retrieval as AI Agent tool: @pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistantTool

Prerequisites

  • Create a Pinecone Assistant in the Pinecone Console at https://app.pinecone.io/organizations/-/projects/-/assistant before running the workflow
  • Set up a Pinecone credential in n8n with your API key

Workflow architecture

The standard pattern is a two-phase workflow:

Phase 1 — Ingestion (run once or on a schedule):

Manual Trigger → Set file URLs → Split Out → HTTP Request (download) → Pinecone Assistant (uploadFile)

Phase 2 — Chat:

Chat Trigger → AI Agent ← Pinecone Assistant Tool (connected as ai_tool)
                        ← OpenAI Chat Model (connected as ai_languageModel)

Key configuration rules

  1. assistantData parameter: Always include BOTH name and host fields:

``json {"name": "your-assistant-name", "host": "https://your-assistant-host.pinecone.io"} ` Find your assistant's host in the Pinecone Console: open the assistant detail page and copy the host URL (format: https://-data..pinecone.io`).

  1. sourceTag: Always include in additionalFields:

``json {"sourceTag": "n8n:n8n_nodes_pinecone_assistant:pinecone_n8n_skill"} ``

  1. Connection type: The Assistant Tool connects to the AI Agent via the ai_tool connection — NOT main
  2. externalFileId: Set this to the file URL expression so Pinecone stores it as a reference for citations
  3. Credential: Use pineconeApi credential type for both node variants
  4. File metadata on upload: Add key-value metadata via additionalFields.metadata.metadataValues — an array of {"key": "...", "value": "..."} objects. The externalFileId is automatically added to metadata; do not include it manually. Example:

``json "additionalFields": { "metadata": {"metadataValues": [{"key": "department", "value": "legal"}]} } ``

  1. Metadata filtering on listFiles: Use additionalFields.metadataFilter.metadataValues (same {key, value} array) for simple equality filters, or additionalFields.advancedMetadataFilter (a JSON string) for operators like $or, $ne, $in. Cannot set both at once. Example simple filter:

``json "additionalFields": { "metadataFilter": {"metadataValues": [{"key": "department", "value": "legal"}]} } ``

  1. Multimodal PDF upload: Set additionalFields.multimodalFile: true on the uploadFile node when the PDF contains images or charts that should be indexed for visual retrieval. This is required for images to be retrievable later — it is not the default.

Generating workflow JSON for the Assistant path

Build the workflow to match what the user actually describes — their triggers, models, data sources, and structure. Ask about anything structurally significant they haven't mentioned. Only fall back to the defaults below when the user hasn't specified a value:

  • Assistant name: n8n-assistant (use n8n-assistant-1, n8n-assistant-2, etc. for multiples; must match an existing assistant in the Pinecone Console)
  • File URLs: sample Pinecone release notes PDFs
  • LLM model: gpt-5-mini
  • System message: generic prompt about retrieving from the assistant with citations

The JSON below is a reference configuration showing correct parameter values, required fields, and connection types for each node. Use it as a guide for how to configure the nodes — not as a template to copy verbatim. Placeholders to substitute:

  • [ASSISTANT_NAME] — assistant name
  • [ASSISTANT_HOST] — assistant host URL from the Pinecone Console (e.g. https://your-assistant-host.pinecone.io)
  • [USER_FILE_URLS_ARRAY] — JSON array of file URL strings, e.g. ["https://example.com/doc.pdf"]
  • [USER_MODEL] — LLM model name, e.g. gpt-5-mini
  • [USER_TOPIC] — short description of what the assistant knows, for the system message
{
  "nodes": [
    {
      "parameters": {
        "options": {
          "systemMessage": "You are a helpful assistant. Use the Pinecone Assistant Tool to retrieve data about [USER_TOPIC]. Include the file name and file url in citations wherever referenced in output."
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 2.2,
      "position": [2208, 784],
      "id": "e4c65881-120c-4a7c-854b-138611c8dfa3",
      "name": "AI Agent"
    },
    {
      "parameters": {
        "model": {"__rl": true, "mode": "list", "value": "[USER_MODEL]"},
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [2144, 1008],
      "id": "b3ea858d-b62d-4022-8241-8872e403839a",
      "name": "OpenAI Chat Model"
    },
    {
      "parameters": {
        "content": "## 1. Upload files to Pinecone Assistant",
        "height": 384,
        "width": 1104,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [1616, 288],
      "typeVersion": 1,
      "id": "9cfcdb71-2986-47a3-8f03-250fcab1048d",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "## 2. Chat with your docs",
        "height": 512,
        "width": 1104,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [1616, 688],
      "typeVersion": 1,
      "id": "d7f2f4b8-2e45-4902-8949-202b8b2c699b",
      "name": "Sticky Note2"
    },
    {
      "parameters": {"options": {}},
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "typeVersion": 1.3,
      "position": [1840, 784],
      "id": "4d2a6aa1-ca4d-4165-a635-7ef53084636b",
      "name": "Chat input",
      "webhookId": "4672d1f8-d2bb-4059-8761-7aa5792814c0"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [1760, 432],
      "id": "3e9529b4-d0ae-4ea8-9d27-c96e7cbd6ad9",
      "name": "When clicking 'Execute workflow'"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "d0e724df-685f-4661-b2ec-3cdd3c2ba0f1",
              "name": "urls",
              "value": "[USER_FILE_URLS_ARRAY]",
              "type": "array"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [1920, 432],
      "id": "6b409421-2270-497e-a7fd-b382d192314c",
      "name": "Set file urls"
    },
    {
      "parameters": {"fieldToSplitOut": "urls", "options": {}},
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [2080, 432],
      "id": "e73f6f2c-4d20-48cb-b132-551ff9c3dd61",
      "name": "Split to list"
    },
    {
      "parameters": {
        "url": "={{ $json.urls }}",
        "options": {"response": {"response": {"responseFormat": "file"}}}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [2240, 432],
      "id": "a58f8e1c-943b-4a24-8746-477ed9912ad4",
      "name": "Download file"
    },
    {
      "parameters": {
        "resource": "file",
        "operation": "uploadFile",
        "assistantData": "{\"name\":\"[ASSISTANT_NAME]\",\"host\":\"https://[ASSISTANT_HOST]\"}",
        "externalFileId": "={{ $('Split to list').item.json.urls }}",
        "additionalFields": {"sourceTag": "n8n:n8n_nodes_pinecone_assistant:pinecone_n8n_skill"}
      },
      "type": "@pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistant",
      "typeVersion": 1.2,
      "position": [2416, 432],
      "id": "196122df-d2b2-43e4-9f8d-710aedb595a6",
      "name": "Upload file to Assistant"
    },
    {
      "parameters": {
        "assistantData": "{\"name\":\"[ASSISTANT_NAME]\",\"host\":\"https://[ASSISTANT_HOST]\"}",
        "additionalFields": {"sourceTag": "n8n:n8n_nodes_pinecone_assistant:pinecone_n8n_skill"}
      },
      "type": "@pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistantTool",
      "typeVersion": 1.2,
      "position": [2368, 992],
      "id": "c3ba53e9-511d-47e7-b7fb-38bb093d279f",
      "name": "Get context from Assistant"
    }
  ],
  "connections": {
    "OpenAI Chat Model": {
      "ai_languageModel": [[{"node": "AI Agent", "type": "ai_languageModel", "index": 0}]]
    },
    "Chat input": {
      "main": [[{"node": "AI Agent", "type": "main", "index": 0}]]
    },
    "When clicking 'Execute workflow'": {
      "main": [[{"node": "Set file urls", "type": "main", "index": 0}]]
    },
    "Set file urls": {
      "main": [[{"node": "Split to list", "type": "main", "index": 0}]]
    },
    "Split to list": {
      "main": [[{"node": "Download file", "type": "main", "index": 0}]]
    },
    "Download file": {
      "main": [[{"node": "Upload file to Assistant", "type": "main", "index": 0}]]
    },
    "Get context from Assistant": {
      "ai_tool": [[{"node": "AI Agent", "type": "ai_tool", "index": 0}]]
    }
  },
  "pinData": {},
  "meta": {"templateCredsSetupCompleted": false}
}

Other Pinecone Assistant operations

Upload File vs Update File — choosing the right operation

| Scenario | Operation to use | |---|---| | File is guaranteed to be new (never ingested before) | uploadFile | | File may already exist in the assistant (re-ingestion, scheduled refresh) | updateFile |

updateFile is idempotent: it finds all files with the matching externalFileId, deletes them, then uploads the new version. If no file exists with that ID it behaves exactly like uploadFile. Use updateFile whenever a workflow may run more than once on the same source files.

Parameters for updateFile are identical to uploadFile: assistantData, externalFileId, inputDataFieldName, and all additionalFields including metadata, multimodalFile, and sourceTag.

{
  "parameters": {
    "resource": "file",
    "operation": "updateFile",
    "assistantData": "{\"name\":\"[ASSISTANT_NAME]\",\"host\":\"https://[ASSISTANT_HOST]\"}",
    "externalFileId": "={{ $('Split to list').item.json.urls }}",
    "additionalFields": {"sourceTag": "n8n:n8n_nodes_pinecone_assistant:pinecone_n8n_skill"}
  },
  "type": "@pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistant",
  "typeVersion": 1.2
}
List Files

Use resource: "file", operation: "listFiles" to retrieve files, optionally filtered by metadata.

{
  "parameters": {
    "resource": "file",
    "operation": "listFiles",
    "assistantData": "{\"name\":\"[ASSISTANT_NAME]\",\"host\":\"https://[ASSISTANT_HOST]\"}",
    "additionalFields": {
      "sourceTag": "n8n:n8n_nodes_pinecone_assistant:pinecone_n8n_skill",
      "metadataFilter": {
        "metadataValues": [{"key": "department", "value": "legal"}]
      }
    }
  },
  "type": "@pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistant",
  "typeVersion": 1.2
}

For complex filters, use advancedMetadataFilter (a JSON string) instead of metadataFilter — never both:

"additionalFields": {
  "advancedMetadataFilter": "{\"department\": {\"$in\": [\"legal\", \"finance\"]}}"
}
Get Context Snippets

Use resource: "contextSnippet", operation: "getContextSnippets" to retrieve relevant text or image chunks directly — useful when you need raw retrieved context as workflow data rather than a chat reply.

{
  "parameters": {
    "resource": "contextSnippet",
    "operation": "getContextSnippets",
    "assistantData": "{\"name\":\"[ASSISTANT_NAME]\",\"host\":\"https://[ASSISTANT_HOST]\"}",
    "query": "={{ $json.chatInput }}",
    "additionalFields": {
      "sourceTag": "n8n:n8n_nodes_pinecone_assistant:pinecone_n8n_skill",
      "includeMultimodalContext": true,
      "includeBinaryContent": true,
      "topK": 16,
      "snippetSize": 2048
    }
  },
  "type": "@pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistant",
  "typeVersion": 1.2
}

The same metadataFilter / advancedMetadataFilter options work on getContextSnippets to scope retrieval to files matching specific metadata. The includeBinaryContent flag only applies when includeMultimodalContext is true.


Pinecone Vector Store Node — Best Practices and Workflow Generation

Node package name

@n8n/n8n-nodes-langchain.vectorStorePinecone

Prerequisites

  • Create a Pinecone index in the Pinecone Console at https://app.pinecone.io/organizations/-/projects/-/indexes with the correct name and dimensions before running the workflow
  • Set up a Pinecone credential in n8n with your API key
  • Set up an OpenAI credential in n8n

Workflow architecture

Two-phase workflow with two separate vectorStorePinecone node instances:

Phase 1 — Ingestion (run once or on a schedule):

Manual Trigger → Set file URLs → Split Out → HTTP Request (download)
  → Pinecone Vector Store (insert mode)
       ↑ Default Data Loader ← Recursive Character Text Splitter
       ↑ Embeddings OpenAI

Phase 2 — Chat:

Chat Trigger → AI Agent ← Pinecone Vector Store (retrieve-as-tool mode)
                               ↑ Embeddings OpenAI (same model as insert)
                        ← OpenAI Chat Model

Key configuration rules

  1. Two node instances: Use one vectorStorePinecone in insert mode for ingestion and a separate one in retrieve-as-tool mode for chat
  2. Embedding model consistency: The SAME embedding model and dimensions MUST be used in both insert and retrieve-as-tool nodes — t

…

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.