# Nodes2Cloud > Nodes2Cloud is a visual workflow automation builder, similar to n8n or Zapier, that coding agents can drive over MCP. An agent or a person on the canvas connects nodes (triggers, logic, AI agents and 155 integrations), and each workflow is compiled to plain TypeScript and deployed as a Cloudflare Worker in the user's own Cloudflare account after they approve it. Workflows are stored as a JSON graph that users can copy out of the editor and paste back in. ## Rules to know before editing a workflow - **`{{$json}}` is always the trigger input** (webhook body, chat message, queue message, form submission). It never changes as the workflow runs. This differs from n8n, where `$json` is the previous node's output. - **Read an earlier node's result with `{{$node....}}`**, e.g. `{{$node.ai_agent_1.output}}` or `{{$node.http_request_1.json.id}}`. `` is the node's `id` in the workflow JSON (the editor numbers them `_`, e.g. `google_sheets_1`). - **Edges set the order, not the data.** Every node produces one value; downstream nodes reach it only through `{{$node.}}` expressions. Wiring an edge does not pass data along. - **AI Agent results:** `{{$node.ai_agent_1.output}}` is the model's answer as text. To get separate fields, set the agent's `responseFormat` to `"json"` and give a `responseSchema`; then `output` is a parsed object and `{{$node.ai_agent_1.output.category}}` works. Putting the whole `output` into several columns writes the same text into every one. - **An AI Agent needs a model.** Connect a model node (`ai_model_openai`, `ai_model_anthropic`, `ai_model_gemini`, `ai_model_workers_ai`, `ai_model_custom`) into the agent's `model` input handle. Tools go into its `tools` handle. - **Credentials can't be written in JSON.** A `credential` field holds the id of a credential the user connected in the editor. Keep ids that are already in the user's JSON; for a new node, leave `credential` as `""` and tell the user to pick an account in that node's panel. - **Don't rename node ids** when editing a workflow: every `{{$node.}}` reference depends on them. ## Helping a user fix a workflow When a user shares a screenshot of the Nodes2Cloud editor and asks you to fix or build a workflow: 1. **Ask for the workflow JSON** — a screenshot hides most settings. In the editor: **⋯ (More actions) → Copy JSON**, then paste it into the chat. 2. **Return the complete corrected workflow JSON** (all nodes and edges, not a diff), keeping existing node ids and credential ids. 3. **Tell the user how to load it:** **⋯ (More actions) → Paste workflow JSON**, paste, then **Paste to canvas**. It replaces the canvas; ⌘Z / Ctrl+Z undoes it. 4. **List what they must do by hand:** pick credentials on new nodes, fill in real ids (spreadsheet ids, channel ids), then run the workflow once with test data. Check before answering: every `{{$node.}}` names a node that exists and runs earlier; `$json` is used only for trigger data; AI Agent fields read from `output.` only when `responseFormat` is `"json"`; every `select` property uses one of its listed values. Users can also connect Claude, ChatGPT, Cursor, VS Code or another MCP client to Nodes2Cloud's MCP server (`https://api.nodes2cloud.com/mcp`), which lets an assistant read, validate and update their workflows directly. Setup steps for each client are at https://nodes2cloud.com/docs/mcp. ## Node types (233) - Triggers: Chat Trigger (`chat_trigger`), Cron Schedule (`cron_trigger`), Discord: On Interaction (`discord-trigger`), Email Trigger (`email_trigger`), Error Trigger (`error_trigger`), Form Trigger (`form_trigger`), Google Docs: Document Updated (`google_docs_updated_trigger`), Google Sheets: Row Added/Updated (`google_sheets_updated_trigger`), Manual Trigger (`manual_trigger`), MCP Tool (`mcp_trigger`), Queue (`queue_trigger`), Slack: Event Trigger (`slack_trigger`), Supabase: Database Event (`supabase_trigger`), Telegram: On Message (`telegram_trigger`), Typeform: On Submission (`typeform_trigger`), Vonage: On Incoming SMS (`vonage_sms_trigger`), Webhook (`webhook_trigger`), WhatsApp: On Message (`whatsapp_trigger`) - Flow control: Break (`loop_break`), Call Workflow (`call_workflow`), Continue (`loop_continue`), Delay (`delay`), Execute Sub-workflow (`execute_sub_workflow`), Filter (`filter`), If/Condition (`if`), Limit (`limit`), Loop Over Items (Batch) (`split_in_batches`), Loop Over Rows (`iterate_rows`), Loop While (`loop_while`), Merge (`merge`), No Operation (`no_op`), Stop and Error (`stop_and_error`), Switch (`switch`), Wait for Event (`wait_for_event`), Wait Until (`wait_until`) - Data transformation: Aggregate (`aggregate`), Aggregate Loop Results (`aggregate_region`), Compare Datasets (`compare_datasets`), Date & Time (`date_time`), Edit Fields (Set) (`set`), Filter Table (`filter_table`), Map Items (`map_items`), Remove Duplicates (`remove_duplicates`), Rename Keys (`rename_keys`), Search Table (`search_table`), Sort (`sort`), Split Out (`split_out`), Summarize (`summarize`) - Files: Compression (`compression`), Convert to File (`convert_to_file`), Extract From File (`extract_from_file`), HTML Extract (`html_extract`), HTML to PDF (`html_to_pdf`), Markdown (`markdown`), Spreadsheet File (`spreadsheet_file`), XML (`xml`) - Core: Chat Reply (`chat_reply`), Code (JavaScript) (`code`), Crypto (`crypto`), HTTP Request (`http_request`), Respond to Webhook (`respond_to_webhook`), RSS Read (`rss_read`), Workflow State (`workflow_state`) - Cloudflare: D1 Query (`d1_query`), R2 List Objects (`r2_list`), R2 Upload (`r2_upload`), Send to Queue (`queue_send`), Vectorize Query (`vectorize_query`), Vectorize Upsert (`vectorize_upsert`), Workers AI (`workers_ai`) - AI: AI Agent (`ai_agent`), Anthropic Model (`ai_model_anthropic`), Anthropic: Send Message (`anthropic`), Custom Model (`ai_model_custom`), D1 Chat Memory (`ai_memory_d1`), Google Gemini Model (`ai_model_gemini`), HTTP Request Tool (`ai_tool_http`), KV Chat Memory (`ai_memory_kv`), MCP Client Tool (`ai_tool_mcp`), OpenAI Model (`ai_model_openai`), OpenAI: Chat Completion (`openai`), Sub-Agent (`ai_subagent`), Think Tool (`ai_tool_think`), Vectorize Knowledge Tool (`ai_tool_vectorize`), Window Buffer Memory (`ai_memory_buffer`), Workers AI Model (`ai_model_workers_ai`) - Messaging: Discord: Add Role to Member (`discord-member-role-add`), Discord: Ban a Member (`discord-member-ban`), Discord: Create a Channel (`discord-channel-create`), Discord: Delete a Channel (`discord-channel-delete`), Discord: Delete a Message (`discord-message-delete`), Discord: Get a Channel (`discord-channel-get`), Discord: Get a Message (`discord-message-get`), Discord: Kick a Member (`discord-member-kick`), Discord: List Channels (`discord-channel-list`), Discord: List Members (`discord-member-list`), Discord: List Messages (`discord-message-list`), Discord: React to Message (`discord-message-react`), Discord: Remove Role from Member (`discord-member-role-remove`), Discord: Send and Wait (`discord-send-and-wait`), Discord: Send Message (`discord`), Discord: Timeout a Member (`discord-member-timeout`), Discord: Unban a Member (`discord-member-unban`), Discord: Update a Channel (`discord-channel-update`), Matrix: Send Message (`matrix`), Mattermost: Post Message (`mattermost`), MessageBird: Send SMS (`messagebird`), Slack: Add Reaction (`slack_add_reaction`), Slack: Delete Message (`slack_delete_message`), Slack: Lookup User by Email (`slack_lookup_user`), Slack: Post Message (`slack`), Slack: Send Direct Message (`slack_send_dm`), Slack: Update Message (`slack_update_message`), Telegram: Answer an Inline Query Callback (`telegram_answer_inline_query`), Telegram: Answer Query a Callback (`telegram_answer_callback_query`), Telegram: Delete a Chat Message (`telegram_delete_chat_message`), Telegram: Edit a Text Message (`telegram_edit_message_text`), Telegram: Get a Chat (`telegram_get_chat`), Telegram: Get a File (`telegram_get_file`), Telegram: Get a Member in a Chat (`telegram_get_chat_member`), Telegram: Get All Administrators in a Chat (`telegram_get_chat_administrators`), Telegram: Leave a Chat (`telegram_leave_chat`), Telegram: Pin a Chat Message (`telegram_pin_chat_message`), Telegram: Send a Chat Action (`telegram_send_chat_action`), Telegram: Send a Document (`telegram_send_document`), Telegram: Send a Location (`telegram_send_location`), Telegram: Send a Media Group Message (`telegram_send_media_group`), Telegram: Send a Message Draft (`telegram_send_message_draft`), Telegram: Send a Photo Message (`telegram_send_photo`), Telegram: Send a Rich Message (`telegram_send_rich_message`), Telegram: Send a Rich Message Draft (`telegram_send_rich_message_draft`), Telegram: Send a Sticker (`telegram_send_sticker`), Telegram: Send a Text Message (`telegram`), Telegram: Send a Video (`telegram_send_video`), Telegram: Send an Animated File (`telegram_send_animation`), Telegram: Send an Audio File (`telegram_send_audio`), Telegram: Send Message and Wait for Response (`telegram_send_and_wait`), Telegram: Set a Title on a Chat (`telegram_set_chat_title`), Telegram: Set Description on a Chat (`telegram_set_chat_description`), Telegram: Unpin a Chat Message (`telegram_unpin_chat_message`), Twilio: Send SMS (`twilio`), Vonage: Send SMS (`vonage`), WhatsApp: Delete Media (`whatsapp_delete_media`), WhatsApp: Download Media (`whatsapp_download_media`), WhatsApp: Mark as Read (`whatsapp_mark_as_read`), WhatsApp: Send and Wait for Response (`whatsapp_send_and_wait`), WhatsApp: Send Contact (`whatsapp_send_contact`), WhatsApp: Send Interactive (`whatsapp_send_interactive`), WhatsApp: Send Location (`whatsapp_send_location`), WhatsApp: Send Media (`whatsapp_send_media`), WhatsApp: Send Message (`whatsapp_send_message`), WhatsApp: Send Template (`whatsapp_send_template`), WhatsApp: Upload Media (`whatsapp_upload_media`) - Email: AWS SES: Send Email (`aws_ses`), Gmail (`gmail`), Gmail: Send Email (`gmail_send`), Mailchimp: Add List Member (`mailchimp`), Mailchimp: Remove List Member (`mailchimp-remove-member`), Mailchimp: Send Campaign (`mailchimp-send-campaign`), Send Email (`email_send`), SendGrid: Send Email (`sendgrid`) - Social: Facebook Graph: API Request (`facebook_graph`), YouTube (`youtube`) - CRM: ActiveCampaign (`activecampaign`), Calendly: List Events (`calendly`), Freshdesk: Create Ticket (`freshdesk`), HubSpot (`hubspot`), Intercom (`intercom`), Pipedrive: Create Deal (`pipedrive`) - Productivity: Airtable: Create Record (`airtable`), Google Calendar (`google_calendar`), Google Docs (`google_docs`), Google Drive (`google_drive`), Google Sheets (`google_sheets`), Notion: Append Block (`notion-append-block`), Notion: Create Page (`notion`), Notion: Get Page (`notion-get-page`), Notion: Search (`notion-search`), Notion: Update Page (`notion-update-page`) - Project management: Asana: Create Task (`asana`), ClickUp: Add Comment (`clickup-add-comment`), ClickUp: Add Task Tag (`clickup-add-task-tag`), ClickUp: Create Task (`clickup`), ClickUp: Delete Task (`clickup-delete-task`), ClickUp: Get Custom Fields (`clickup-get-custom-fields`), ClickUp: Get Folder (`clickup-get-folder`), ClickUp: Get List (`clickup-get-list`), ClickUp: Get Space Tags (`clickup-get-space-tags`), ClickUp: Get Task (`clickup-get-task`), ClickUp: List Tasks (`clickup-list-tasks`), ClickUp: Remove Task Tag (`clickup-remove-task-tag`), ClickUp: Set Custom Field (`clickup-set-custom-field`), ClickUp: Update Task (`clickup-update-task`), Jira: Add Comment (`jira-add-comment`), Jira: Create Issue (`jira`), Jira: Get Issue (`jira-get-issue`), Jira: Search (`jira-search`), Jira: Update Issue (`jira-update-issue`), Monday.com (`monday`), Trello: Create Card (`trello`) - Forms: Jotform: Get Submissions (`jotform`), Typeform: Get Responses (`typeform`) - Databases: AWS DynamoDB: Put Item (`aws_dynamodb`), Elasticsearch: Index Document (`elasticsearch`), Google BigQuery (`google_bigquery`), Google Firestore (`google_firestore`), Kafka: Produce Record (`kafka`), Redis: Set / Get (`redis`), Snowflake: Query (`snowflake`), Supabase: Delete Row(s) (`supabase_delete_row`), Supabase: Insert Row(s) (`supabase_insert_row`), Supabase: Select Rows (`supabase`), Supabase: Update Row(s) (`supabase_update_row`), Supabase: Upsert Row(s) (`supabase_upsert_row`) - DevOps: AWS Lambda: Invoke (`aws_lambda`), AWS S3: Get Object (`aws_s3`), AWS SNS: Publish (`aws_sns`), AWS SQS: Send Message (`aws_sqs`), GitHub (`github`), GitLab (`gitlab`) - E-commerce: Shopify: Get Orders (`shopify`), Stripe: Create Customer (`stripe`), WooCommerce: Get Orders (`woocommerce`) - CMS: Ghost: Create Post (`ghost`), Google Analytics (`google_analytics`), Webflow: Create CMS Item (`webflow`), Webflow: Delete CMS Item (`webflow_delete_item`), Webflow: Get CMS Item (`webflow_get_item`), Webflow: List CMS Items (`webflow_list_items`), Webflow: List Collections (`webflow_list_collections`), Webflow: List Sites (`webflow_list_sites`), Webflow: Update CMS Item (`webflow_update_item`), WordPress: Create Post (`wordpress`) The full reference — every node's properties, allowed values, inputs and outputs, the workflow JSON format, the expression language and a worked example — is in [llms-full.txt](https://nodes2cloud.com/llms-full.txt). ## Docs - [Full reference for AI assistants](https://nodes2cloud.com/llms-full.txt): workflow JSON format, expressions, all node types - [Nodes2Cloud editor](https://app.nodes2cloud.com): where workflows are built, run and deployed - [MCP server](https://api.nodes2cloud.com/mcp): connect an AI assistant to read, validate and update workflows - [MCP setup](https://nodes2cloud.com/docs/mcp): connect an MCP client, use the installer, and the tools an agent gets ## Connect an MCP client (46 clients) ### IDEs and editors - [Cursor](https://nodes2cloud.com/docs/mcp/cursor): One-click install; Cursor opens the browser to sign in. - [VS Code](https://nodes2cloud.com/docs/mcp/vscode): Copilot agent mode, through the built-in MCP support. - [VS Code Insiders](https://nodes2cloud.com/docs/mcp/vscode-insiders): Copilot agent mode, through the built-in MCP support. - [Visual Studio](https://nodes2cloud.com/docs/mcp/visual-studio): Visual Studio 2022 17.14+ and 2026, in Copilot agent mode (Windows). - [Kiro](https://nodes2cloud.com/docs/mcp/kiro): One-click install for the Kiro IDE. - [Antigravity](https://nodes2cloud.com/docs/mcp/antigravity): Google Antigravity's app, IDE and agy CLI share one config file. - [Devin Desktop](https://nodes2cloud.com/docs/mcp/devin): Formerly Windsurf. The Devin Local agent and the Devin CLI. - [Zed](https://nodes2cloud.com/docs/mcp/zed): Zed's agent panel, as a remote context server. - [JetBrains Junie](https://nodes2cloud.com/docs/mcp/junie): Junie in JetBrains IDEs and the Junie CLI. - [JetBrains AI Assistant](https://nodes2cloud.com/docs/mcp/jetbrains-ai): AI Assistant in IntelliJ IDEA, PyCharm, WebStorm and the rest. ### Editor extensions - [Cline](https://nodes2cloud.com/docs/mcp/cline): The Cline extension and the Cline CLI. - [Roo Code](https://nodes2cloud.com/docs/mcp/roo-code): Roo Code connects with a Personal Access Token. - [Kilo Code](https://nodes2cloud.com/docs/mcp/kilo-code): Kilo's CLI, VS Code and JetBrains builds share one config. - [Continue](https://nodes2cloud.com/docs/mcp/continue): Continue's agent mode, through the local n2c-mcp proxy. - [Augment Code](https://nodes2cloud.com/docs/mcp/augment): Augment in VS Code and JetBrains, and the Auggie CLI. ### Agent CLIs - [Claude Code](https://nodes2cloud.com/docs/mcp/claude-code): One command; Claude Code opens the browser to sign in. - [Cursor CLI](https://nodes2cloud.com/docs/mcp/cursor-cli): Cursor's agent CLI reads the same mcp.json as the editor. - [OpenAI Codex](https://nodes2cloud.com/docs/mcp/codex): The Codex CLI, IDE extension and app share config.toml. - [Gemini CLI](https://nodes2cloud.com/docs/mcp/gemini-cli): Gemini CLI with an API key or Code Assist licence. - [GitHub Copilot CLI](https://nodes2cloud.com/docs/mcp/copilot-cli): The copilot terminal agent. - [Kiro CLI](https://nodes2cloud.com/docs/mcp/kiro-cli): Kiro's terminal agent, which replaced the Amazon Q Developer CLI. - [OpenCode](https://nodes2cloud.com/docs/mcp/opencode): sst/opencode in the terminal. - [Amp](https://nodes2cloud.com/docs/mcp/amp): Sourcegraph's Amp; it opens the browser to sign in on start. - [Factory Droid](https://nodes2cloud.com/docs/mcp/factory-droid): Factory's droid CLI. - [Qwen Code](https://nodes2cloud.com/docs/mcp/qwen-code): Alibaba's Qwen Code CLI. - [Goose](https://nodes2cloud.com/docs/mcp/goose): Goose desktop and CLI, as a remote extension. - [Warp](https://nodes2cloud.com/docs/mcp/warp): Warp's agent, from Settings. ### Chat and desktop apps - [Claude](https://nodes2cloud.com/docs/mcp/claude): Claude on the web, desktop and mobile, as a custom connector. - [ChatGPT](https://nodes2cloud.com/docs/mcp/chatgpt): ChatGPT on the web, as a custom MCP plugin. - [Mistral Vibe](https://nodes2cloud.com/docs/mcp/mistral-vibe): Formerly Le Chat, as a custom MCP connector. - [LM Studio](https://nodes2cloud.com/docs/mcp/lm-studio): LM Studio 0.3.17 and later. - [Raycast](https://nodes2cloud.com/docs/mcp/raycast): Raycast AI on macOS and iOS. - [Jan](https://nodes2cloud.com/docs/mcp/jan): The Jan desktop app. - [Msty Studio](https://nodes2cloud.com/docs/mcp/msty): Msty Studio's Toolbox. ### Automation and dev tools - [Microsoft Copilot Studio](https://nodes2cloud.com/docs/mcp/copilot-studio): Give a Copilot Studio agent the Nodes2Cloud tools. - [n8n](https://nodes2cloud.com/docs/mcp/n8n): The MCP Client Tool node on an n8n AI Agent. - [Zapier](https://nodes2cloud.com/docs/mcp/zapier): Zapier's MCP Client app, in Zaps and Zapier Agents. - [Make](https://nodes2cloud.com/docs/mcp/make): Make's MCP Client app. - [Postman](https://nodes2cloud.com/docs/mcp/postman): Explore and call the tools from a Postman MCP request. - [MCP Inspector](https://nodes2cloud.com/docs/mcp/mcp-inspector): The protocol's own debugging tool. ### SDKs - [OpenAI API](https://nodes2cloud.com/docs/mcp/openai-api): The Responses API's hosted MCP tool. - [Claude API](https://nodes2cloud.com/docs/mcp/anthropic-api): The Messages API MCP connector. - [Vercel AI SDK](https://nodes2cloud.com/docs/mcp/vercel-ai-sdk): createMCPClient from @ai-sdk/mcp. - [LangChain](https://nodes2cloud.com/docs/mcp/langchain): langchain-mcp-adapters, for LangChain and LangGraph agents. - [Google ADK](https://nodes2cloud.com/docs/mcp/google-adk): Agent Development Kit's McpToolset. - [Cloudflare Agents SDK](https://nodes2cloud.com/docs/mcp/cloudflare-agents): addMcpServer inside an Agent. ## Optional - [Homepage](https://nodes2cloud.com)