{
  "workflow": {
    "id": 5528,
    "name": "Create a WHOIS API interface for AI agents with 8 domain management operations",
    "views": 375,
    "recentViews": 0,
    "totalViews": 375,
    "createdAt": "2025-07-01T19:19:26.667Z",
    "description": "Complete MCP server exposing 8 Bulk WHOIS API operations to AI agents.\n\n## ⚡ Quick Setup\n\nNeed help? Want access to more workflows and even live Q&A sessions with a top verified n8n creator.. All 100% free?\n\n[Join the community](https://www.skool.com/n8n-nodes-automation-lab-1570/about)\n\n1. **Import** this workflow into your n8n instance\n2. **Credentials** Add Bulk WHOIS API credentials\n3. **Activate** the workflow to start your MCP server\n4. **Copy** the webhook URL from the MCP trigger node\n5. **Connect** AI agents using the MCP URL\n\n## 🔧 How it Works\n\nThis workflow converts the Bulk WHOIS API into an MCP-compatible interface for AI agents.\n\n• **MCP Trigger**: Serves as your server endpoint for AI agent requests\n• **HTTP Request Nodes**: Handle API calls to http://localhost:5000\n• **AI Expressions**: Automatically populate parameters via `$fromAI()` placeholders\n• **Native Integration**: Returns responses directly to the AI agent\n\n## 📋 Available Operations (8 total)\n\n### 🔧 Batch (4 endpoints)\n\n• **GET /batch**: Get your batches\n• **POST /batch**: Create batch. Batch is then being processed until all provided items have been completed. At any time it can be `get` to provide current status with results optionally.\n• **DELETE /batch/{id}**: Delete batch\n• **GET /batch/{id}**: Get batch\n\n### 🔧 Db (1 endpoints)\n\n• **GET /db**: Query domain database\n\n### 🔧 Domains (3 endpoints)\n\n• **GET /domains/{domain}/check**: Check domain availability\n• **GET /domains/{domain}/rank**: Check domain rank (authority).\n• **GET /domains/{domain}/whois**: WHOIS query for a domain\n\n## 🤖 AI Integration\n\n**Parameter Handling**: AI agents automatically provide values for:\n• Path parameters and identifiers\n• Query parameters and filters\n• Request body data\n• Headers and authentication\n\n**Response Format**: Native Bulk WHOIS API responses with full data structure\n\n**Error Handling**: Built-in n8n HTTP request error management\n\n## 💡 Usage Examples\n\nConnect this MCP server to any AI agent or workflow:\n\n• **Claude Desktop**: Add MCP server URL to configuration\n• **Cursor**: Add MCP server SSE URL to configuration\n• **Custom AI Apps**: Use MCP URL as tool endpoint\n• **API Integration**: Direct HTTP calls to MCP endpoints\n\n## ✨ Benefits\n\n• **Zero Setup**: No parameter mapping or configuration needed\n• **AI-Ready**: Built-in `$fromAI()` expressions for all parameters\n• **Production Ready**: Native n8n HTTP request handling and logging\n• **Extensible**: Easily modify or add custom logic\n\n&gt; 🆓 **[Free for community use](https://github.com/Cfomodz/community-use)!** Ready to deploy in under 2 minutes.",
    "workflow": {
      "id": "v6LyGtVBk8ZTj5mE",
      "meta": null,
      "name": "Bulk WHOIS API MCP Server",
      "tags": [],
      "nodes": [
        {
          "id": "d3e2b6b0-742b-44b3-9ff8-667e26fa627e",
          "name": "Setup Instructions",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1380,
            -240
          ],
          "parameters": {
            "color": 4,
            "height": 1060,
            "content": "### ⚙️ Setup Instructions\n\n1. **Import Workflow**: \nLoad this workflow into your n8n instance\n\n2. **Configure Authentication**: \nSet up apiKey credentials\n   - Type: API Key in header\n   - Key name: X-API-KEY\n\n3. **Activate Workflow**:\nEnable the workflow to start the MCP server\n\n4. **Get MCP URL**: \nCopy the webhook URL from the MCP trigger\n\n5. **Connect AI Agent**:\nUse the MCP URL in your AI agent configuration\n\n\n### 💡 Usage Notes\n• Parameters are auto-populated by AI using $fromAI() expressions\n• With 8 API endpoints available as tools\n• Responses maintain original API structure\n\n\n### 🛠️ Customization\n• Add data transformation nodes if needed\n• Implement custom error handling\n• Add logging or monitoring nodes\n\n• Modify parameter defaults in any HTTP request node as needed\n\n### 💬 Need Help?\nPing me on [discord](https://discord.me/cfomodz) for integration guidance and custom automations. Check the [n8n documentation](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/) for more information."
          },
          "typeVersion": 1
        },
        {
          "id": "80a3eaa0-37c0-4a45-a19a-68c82882e7ff",
          "name": "Workflow Overview",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1120,
            -240
          ],
          "parameters": {
            "width": 420,
            "height": 920,
            "content": "## 🛠️ Bulk WHOIS MCP Server ✅ 8 operations\n\n### About\nDomain API (WHOIS, Check, Batch)\n\n### 🔧 How it Works\n\nThis workflow converts the Bulk WHOIS API into an MCP-compatible interface for AI agents.\n\n• **MCP Trigger**: Serves as your server endpoint for AI agent requests\n• **HTTP Request Nodes**: Handle API calls to http://localhost:5000\n• **AI Expressions**: Automatically populate parameters via `$fromAI()` placeholders\n• **Native Integration**: Returns responses directly to the AI agent\n\n\n### 📋 Available Operations (8 endpoints)\n\n**Batch (4 operations)**\nget, create, delete\n\n**Db (1 operations)**\nquery\n\n**Domains (3 operations)**\ncheck, whois\n\n"
          },
          "typeVersion": 1
        },
        {
          "id": "66672868-c8c2-446d-b5b7-d1f1010434af",
          "name": "Bulk WHOIS MCP Server",
          "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
          "position": [
            -620,
            -240
          ],
          "webhookId": "6cf0cc14-5751-41c2-bd05-75266866dbdf",
          "parameters": {
            "path": "bulk-whois-mcp"
          },
          "typeVersion": 1
        },
        {
          "id": "62dad9c1-27cf-4255-877c-6856da294361",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -660,
            -100
          ],
          "parameters": {
            "color": 2,
            "width": 900,
            "height": 200,
            "content": "## Batch"
          },
          "typeVersion": 1
        },
        {
          "id": "2d3a9d10-c3ba-47ca-b0ea-da80f560e6d6",
          "name": "Get your batches",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -520,
            -60
          ],
          "parameters": {
            "url": "=http://localhost:5000/batch",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Get your batches"
          },
          "typeVersion": 4.2
        },
        {
          "id": "6d6dc999-b615-40a9-81c0-b176d239c6be",
          "name": "Create batch. Batch is then being processed until ",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -320,
            -60
          ],
          "parameters": {
            "url": "=http://localhost:5000/batch",
            "method": "POST",
            "options": {},
            "sendBody": true,
            "authentication": "genericCredentialType",
            "bodyParameters": {
              "parameters": [
                {
                  "name": "domains",
                  "value": "={{ $fromAI('domains', 'Domains', 'json') }}"
                },
                {
                  "name": "operation",
                  "value": "={{ $fromAI('operation', 'Operation', 'string') }}"
                },
                {
                  "name": "options",
                  "value": "={{ $fromAI('options', 'Options', 'json') }}"
                }
              ]
            },
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Create batch. Batch is then being processed until all provided items have been completed. At any time it can be `get` to provide current status with results optionally.\n\nParameters:\n- Body parameters:\n  • domains (required)\n  • operation (required)\n  • options (optional)"
          },
          "typeVersion": 4.2
        },
        {
          "id": "db526626-0203-4a70-b062-b3b9a0e0f0c4",
          "name": "Delete batch",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -120,
            -60
          ],
          "parameters": {
            "url": "=http://localhost:5000/batch/{{ $fromAI('id', 'Batch ID', 'string') }}",
            "method": "DELETE",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Delete batch\n\nParameters:\n- Path parameters:\n  • id (required) - Batch ID"
          },
          "typeVersion": 4.2
        },
        {
          "id": "4eeffbc9-5219-4b43-b9fe-cd0eab602869",
          "name": "Get batch",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            80,
            -60
          ],
          "parameters": {
            "url": "=http://localhost:5000/batch/{{ $fromAI('id', 'Batch ID', 'string') }}",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Get batch\n\nParameters:\n- Path parameters:\n  • id (required) - Batch ID"
          },
          "typeVersion": 4.2
        },
        {
          "id": "5001852e-6d17-41de-8458-9a6c2fb27850",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -660,
            140
          ],
          "parameters": {
            "color": 3,
            "width": 300,
            "height": 200,
            "content": "## Db"
          },
          "typeVersion": 1
        },
        {
          "id": "2cccd1ae-d209-466e-8cc4-77e62ab07b4e",
          "name": "Query domain database",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -520,
            180
          ],
          "parameters": {
            "url": "=http://localhost:5000/db",
            "options": {},
            "sendQuery": true,
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "queryParameters": {
              "parameters": [
                {
                  "name": "query",
                  "value": "={{ $fromAI('query', 'Query (contact name, dns, domain etc)', 'string') }}"
                }
              ]
            },
            "toolDescription": "Query domain database\n\nParameters:\n- Query parameters:\n  • query (required) - Query (contact name, dns, domain etc)"
          },
          "typeVersion": 4.2
        },
        {
          "id": "039644d1-96a9-4bf1-aa18-860277ff5f41",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -660,
            380
          ],
          "parameters": {
            "color": 4,
            "width": 700,
            "height": 200,
            "content": "## Domains"
          },
          "typeVersion": 1
        },
        {
          "id": "e36bba72-454f-4c5a-a6e6-d61123a92f83",
          "name": "Check domain availability",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -520,
            420
          ],
          "parameters": {
            "url": "=http://localhost:5000/domains/{{ $fromAI('domain', 'Domain', 'string') }}/check",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Check domain availability\n\nParameters:\n- Path parameters:\n  • domain (required) - Domain"
          },
          "typeVersion": 4.2
        },
        {
          "id": "06de063c-7901-4b1b-908a-11ddc136f789",
          "name": "Check domain rank (authority).",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -320,
            420
          ],
          "parameters": {
            "url": "=http://localhost:5000/domains/{{ $fromAI('domain', 'Domain', 'string') }}/rank",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Check domain rank (authority).\n\nParameters:\n- Path parameters:\n  • domain (required) - Domain"
          },
          "typeVersion": 4.2
        },
        {
          "id": "07ed3bd8-ce49-4d70-9e5f-14bf2b92cd5e",
          "name": "WHOIS query for a domain",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -120,
            420
          ],
          "parameters": {
            "url": "=http://localhost:5000/domains/{{ $fromAI('domain', 'Domain', 'string') }}/whois",
            "options": {},
            "sendQuery": true,
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "queryParameters": {
              "parameters": [
                {
                  "name": "format",
                  "value": "={{ $fromAI('format', 'Format', 'string') }}"
                }
              ]
            },
            "toolDescription": "WHOIS query for a domain\n\nParameters:\n- Path parameters:\n  • domain (required) - Domain\n- Query parameters:\n  • format (optional)"
          },
          "typeVersion": 4.2
        }
      ],
      "active": false,
      "shared": [
        {
          "role": "workflow:owner",
          "project": {
            "id": "G5fce9xGuBAsWBXe",
            "icon": null,
            "name": "David Ashby <david.ashby.lds@gmail.com>",
            "type": "personal",
            "createdAt": "2025-06-04T02:55:02.013Z",
            "updatedAt": "2025-06-04T02:56:01.361Z",
            "projectRelations": [
              {
                "role": "project:personalOwner",
                "user": {
                  "id": "715c1c00-cb48-4712-9a32-f1f4b6db2b30",
                  "role": "global:owner",
                  "email": "david.ashby.lds@gmail.com",
                  "disabled": false,
                  "lastName": "Ashby",
                  "settings": {
                    "npsSurvey": {
                      "responded": true,
                      "lastShownAt": 1749357655581
                    },
                    "userActivated": true,
                    "userActivatedAt": 1749075994495,
                    "easyAIWorkflowOnboarded": true,
                    "firstSuccessfulWorkflowId": "3N3vVikZb3MckFYm"
                  },
                  "createdAt": "2025-06-04T02:55:01.745Z",
                  "firstName": "David",
                  "isPending": false,
                  "updatedAt": "2025-06-08T04:40:58.399Z",
                  "mfaEnabled": false,
                  "personalizationAnswers": {
                    "version": "v4",
                    "personalization_survey_n8n_version": "1.95.3",
                    "personalization_survey_submitted_at": "2025-06-04T02:56:07.075Z"
                  }
                },
                "userId": "715c1c00-cb48-4712-9a32-f1f4b6db2b30",
                "createdAt": "2025-06-04T02:55:02.013Z",
                "projectId": "G5fce9xGuBAsWBXe",
                "updatedAt": "2025-06-04T02:55:02.013Z"
              }
            ]
          },
          "createdAt": "2025-07-01T19:18:52.023Z",
          "projectId": "G5fce9xGuBAsWBXe",
          "updatedAt": "2025-07-01T19:18:52.023Z",
          "workflowId": "v6LyGtVBk8ZTj5mE"
        }
      ],
      "pinData": {},
      "settings": {
        "timezone": "America/New_York"
      },
      "createdAt": "2025-07-01T19:18:52.018Z",
      "updatedAt": "2025-07-01T19:19:16.000Z",
      "versionId": "f98af83c-edde-4c13-be69-a4652f93f4a5",
      "isArchived": false,
      "staticData": null,
      "connections": {
        "Get batch": {
          "ai_tool": [
            [
              {
                "node": "Bulk WHOIS MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Delete batch": {
          "ai_tool": [
            [
              {
                "node": "Bulk WHOIS MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Get your batches": {
          "ai_tool": [
            [
              {
                "node": "Bulk WHOIS MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Query domain database": {
          "ai_tool": [
            [
              {
                "node": "Bulk WHOIS MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "WHOIS query for a domain": {
          "ai_tool": [
            [
              {
                "node": "Bulk WHOIS MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Check domain availability": {
          "ai_tool": [
            [
              {
                "node": "Bulk WHOIS MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Check domain rank (authority).": {
          "ai_tool": [
            [
              {
                "node": "Bulk WHOIS MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Create batch. Batch is then being processed until ": {
          "ai_tool": [
            [
              {
                "node": "Bulk WHOIS MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        }
      },
      "triggerCount": 0
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 14,
      "nodeTypes": {
        "n8n-nodes-base.stickyNote": {
          "count": 5
        },
        "n8n-nodes-base.httpRequestTool": {
          "count": 8
        },
        "@n8n/n8n-nodes-langchain.mcpTrigger": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "David Ashby",
      "username": "cfomodz",
      "bio": "Unlimited Access to my paid workflows 👇 For the cost of one a month",
      "verified": true,
      "links": [
        "https://www.skool.com/n8n-automation-lab"
      ],
      "avatar": "https://gravatar.com/avatar/0118796cfdab829a3307d407dfeeb01a3952eb402584a45a211e4ef7d15edbbf?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 1293,
        "icon": "file:../mcp.svg",
        "name": "@n8n/n8n-nodes-langchain.mcpTrigger",
        "codex": {
          "data": {
            "alias": [
              "Model Context Protocol",
              "MCP Server"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.mcptrigger/"
                }
              ]
            },
            "categories": [
              "AI",
              "Core Nodes",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Root Nodes",
                "Model Context Protocol"
              ],
              "Core Nodes": [
                "Other Trigger Nodes"
              ]
            }
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "MCP Server Trigger"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDE5NSAxOTUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+Cgk8ZyBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMTIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CgkJPHBhdGggZD0iTTI1IDk3Ljg1MjhMOTIuODgyMyAyOS45NzA2QzEwMi4yNTUgMjAuNTk4IDExNy40NTEgMjAuNTk4IDEyNi44MjMgMjkuOTcwNlYyOS45NzA2QzEzNi4xOTYgMzkuMzQzMSAxMzYuMTk2IDU0LjUzOTEgMTI2LjgyMyA2My45MTE3TDc1LjU1ODEgMTE1LjE3NyIvPgoJCTxwYXRoIGQ9Ik03Ni4yNjUzIDExNC40N0wxMjYuODIzIDYzLjkxMTdDMTM2LjE5NiA1NC41MzkxIDE1MS4zOTIgNTQuNTM5MSAxNjAuNzY1IDYzLjkxMTdMMTYxLjExOCA2NC4yNjUyQzE3MC40OTEgNzMuNjM3OCAxNzAuNDkxIDg4LjgzMzggMTYxLjExOCA5OC4yMDYzTDk5LjcyNDggMTU5LjZDOTYuNjAwNiAxNjIuNzI0IDk2LjYwMDYgMTY3Ljc4OSA5OS43MjQ4IDE3MC45MTNMMTEyLjMzMSAxODMuNTIiLz4KCQk8cGF0aCBkPSJNMTA5Ljg1MyA0Ni45NDExTDU5LjY0ODIgOTcuMTQ1N0M1MC4yNzU3IDEwNi41MTggNTAuMjc1NyAxMjEuNzE0IDU5LjY0ODIgMTMxLjA4N1YxMzEuMDg3QzY5LjAyMDggMTQwLjQ1OSA4NC4yMTY4IDE0MC40NTkgOTMuNTg5NCAxMzEuMDg3TDE0My43OTQgODAuODgyMiIvPgoJPC9nPgo8L3N2Zz4K"
        },
        "displayName": "MCP Server Trigger",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          },
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 32,
        "name": "Market Research"
      },
      {
        "id": 48,
        "name": "AI RAG"
      }
    ],
    "image": []
  }
}