{
  "workflow": {
    "id": 5548,
    "name": "Sms messaging API integration for AI agents with BulkSMS",
    "views": 679,
    "recentViews": 0,
    "totalViews": 679,
    "createdAt": "2025-07-01T23:46:43.610Z",
    "description": "Complete MCP server exposing 15 BulkSMS JSON REST 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 BulkSMS JSON REST 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 BulkSMS JSON REST 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 https://api.bulksms.com/v1\n• **AI Expressions**: Automatically populate parameters via `$fromAI()` placeholders\n• **Native Integration**: Returns responses directly to the AI agent\n\n## 📋 Available Operations (15 total)\n\n### 🔧 Blocked-Numbers (2 endpoints)\n\n• **GET /blocked-numbers**: Block Phone Number\n• **POST /blocked-numbers**: Create a blocked number\n\n### 🔧 Credit (1 endpoints)\n\n• **POST /credit/transfer**: Transfer Account Credits\n\n### 🔧 Messages (5 endpoints)\n\n• **GET /messages**: List Related Messages\n• **POST /messages**: Send Messages\n• **GET /messages/send**: Send message by simple GET or POST\n• **GET /messages/{id}**: Show Message\n• **GET /messages/{id}/relatedReceivedMessages**: List Related Messages\n\n### 🔧 Profile (1 endpoints)\n\n• **GET /profile**: Retrieve User Profile\n\n### 🔧 Rmm (1 endpoints)\n\n• **POST /rmm/pre-sign-attachment**: Generate Attachment Upload URL\n\n### 🔧 Webhooks (5 endpoints)\n\n• **GET /webhooks**: Update Webhook Settings\n• **POST /webhooks**: Create a webhook\n• **DELETE /webhooks/{id}**: Delete a webhook\n• **GET /webhooks/{id}**: Read a webhook\n• **POST /webhooks/{id}**: Update a webhook\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 BulkSMS JSON REST 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": "vepecgVq69ZuBVeW",
      "meta": null,
      "name": "BulkSMS JSON REST API MCP Server",
      "tags": [],
      "nodes": [
        {
          "id": "ffd1848a-14c2-4de5-beb4-51f5b4e59f5e",
          "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 basic credentials\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 15 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": "139e3569-1e49-4b65-8614-7d8623dada9c",
          "name": "Workflow Overview",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1120,
            -240
          ],
          "parameters": {
            "width": 420,
            "height": 1200,
            "content": "## 🛠️ BulkSMS JSON REST MCP Server ✅ 15 operations\n\n### About\nThe BulkSMS JSON REST API (base URL: `https://api.bulksms.com/v1`) enables sending and receiving SMS messages, accessing message history, and viewing account details. All requests require `Content-Type: application/json` and support features like Unicode encoding, group messaging, and batch sends. Dates must be ISO-8601 formatted, and unknown response properties should be ignored for forward compatibility.\n\n### 🔧 How it Works\n\nThis workflow converts the BulkSMS JSON REST 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 https://api.bulksms.com/v1\n• **AI Expressions**: Automatically populate parameters via `$fromAI()` placeholders\n• **Native Integration**: Returns responses directly to the AI agent\n\n\n### 📋 Available Operations (15 endpoints)\n\n**Blocked Numbers (2 operations)**\nList Blocked Numbers, Block Phone Number\n\n**Credits (1 operations)**\nTransfer Account Credits\n\n**Message (5 operations)**\nRetrieve Message History, Send New Message, Send Quick Message, View Message Details, List Related Messages\n\n**Profile (1 operations)**\nRetrieve User Profile\n\n**Attachments (1 operations)**\nGenerate Attachment Upload URL\n\n**Web Hooks (5 operations)**\nList All Webhooks, Register New Webhook, Remove Webhook, Get Webhook Details, Update Webhook Settings\n\n"
          },
          "typeVersion": 1
        },
        {
          "id": "f2961312-51e8-44f6-bfee-cdec1c3bdf76",
          "name": "BulkSMS JSON REST MCP Server",
          "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
          "position": [
            -620,
            -240
          ],
          "webhookId": "3b652905-f4f9-4a4c-bd5f-e3820b0b8231",
          "parameters": {
            "path": "bulksms-json-rest-mcp"
          },
          "typeVersion": 1
        },
        {
          "id": "ec898aef-262d-4aab-a1a3-c752137c9f9e",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -660,
            -100
          ],
          "parameters": {
            "color": 2,
            "width": 500,
            "height": 200,
            "content": "## Blocked Numbers"
          },
          "typeVersion": 1
        },
        {
          "id": "a3688902-64ba-4fed-a550-885f22402565",
          "name": "List Blocked Numbers",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -520,
            -60
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/blocked-numbers",
            "options": {},
            "sendQuery": true,
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "queryParameters": {
              "parameters": [
                {
                  "name": "min-id",
                  "value": "={{ $fromAI('min-id', 'Records with an `id` that is greater or equal to min-id will be returned. The default value is `0`. You can add 1 to an id that you previously retrieved, to return subsequent records.', 'number') }}"
                },
                {
                  "name": "limit",
                  "value": "={{ $fromAI('limit', 'The maximum number of records to return. The default value is `10000`. The value cannot be greater than 10000.', 'number') }}"
                }
              ]
            },
            "toolDescription": "List blocked numbers\n\nParameters:\n- Query parameters:\n  • min-id (optional) - Records with an `id` that is greater or equal to min-id will be returned. The default value is `0`. You can add 1 to an id that you previously retrieved, to return subsequent records.\n  • limit (optional) - Maximum number of records to return. The default value is `10000`. The value cannot be greater than 10000."
          },
          "typeVersion": 4.2
        },
        {
          "id": "a74dd5ac-d039-4155-8809-69fdeb961f82",
          "name": "Block Phone Number",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -320,
            -60
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/blocked-numbers",
            "method": "POST",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Create a blocked number"
          },
          "typeVersion": 4.2
        },
        {
          "id": "ff5bccbc-396a-4fef-9eed-ee6f1f1627ea",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -660,
            140
          ],
          "parameters": {
            "color": 3,
            "width": 300,
            "height": 200,
            "content": "## Credits"
          },
          "typeVersion": 1
        },
        {
          "id": "241f3f45-c9c9-4116-b864-3caf3d11c9a1",
          "name": "Transfer Account Credits",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -520,
            180
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/credit/transfer",
            "method": "POST",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Transfer credits to another account"
          },
          "typeVersion": 4.2
        },
        {
          "id": "a16a1223-1a6d-4981-a5f9-1ab96f31ce8f",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -660,
            380
          ],
          "parameters": {
            "color": 4,
            "width": 1100,
            "height": 200,
            "content": "## Message"
          },
          "typeVersion": 1
        },
        {
          "id": "f180dd93-2088-4684-8b0d-6f8314b86266",
          "name": "Retrieve Message History",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -520,
            420
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/messages",
            "options": {},
            "sendQuery": true,
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "queryParameters": {
              "parameters": [
                {
                  "name": "limit",
                  "value": "={{ $fromAI('limit', 'The maximum number of messages that are returned. The default is 1000. The value of `limit` is not a guarantee that a specific number of messages will be in the response, even if there are more messages available. Consider the case where you have 150 messages and you specify `limit=50`. It is possible that only 49 messages will be returned. The way to make sure that there are no more messages is to submit a new call using the `id` filter field with the `<` operator (described below).', 'number') }}"
                },
                {
                  "name": "filter",
                  "value": "={{ $fromAI('filter', 'See the message filtering for more information.', 'string') }}"
                },
                {
                  "name": "sortOrder",
                  "value": "={{ $fromAI('sortOrder', 'The default value is DESCENDING If the `sortOrder` is DESCENDING, the newest messages be first in the result. ASCENDING places the oldest messages on top of the response.', 'string') }}"
                }
              ]
            },
            "toolDescription": "Retrieve Messages\n\nParameters:\n- Query parameters:\n  • limit (optional) - Maximum number of messages that are returned. The default is 1000. The value of `limit` is not a guarantee that a specific number of messages will be in the response, even if there are more messages available. Consider the case where you have 150 messages and you specify `limit=50`. It is possible that only 49 messages will be returned. The way to make sure that there are no more messages is to submit a new call using the `id` filter field with the `<` operator (described below).\n  • filter (optional) - See the message filtering for more information.\n  • sortOrder (optional) - Default value is DESCENDING If the `sortOrder` is DESCENDING, the newest messages be first in the result. ASCENDING places the oldest messages on top of the response."
          },
          "typeVersion": 4.2
        },
        {
          "id": "761a0989-3391-4aea-acc2-f02056ab9603",
          "name": "Send New Message",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -320,
            420
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/messages",
            "method": "POST",
            "options": {},
            "sendQuery": true,
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "queryParameters": {
              "parameters": [
                {
                  "name": "deduplication-id",
                  "value": "={{ $fromAI('deduplication-id', 'Safeguards against the possibility of sending the same messages more than once. If a communication failure occurs during a submission, you cannot be sure that the submission was processed; therefore you would have to submit it again. When you post the retry, you must use the `deduplication-id` of the original post. The BulkSMS system uses this ID to check that the request was not previously processed. (If it was previously processed, the submission will succeed, and the behaviour will be indistinguishable to you from a non-duplicated submission). The ID expires after about 12 hours.', 'number') }}"
                },
                {
                  "name": "auto-unicode",
                  "value": "={{ $fromAI('auto-unicode', 'Specifies how to deal with message text that contains characters not present in the GSM 03.38 character set. Messages that contain only GSM 03.38 characters are not affected by this setting. If the value is `true` then a message containing non-GSM 03.38 characters will be transmitted as a Unicode SMS (which is most likely more costly). Please note: when `auto-unicode` is `true` and the value of the `encoding` property is specified as `UNICODE`, the message will always be sent as `UNICODE`. If the value is `false` and the `encoding` property is `TEXT` then non-GSM 03.38 characters will be replaced by the `?` character. When using this setting on the API, you should take case to ensure that your message is _clean_. Invisible unicode and unexpected characters could unintentionally convert an message to `UNICODE`. A common mistake is to use the backtick character (\\`) which is unicode and will turn your `TEXT` message into a `UNICODE` message.', 'boolean', false) }}"
                },
                {
                  "name": "schedule-date",
                  "value": "={{ $fromAI('schedule-date', 'Allows you to send a message in the future. An example value is `2019-02-18T13:00:00+02:00`. It encodes to `2019-02-18T13%3A00%3A00%2B02%3A00`. Credits are deducted from your account immediately. Once submitted, scheduled messages cannot be changed or cancelled. The date can be a maximum of two years in the future. If the value is in the past, the message will be sent immediately. The date format requires you to supply an offset from UTC. You can decide to use the offset of your timezone, or maybe the zone of the recipient's location is more appropriate. If the destination is a group, the group members are determined at the time that you submit the message; not the time the message is scheduled to be sent.', 'string') }}"
                },
                {
                  "name": "schedule-description",
                  "value": "={{ $fromAI('schedule-description', 'A note that is stored together with a scheduled submission, which could be used to more easily identify the scheduled submission at a later date. The value of this field is ignored if the `schedule-date` is not provided. A value that is longer than 256 characters is truncated.', 'string') }}"
                }
              ]
            },
            "toolDescription": "Send Messages\n\nParameters:\n- Query parameters:\n  • deduplication-id (optional) - Safeguards against the possibility of sending the same messages more than once. If a communication failure occurs during a submission, you cannot be sure that the submission was processed; therefore you would have to submit it again. When you post the retry, you must use the `deduplication-id` of the original post. The BulkSMS system uses this ID to check that the request was not previously processed. (If it was previously processed, the submission will succeed, and the behaviour will be indistinguishable to you from a non-duplicated submission). The ID expires after about 12 hours.\n  • auto-unicode (optional) - Specifies how to deal with message text that contains characters not present in the GSM 03.38 character set. Messages that contain only GSM 03.38 characters are not affected by this setting. If the value is `true` then a message containing non-GSM 03.38 characters will be transmitted as a Unicode SMS (which is most likely more costly). Please note: when `auto-unicode` is `true` and the value of the `encoding` property is specified as `UNICODE`, the message will always be sent as `UNICODE`. If the value is `false` and the `encoding` property is `TEXT` then non-GSM 03.38 characters will be replaced by the `?` character. When using this setting on the API, you should take case to ensure that your message is _clean_. Invisible unicode and unexpected characters could unintentionally convert an message to `UNICODE`. A common mistake is to use the backtick character (\\`) which is unicode and will turn your `TEXT` message into a `UNICODE` message.\n  • schedule-date (optional) - Allows you to send a message in the future. An example value is `2019-02-18T13:00:00+02:00`. It encodes to `2019-02-18T13%3A00%3A00%2B02%3A00`. Credits are deducted from your account immediately. Once submitted, scheduled messages cannot be changed or cancelled. The date can be a maximum of two years in the future. If the value is in the past, the message will be sent immediately. The date format requires you to supply an offset from UTC. You can decide to use the offset of your timezone, or maybe the zone of the recipient's location is more appropriate. If the destination is a group, the group members are determined at the time that you submit the message; not the time the message is scheduled to be sent.\n  • schedule-description (optional) - A note that is stored together with a scheduled submission, which could be used to more easily identify the scheduled submission at a later date. The value of this field is ignored if the `schedule-date` is not provided. A value that is longer than 256 characters is truncated."
          },
          "typeVersion": 4.2
        },
        {
          "id": "da4d9b50-4c74-4e1b-bc12-e005e072c171",
          "name": "Send Quick Message",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -120,
            420
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/messages/send",
            "options": {},
            "sendQuery": true,
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "queryParameters": {
              "parameters": [
                {
                  "name": "to",
                  "value": "={{ $fromAI('to', 'The phone number of the recipient.', 'string') }}"
                },
                {
                  "name": "body",
                  "value": "={{ $fromAI('body', 'The text you want to send.', 'string') }}"
                },
                {
                  "name": "deduplication-id",
                  "value": "={{ $fromAI('deduplication-id', 'Refer to the `deduplication-id` parameter.', 'number') }}"
                }
              ]
            },
            "toolDescription": "Send message by simple GET or POST\n\nParameters:\n- Query parameters:\n  • to (required) - Phone number of the recipient.\n  • body (required) - Text you want to send.\n  • deduplication-id (optional) - Refer to the `deduplication-id` parameter."
          },
          "typeVersion": 4.2
        },
        {
          "id": "6d38d67c-9378-4dab-b796-5972253dbc13",
          "name": "View Message Details",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            80,
            420
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/messages/{{ $fromAI('id', 'The `id` of the message you want to retrieve', 'string') }}",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Show Message\n\nParameters:\n- Path parameters:\n  • id (required) - `id` of the message you want to retrieve"
          },
          "typeVersion": 4.2
        },
        {
          "id": "cca16e92-3920-433c-be53-a89c5cc67795",
          "name": "List Related Messages",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            280,
            420
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/messages/{{ $fromAI('id', 'The `id` of the sent message', 'string') }}/relatedReceivedMessages",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "List Related Messages\n\nParameters:\n- Path parameters:\n  • id (required) - `id` of the sent message"
          },
          "typeVersion": 4.2
        },
        {
          "id": "fed9d264-416c-4cc3-94f8-4dee00a52608",
          "name": "Sticky Note4",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -660,
            620
          ],
          "parameters": {
            "color": 5,
            "width": 300,
            "height": 200,
            "content": "## Profile"
          },
          "typeVersion": 1
        },
        {
          "id": "5111f4ea-a923-470a-83cf-fce4e1b72263",
          "name": "Retrieve User Profile",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -520,
            660
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/profile",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Get profile"
          },
          "typeVersion": 4.2
        },
        {
          "id": "20b39b3e-f87f-437a-9d30-c025adb9ba92",
          "name": "Sticky Note5",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -660,
            860
          ],
          "parameters": {
            "color": 6,
            "width": 300,
            "height": 200,
            "content": "## Attachments"
          },
          "typeVersion": 1
        },
        {
          "id": "c6308484-de77-4432-a843-55205bdeb278",
          "name": "Generate Attachment Upload URL",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -520,
            900
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/rmm/pre-sign-attachment",
            "method": "POST",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Upload an attachment via a signed URL"
          },
          "typeVersion": 4.2
        },
        {
          "id": "05c2fd0b-96a2-4477-a536-0701d70f54cd",
          "name": "Sticky Note6",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -660,
            1100
          ],
          "parameters": {
            "color": 7,
            "width": 1100,
            "height": 200,
            "content": "## Web Hooks"
          },
          "typeVersion": 1
        },
        {
          "id": "10ce567c-fa34-4b96-8020-8e8c4f7382d1",
          "name": "List All Webhooks",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -520,
            1140
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/webhooks",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "List webhooks"
          },
          "typeVersion": 4.2
        },
        {
          "id": "b8d0b7f4-d7f1-4927-a6f8-0a6ecfb0d368",
          "name": "Register New Webhook",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -320,
            1140
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/webhooks",
            "method": "POST",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Create a webhook"
          },
          "typeVersion": 4.2
        },
        {
          "id": "68b760b9-57b5-48d5-9abd-96f05f7de851",
          "name": "Remove Webhook",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -120,
            1140
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/webhooks/{{ $fromAI('id', 'The `id` of the webhook', 'string') }}",
            "method": "DELETE",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Delete a webhook\n\nParameters:\n- Path parameters:\n  • id (required) - `id` of the webhook"
          },
          "typeVersion": 4.2
        },
        {
          "id": "1ba4713e-228a-4ada-ac2e-6cd3069d98aa",
          "name": "Get Webhook Details",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            80,
            1140
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/webhooks/{{ $fromAI('id', 'The `id` of the webhook', 'string') }}",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Read a webhook\n\nParameters:\n- Path parameters:\n  • id (required) - `id` of the webhook"
          },
          "typeVersion": 4.2
        },
        {
          "id": "eb6d6819-51d0-4fc7-81a6-ec9f38b573c9",
          "name": "Update Webhook Settings",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            280,
            1140
          ],
          "parameters": {
            "url": "=https://api.bulksms.com/v1/webhooks/{{ $fromAI('id', 'The `id` of the webhook', 'string') }}",
            "method": "POST",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "toolDescription": "Update a webhook\n\nParameters:\n- Path parameters:\n  • id (required) - `id` of the webhook"
          },
          "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-01T23:44:30.792Z",
          "projectId": "G5fce9xGuBAsWBXe",
          "updatedAt": "2025-07-01T23:44:30.792Z",
          "workflowId": "vepecgVq69ZuBVeW"
        }
      ],
      "pinData": {},
      "settings": {
        "timezone": "America/New_York"
      },
      "createdAt": "2025-07-01T23:44:30.790Z",
      "updatedAt": "2025-07-01T23:46:33.000Z",
      "versionId": "b9717cfb-00eb-43cb-bc36-5aee5bddc328",
      "isArchived": false,
      "staticData": null,
      "connections": {
        "Remove Webhook": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Send New Message": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "List All Webhooks": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Block Phone Number": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Send Quick Message": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Get Webhook Details": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "List Blocked Numbers": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Register New Webhook": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "View Message Details": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "List Related Messages": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Retrieve User Profile": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Update Webhook Settings": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Retrieve Message History": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Transfer Account Credits": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Generate Attachment Upload URL": {
          "ai_tool": [
            [
              {
                "node": "BulkSMS JSON REST MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        }
      },
      "triggerCount": 0
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 24,
      "nodeTypes": {
        "n8n-nodes-base.stickyNote": {
          "count": 8
        },
        "n8n-nodes-base.httpRequestTool": {
          "count": 15
        },
        "@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": 33,
        "name": "Social Media"
      },
      {
        "id": 47,
        "name": "AI Chatbot"
      }
    ],
    "image": []
  }
}