Connect from n8n

Guide Low-code

Give an n8n AI Agent policy-scoped, read-only access to your bank accounts through the agentis MCP server — a few clicks in the editor or one importable workflow, on n8n Cloud or self-hosted.

# Overview

n8n's AI Agent node takes tools from sub-nodes, and its built-in MCP Client Tool speaks Streamable HTTP with Bearer auth — exactly what the agentis server expects. Point it at the endpoint, attach a credential, and every agentis tool (list_accounts, list_account_transactions, check_account_balance, and the rest of the toolset) becomes available to your agent. No OAuth flow, no custom code.

https://mcp.agentis.capital/mcp

Works the same on n8n Cloud and self-hosted. If you self-host in the EU, note that your prompts and the model run wherever you put them — only the read-only, policy-scoped tool calls reach agentis.

# Get an agent API key

In the dashboard: create an agent (with its policy and bank-account assignments), then under API Keys choose Generate Key and pick that agent. The key is bound to the agent and shown exactly once — you'll paste it straight into an n8n credential in the next step. Details and prefix semantics: Bearer API key.

# Build the workflow

  • 1. Add an AI Agent node and attach any chat model sub-node — Anthropic, OpenAI, Google, or a local Ollama model. The agentis server is model-agnostic; pick a model with solid tool calling.
  • 2. Under the agent's Tool slot, add the MCP Client Tool node.
  • 3. Endpoint: https://mcp.agentis.capital/mcp
  • 4. Server Transport: HTTP Streamable.
  • 5. Authentication: Bearer Auth → create a new Bearer Auth credential and paste the agent API key as the token.
  • 6. Tools to Include: All (or restrict to selected tools if the workflow only needs, say, transactions).
Two n8n gotchas, verified on n8n 2.30–2.31. First, the transport dropdown can silently revert to SSE (n8n#24967) — if calls fail, set the field in expression mode to =httpStreamable. Second, version 3 of the AI Agent node can deliver MCP tool results to the model as empty responses, so the agent loops and reports that the tools return nothing (closest upstream reports: n8n#26202, n8n#26963). If you hit this, use AI Agent node version 2.2 — the template below does. Once those issues are resolved upstream, switching the Agent node to the latest version is safe.

# Import the template

Or skip the clicks: in the n8n editor choose Import from File (or paste into a new canvas) with the JSON below — a weekly report of the last 7 days of transactions. After importing, open the two sub-nodes and select your own credentials (Anthropic or your preferred model, plus the Bearer Auth credential holding the agentis key), and set the model to any current one your provider serves — the one in the template is just an example.

workflow.json
{
  "name": "Agentis weekly finance report",
  "nodes": [
    {
      "id": "trigger-0000000001",
      "name": "Manual Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [0, 0],
      "parameters": {}
    },
    {
      "id": "agent-00000000001",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 2.2,
      "position": [260, 0],
      "parameters": {
        "promptType": "define",
        "text": "=Create a brief weekly report of the bank transactions between {{ $now.minus({ days: 7 }).toFormat('yyyy-MM-dd') }} and {{ $now.toFormat('yyyy-MM-dd') }} (inclusive). Use the available banking tools to look up the transactions on the default account. Keep it short: total money in, total money out, number of transactions, and a few notable transactions. Plain prose, no tables.",
        "options": {}
      }
    },
    {
      "id": "model-00000000001",
      "name": "Anthropic Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.5,
      "position": [160, 220],
      "parameters": {
        "model": { "__rl": true, "mode": "id", "value": "claude-sonnet-5" },
        "options": {}
      }
    },
    {
      "id": "mcp-000000000001",
      "name": "Agentis MCP",
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "typeVersion": 1.4,
      "position": [400, 220],
      "parameters": {
        "endpointUrl": "https://mcp.agentis.capital/mcp",
        "serverTransport": "httpStreamable",
        "authentication": "bearerAuth",
        "include": "all",
        "options": {}
      }
    }
  ],
  "connections": {
    "Manual Trigger": {
      "main": [[{ "node": "AI Agent", "type": "main", "index": 0 }]]
    },
    "Anthropic Chat Model": {
      "ai_languageModel": [[{ "node": "AI Agent", "type": "ai_languageModel", "index": 0 }]]
    },
    "Agentis MCP": {
      "ai_tool": [[{ "node": "AI Agent", "type": "ai_tool", "index": 0 }]]
    }
  },
  "settings": {}
}

Swap the Manual Trigger for a Schedule Trigger to get the report every Monday morning, and pipe the agent's output into Slack, email, or wherever your team reads it.

# Handle the key safely

  • Keep the key in the n8n credential, nowhere else. n8n encrypts credentials at rest and injects the Bearer header at the transport layer — the model never sees the key, and it never appears in the prompt, expressions, or workflow JSON exports.
  • One workflow deployment, one agent, one key. Revoking the key in the agentis dashboard kills exactly this integration; rotation from the agent's page issues a new key and immediately revokes the old one — update the n8n credential alongside.
  • The policy is the real guardrail. The agent can only call what its key authorizes: assigned accounts, data-access policy, read-only tools. Scope it to the minimum the workflow needs. The full reasoning lives in the LangGraph guide's key-handling section — it applies unchanged here.

# Handle errors

Tool failures return a structured JSON envelope the agent can act on — reason plus a recommended action (e.g. transient_bank_errorretry_with_backoff with retry_after_seconds). A capable model follows these on its own; for scheduled workflows consider an n8n error workflow for the escalate cases like session_expired, which needs an admin to reconnect the bank. The full enum is in the server reference. A 401 at the transport level means the key is invalid or revoked.