{"_id":"@civic/n8n-nodes-tool","_rev":"5-9af191b3aff4e8129559df5a637b91d9","name":"@civic/n8n-nodes-tool","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@civic/n8n-nodes-tool","version":"0.1.0","keywords":["n8n-community-node-package","civic","mcp","ai-agent"],"author":{"name":"Daniel Kelleher","email":"daniel@civic.com"},"license":"MIT","_id":"@civic/n8n-nodes-tool@0.1.0","maintainers":[{"name":"mitchcivic","email":"mitch@civic.com"},{"name":"dankelleher","email":"dankelleher@yahoo.com"},{"name":"jonthepilot","email":"jonathan@civic.com"},{"name":"civicfinance","email":"camille@civic.com"},{"name":"kevinhcolgan","email":"kevin@civic.com"},{"name":"flippiescholtz","email":"flippie@civic.com"},{"name":"jp-civic","email":"jp@civic.com"},{"name":"lucmir","email":"luccmir@gmail.com"},{"name":"chriteixeira","email":"chriteixeira@gmail.com"},{"name":"rado0x54","email":"web@riedel-it.de"},{"name":"cyberdude","email":"hello@arnaldocapo.com"}],"homepage":"https://github.com/civicteam/n8n-nodes-tool#readme","bugs":{"url":"https://github.com/civicteam/n8n-nodes-tool/issues"},"n8n":{"nodes":["dist/nodes/Civic/CivicTool.node.js"],"strict":false,"credentials":["dist/credentials/CivicApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"906dd9c1912b23adae1208bf98cfcbbebb7e8883","tarball":"https://registry.npmjs.org/@civic/n8n-nodes-tool/-/n8n-nodes-tool-0.1.0.tgz","fileCount":20,"integrity":"sha512-8Wn3wfAYCLCQ90CD0hb8+OwijM/x3dX8tHf/9xGBvcAYDPxt1uO0HBE88AnkCq3g14c8nQAqFwQoRSRcp5uy3A==","signatures":[{"sig":"MEYCIQCKisNGFBijyXHySS1PbJ6ezyj1qTT8fn7F0YyQviirTgIhAIsVBgiZpTXBOSDJp3RwAAnXLblibz9tc0e5HfjWmS/e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144338},"_from":"file:civic-n8n-nodes-tool-0.1.0.tgz","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","test":"vitest run","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","test:watch":"vitest","build:watch":"tsc --watch"},"_npmUser":{"name":"dankelleher","email":"dankelleher@yahoo.com"},"_resolved":"/private/var/folders/f5/jkflt8nd0pj9h2l2l_yv_3c80000gn/T/f54b40bbe7d16c00b6afeae9906d9181/civic-n8n-nodes-tool-0.1.0.tgz","_integrity":"sha512-8Wn3wfAYCLCQ90CD0hb8+OwijM/x3dX8tHf/9xGBvcAYDPxt1uO0HBE88AnkCq3g14c8nQAqFwQoRSRcp5uy3A==","repository":{"url":"git+https://github.com/civicteam/n8n-nodes-tool.git","type":"git"},"_npmVersion":"10.9.2","description":"n8n community node that exposes Civic's MCP gateway as a tool to the AI Agent — bring 80+ Civic-managed tools (Google Workspace, Microsoft 365, CRMs, finance, dev tools) to any n8n workflow with a single bearer token.","directories":{},"_nodeVersion":"23.9.0","dependencies":{"@civic/mcp-client":"^0.1.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.23.0","eslint":"9.39.4","vitest":"^4.1.5","prettier":"3.8.3","release-it":"20.0.1","typescript":"5.9.3","@n8n/node-cli":"*","@langchain/core":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-tool_0.1.0_1778393007241_0.32144813158841945","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@civic/n8n-nodes-tool","version":"0.1.1","keywords":["n8n-community-node-package","civic","mcp","ai-agent"],"author":{"name":"Daniel Kelleher","email":"daniel@civic.com"},"license":"MIT","_id":"@civic/n8n-nodes-tool@0.1.1","maintainers":[{"name":"dankelleher","email":"dankelleher@yahoo.com"},{"name":"jonthepilot","email":"jonathan@civic.com"},{"name":"civicfinance","email":"camille@civic.com"},{"name":"kevinhcolgan","email":"kevin@civic.com"},{"name":"flippiescholtz","email":"flippie@civic.com"},{"name":"lucmir","email":"luccmir@gmail.com"},{"name":"chriteixeira","email":"chriteixeira@gmail.com"},{"name":"rado0x54","email":"web@riedel-it.de"}],"homepage":"https://github.com/civicteam/n8n-nodes-tool#readme","bugs":{"url":"https://github.com/civicteam/n8n-nodes-tool/issues"},"n8n":{"nodes":["dist/nodes/Civic/CivicTool.node.js"],"strict":false,"credentials":["dist/credentials/CivicApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"6ff74757e8e5339b41c760564aacb6b85a47bc70","tarball":"https://registry.npmjs.org/@civic/n8n-nodes-tool/-/n8n-nodes-tool-0.1.1.tgz","fileCount":20,"integrity":"sha512-++WjhHyNLtmisNrQMZtRRBuFllzEjLoDNvlFLzi+hqWZKTffRnsd+LTX2WZMmgyGvNM6RCXDAOssuqZN4cBSaA==","signatures":[{"sig":"MEUCIEzjvjcF2EkKV38jVwPov4+hNvaSTR7zuEf6EHHM27vPAiEA4MJTyJkCBSy3WFYDhInt8ksIFSNxGtYcHnzxTXCAI+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civic%2fn8n-nodes-tool@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":159546},"gitHead":"4c62ba8e8fc8f5791348ee7d62b391694613da80","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","test":"vitest run","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"n8n-node prerelease"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:74a7af34-0cf8-445e-be1d-25fc54714df0"}},"repository":{"url":"git+https://github.com/civicteam/n8n-nodes-tool.git","type":"git"},"_npmVersion":"11.11.0","description":"n8n community node that exposes Civic's MCP gateway as a tool to the AI Agent — bring 80+ Civic-managed tools (Google Workspace, Microsoft 365, CRMs, finance, dev tools) to any n8n workflow with a single bearer token.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@civic/mcp-client":"^0.1.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.12.1","devDependencies":{"zod":"^3.25.76","eslint":"9.39.4","vitest":"^4.1.5","prettier":"3.8.3","release-it":"20.0.1","typescript":"5.9.3","@n8n/node-cli":"*","@langchain/core":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-tool_0.1.1_1778394467400_0.7409595683164187","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@civic/n8n-nodes-tool","version":"0.2.0","keywords":["n8n-community-node-package","civic","mcp","ai-agent"],"author":{"name":"Daniel Kelleher","email":"daniel@civic.com"},"license":"MIT","_id":"@civic/n8n-nodes-tool@0.2.0","maintainers":[{"name":"dankelleher","email":"dankelleher@yahoo.com"},{"name":"jonthepilot","email":"jonathan@civic.com"},{"name":"civicfinance","email":"camille@civic.com"},{"name":"kevinhcolgan","email":"kevin@civic.com"},{"name":"flippiescholtz","email":"flippie@civic.com"},{"name":"lucmir","email":"luccmir@gmail.com"},{"name":"chriteixeira","email":"chriteixeira@gmail.com"},{"name":"rado0x54","email":"web@riedel-it.de"}],"homepage":"https://github.com/civicteam/n8n-nodes-tool#readme","bugs":{"url":"https://github.com/civicteam/n8n-nodes-tool/issues"},"n8n":{"nodes":["dist/nodes/Civic/CivicTool.node.js"],"strict":false,"credentials":["dist/credentials/CivicApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"d4e11cecf77d4664edc9d55ed25002f9293b4dc9","tarball":"https://registry.npmjs.org/@civic/n8n-nodes-tool/-/n8n-nodes-tool-0.2.0.tgz","fileCount":20,"integrity":"sha512-UgwfE5f30qpTzpq1SpglcM4K0kLbQVrM3ExjgheOHtrCYA99NxMS/Xu49K6BjpEAO2PkVmciqBUKDmquzdd19g==","signatures":[{"sig":"MEUCIQC8fcCyDIvrMaHhfjnfylnP8QIg+wZNvuJCru3QnIGxFAIgfmXSjJ7QSjZuqcS+MlOuF7TELXNuAmt51gCKgz77HxU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civic%2fn8n-nodes-tool@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":150269},"gitHead":"93efaab0f36cf2d59851edcb16768477c5c4f57c","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","test":"vitest run","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"n8n-node prerelease"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:74a7af34-0cf8-445e-be1d-25fc54714df0"}},"repository":{"url":"git+https://github.com/civicteam/n8n-nodes-tool.git","type":"git"},"_npmVersion":"11.11.0","description":"n8n community node that exposes Civic's MCP gateway as a tool to the AI Agent — bring 80+ Civic-managed tools (Google Workspace, Microsoft 365, CRMs, finance, dev tools) to any n8n workflow with a single bearer token.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@civic/mcp-client":"^1.0.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.12.1","devDependencies":{"zod":"^3.25.76","eslint":"9.39.4","vitest":"^4.1.5","prettier":"3.8.3","release-it":"20.0.1","typescript":"5.9.3","@n8n/node-cli":"*","@langchain/core":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-tool_0.2.0_1778400192460_0.11327014974103666","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@civic/n8n-nodes-tool","version":"0.2.1","description":"n8n community node that exposes Civic's MCP gateway as a tool to the AI Agent — bring 80+ Civic-managed tools (Google Workspace, Microsoft 365, CRMs, finance, dev tools) to any n8n workflow with a single bearer token.","license":"MIT","homepage":"https://github.com/civicteam/n8n-nodes-tool#readme","keywords":["n8n-community-node-package","civic","mcp","ai-agent"],"author":{"name":"Daniel Kelleher","email":"daniel@civic.com"},"repository":{"type":"git","url":"git+https://github.com/civicteam/n8n-nodes-tool.git"},"packageManager":"pnpm@10.12.1","scripts":{"build":"n8n-node build","build:watch":"tsc --watch","dev":"n8n-node dev","lint":"n8n-node lint","lint:fix":"n8n-node lint --fix","test":"vitest run","test:watch":"vitest","release":"n8n-node release","prepublishOnly":"n8n-node prerelease"},"publishConfig":{"access":"public","provenance":true},"n8n":{"n8nNodesApiVersion":1,"strict":false,"credentials":["dist/credentials/CivicApi.credentials.js"],"nodes":["dist/nodes/Civic/CivicTool.node.js"]},"dependencies":{"@civic/mcp-client":"^1.0.1"},"devDependencies":{"@langchain/core":"*","@n8n/node-cli":"*","eslint":"9.39.4","prettier":"3.8.3","release-it":"20.0.1","typescript":"5.9.3","vitest":"^4.1.5","zod":"^3.25.76"},"peerDependencies":{"n8n-workflow":"*"},"gitHead":"e9ca190f9244156069f8a0e043d0341198509be4","_id":"@civic/n8n-nodes-tool@0.2.1","bugs":{"url":"https://github.com/civicteam/n8n-nodes-tool/issues"},"_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-1IWkUQVo4EluwQbPplFeJ14nldVxv3DzsksU+XeP6zcg/ZzyYcRESZkOm/Cwzuksz39HrJhEabciAW+W65y2hw==","shasum":"192af8db066fd726db2d7645ad8ba10fa94bac0e","tarball":"https://registry.npmjs.org/@civic/n8n-nodes-tool/-/n8n-nodes-tool-0.2.1.tgz","fileCount":36,"unpackedSize":1856608,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civic%2fn8n-nodes-tool@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCmvxx3GpEZ/G4IknQGTdymUNMq/IzxTPyqgseDuPLQ+gIhAMphmJcbDp7y5qWUjeki29x6rbOqM/KdCS/G1ZgW6fib"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:74a7af34-0cf8-445e-be1d-25fc54714df0"}},"directories":{},"maintainers":[{"name":"dankelleher","email":"dankelleher@yahoo.com"},{"name":"jonthepilot","email":"jonathan@civic.com"},{"name":"civicfinance","email":"camille@civic.com"},{"name":"kevinhcolgan","email":"kevin@civic.com"},{"name":"flippiescholtz","email":"flippie@civic.com"},{"name":"lucmir","email":"luccmir@gmail.com"},{"name":"chriteixeira","email":"chriteixeira@gmail.com"},{"name":"rado0x54","email":"web@riedel-it.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n8n-nodes-tool_0.2.1_1778412574659_0.22521855625392173"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-10T06:03:27.135Z","modified":"2026-05-10T11:29:35.270Z","0.1.0":"2026-05-10T06:03:27.392Z","0.1.1":"2026-05-10T06:27:47.532Z","0.2.0":"2026-05-10T08:03:12.619Z","0.2.1":"2026-05-10T11:29:34.873Z"},"bugs":{"url":"https://github.com/civicteam/n8n-nodes-tool/issues"},"author":{"name":"Daniel Kelleher","email":"daniel@civic.com"},"license":"MIT","homepage":"https://github.com/civicteam/n8n-nodes-tool#readme","keywords":["n8n-community-node-package","civic","mcp","ai-agent"],"repository":{"type":"git","url":"git+https://github.com/civicteam/n8n-nodes-tool.git"},"description":"n8n community node that exposes Civic's MCP gateway as a tool to the AI Agent — bring 80+ Civic-managed tools (Google Workspace, Microsoft 365, CRMs, finance, dev tools) to any n8n workflow with a single bearer token.","maintainers":[{"name":"dankelleher","email":"dankelleher@yahoo.com"},{"name":"jonthepilot","email":"jonathan@civic.com"},{"name":"civicfinance","email":"camille@civic.com"},{"name":"kevinhcolgan","email":"kevin@civic.com"},{"name":"flippiescholtz","email":"flippie@civic.com"},{"name":"lucmir","email":"luccmir@gmail.com"},{"name":"chriteixeira","email":"chriteixeira@gmail.com"},{"name":"rado0x54","email":"web@riedel-it.de"}],"readme":"<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/civicteam/n8n-nodes-tool/main/screenshots/00-banner.png\" alt=\"Civic — the security layer for AI agents\" width=\"640\" />\n</p>\n\n# @civic/n8n-nodes-tool\n\nAn [n8n](https://n8n.io) community node that connects an AI Agent to **[Civic](https://www.civic.com)** — Civic's MCP gateway exposes 80+ managed tools (Google Workspace, Microsoft 365, CRMs, finance, dev tools) behind a single bearer token.\n\nDrop the **Civic** node into the AI Agent's **Tools** slot, supply a token from [app.civic.com](https://app.civic.com), and every tool in your configured Civic toolkit becomes individually callable by the model — no per-service OAuth, no per-tool wiring.\n\nFor everything Civic Hub can do beyond what's covered here, see **[docs.civic.com](https://docs.civic.com)**.\n\n![AI Agent calling a Civic tool mid-execution](https://raw.githubusercontent.com/civicteam/n8n-nodes-tool/main/screenshots/16-calendar-running.png)\n\n## Installation\n\nIn your n8n instance:\n\n1. Go to **Settings → Community Nodes**\n2. Click **Install a community node**\n3. Enter `@civic/n8n-nodes-tool` and accept the risk acknowledgement\n\n![Install dialog with the package name filled in](https://raw.githubusercontent.com/civicteam/n8n-nodes-tool/main/screenshots/03-install-form-filled.png)\n\nAfter installing, the package shows up in the Community Nodes list:\n\n![Installed package showing v0.2.0 with one Civic node](https://raw.githubusercontent.com/civicteam/n8n-nodes-tool/main/screenshots/04-installed.png)\n\n## Setup\n\n### 1. Pick the apps you want the agent to reach\n\nSign in at [app.civic.com](https://app.civic.com) and open the **Applications** view. Click **Add** on every service you want the agent to be able to use — Google Workspace, Microsoft 365, CRMs, finance tools, and so on. Civic handles the OAuth dance for each. Bundle the apps you want into a **Toolkit**.\n\n![Civic Applications view with Google Calendar already added](https://raw.githubusercontent.com/civicteam/n8n-nodes-tool/main/screenshots/05-civic-apps.png)\n\nFor more on toolkits, profiles, guardrails, audit logs, and the rest of Civic Hub, see **[docs.civic.com](https://docs.civic.com)**.\n\n### 2. Generate a Civic token\n\nPick the toolkit you want to expose to n8n in the top-left toolkit switcher, then go to **Install → MCP URL**. Choose **Generate a Civic token** and click the button to create one. Copy the value — n8n will need it.\n\n![Civic Install page with \"Generate a Civic token\" selected](https://raw.githubusercontent.com/civicteam/n8n-nodes-tool/main/screenshots/07-civic-generate-token-step.png)\n\n### 3. Wire up the workflow in n8n\n\nCreate a workflow with an **AI Agent** node. Connect a chat model (Anthropic, OpenAI, …) and a memory node as usual.\n\nOn the Agent's **Tool** input click `+`, search for **Civic**, and add it.\n\n![Civic in n8n's tool picker](https://raw.githubusercontent.com/civicteam/n8n-nodes-tool/main/screenshots/12-civic-search.png)\n\nConfigure a new **Civic API** credential with the token you copied. The credential test issues a real MCP `initialize` against `https://app.civic.com/hub/mcp` — a green check means the token authenticated successfully.\n\n![Credential dialog showing successful connection test](https://raw.githubusercontent.com/civicteam/n8n-nodes-tool/main/screenshots/14-credential-edit.png)\n\n(Optional) Use the **Tool Names or IDs** dropdown on the Civic node to expose only specific tools — leave empty to expose all.\n\n### 4. Run\n\nOpen the chat panel and ask the agent something that needs a Civic tool — e.g. *what's on my calendar this week?* The agent will call Civic tools as it needs them and synthesise the answer.\n\n### Example workflow\n\nA ready-to-import workflow lives at [`examples/civic-calendar.json`](examples/civic-calendar.json). It's the calendar-assistant setup shown above: a Chat Trigger → AI Agent with Anthropic Chat Model + Simple Memory + Civic tool. Download the file, then in n8n choose **Workflows → Import from File**. You'll need to bind your own **Civic API** and **Anthropic** credentials after import.\n\n## How it works\n\nThis is an n8n AI Tool sub-node:\n\n- `supplyData()` lists every tool from your Civic toolkit via [`@civic/mcp-client`](https://www.npmjs.com/package/@civic/mcp-client)'s `langchainAdapter`, returning each one as a `DynamicStructuredTool`, packaged in an `n8n-core` `StructuredToolkit`.\n- Each tool is wrapped with `logWrapper` so invocations appear in the n8n run log.\n- When the AI Agent dispatches a tool call, `execute()` forwards it to Civic Hub via the SDK and returns the result.\n- All n8n-internal classes (`StructuredToolkit`, `logWrapper`) are resolved at runtime from n8n's own module tree to avoid the JavaScript dual-package hazard. See [`nodes/Civic/runtime.ts`](nodes/Civic/runtime.ts) for the comment that explains this in detail — it's the non-obvious bit if you're forking this for your own MCP integration.\n\n## Credentials\n\nThe **Civic API** credential takes a single field:\n\n- **API Token** — bearer token from [app.civic.com](https://app.civic.com)\n\nThe credential test issues an MCP `initialize` against `https://app.civic.com/hub/mcp` with the token; a green check means the token authenticated successfully.\n\n## Compatibility\n\n- n8n `>= 2.19`\n- Self-hosted only — n8n Cloud doesn't currently allow community nodes that ship third-party dependencies, and we ship `@civic/mcp-client`.\n\n## Development\n\n```bash\npnpm install      # install deps\npnpm lint         # n8n's community-node lint suite\npnpm test         # vitest unit tests\npnpm build        # compile TypeScript and copy static files into dist/\npnpm dev          # run a local n8n with this node loaded (hot reload)\n```\n\nCI runs lint + tests + build on every push and PR. Releases are triggered by pushing a version tag (e.g. `0.2.0`); GitHub Actions then publishes to npm with a provenance attestation.\n\n## Resources\n\n- **[docs.civic.com](https://docs.civic.com)** — full Civic Hub docs (toolkits, profiles, guardrails, audit logs, etc.)\n- [Civic Hub overview](https://docs.civic.com/civic/overview)\n- [Civic Hub credentials guide](https://docs.civic.com/civic/quickstart/credentials)\n- [`@civic/mcp-client`](https://www.npmjs.com/package/@civic/mcp-client)\n- [n8n community node docs](https://docs.n8n.io/integrations/community-nodes/)\n\n## License\n\n[MIT](LICENSE.md)\n","readmeFilename":"README.md"}