nagoc-zerowork 1.1.3 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,13 +2,15 @@
2
2
 
3
3
  A free Model Context Protocol (MCP) server that connects any MCP-compatible AI client (Claude Desktop, Cursor, Windsurf, Zed, etc.) to your **ZeroWork** TaskBots.
4
4
 
5
- Because ZeroWork does not have a public REST API for managing bots, this MCP server acts as a **Webhook Manager**. You configure your TaskBot webhook URLs, and Claude can then dynamically trigger your automations, pass data to them, and query comprehensive ZeroWork documentation.
5
+ Because ZeroWork does not have a public REST API for managing bots, this MCP server acts as a **Webhook Manager**. You configure your TaskBot webhook URLs, and Claude can then dynamically trigger your automations, pass data to them, generate robust selectors, and query comprehensive ZeroWork documentation.
6
6
 
7
7
  ## Features
8
8
 
9
9
  - **Trigger TaskBots** — easily trigger any of your configured ZeroWork TaskBots
10
10
  - **Dynamic Data** — pass JSON payloads to your TaskBots (populates `zw_webhook_data`)
11
- - **Built-in Knowledge Base** — Claude can read the ZeroWork documentation (General, Webhooks, Variables, Tables, Selectors, Troubleshooting) to help you build and debug TaskBots
11
+ - **Search Official Docs** — use `search_zerowork_docs` to query the entire ZeroWork documentation directly inside Claude
12
+ - **Robust Selector Generator** — use `generate_robust_selector` to create non-brittle CSS/XPath selectors tailored for ZeroWork
13
+ - **Built-in Knowledge Base** — Claude can read the embedded ZeroWork documentation resources to help you build and debug TaskBots
12
14
  - **Always up to date** — uses `@latest` so every restart pulls the newest version automatically
13
15
  - **Zero install** — runs via `npx` with no cloning required
14
16
  - **Multi-platform** — works with Claude Desktop, Cursor, Windsurf, Zed, and any stdio MCP client
@@ -36,7 +38,7 @@ Node.js is a free program that allows this MCP to run on your computer. You only
36
38
  3. Click "Generate Webhook"
37
39
  4. Copy the webhook URL (e.g., `https://hook.zerowork.io/...`)
38
40
 
39
- ## Step 2 — Setup (Claude Desktop)
41
+ ## Step 3 — Setup (Claude Desktop)
40
42
 
41
43
  Open your `claude_desktop_config.json` file and configure your bots using the `ZEROWORK_BOTS` environment variable. The value must be a valid JSON string mapping your custom bot names to their webhook URLs.
42
44
 
@@ -77,10 +79,12 @@ Save the file and restart Claude Desktop. The MCP server will connect automatica
77
79
  ## How to Ask Claude
78
80
 
79
81
  Once connected, you can ask Claude things like:
82
+ - "Search ZeroWork docs for how to use multi-line JavaScript Code Blocks in dynamic inputs."
83
+ - "Here is an HTML snippet from LinkedIn. Generate a robust ZeroWork selector for the Connect button."
80
84
  - "What ZeroWork bots do I have configured?"
81
85
  - "Trigger my scraperBot"
82
86
  - "Trigger my dmBot and send it this JSON payload: { 'email': 'test@example.com' }"
83
- - "How do I use variables in ZeroWork?" (Claude will read the embedded documentation resource to answer you)
87
+ - "How do I use variables in ZeroWork?"
84
88
 
85
89
  ## Environment Variables
86
90
 
@@ -90,6 +94,8 @@ Once connected, you can ask Claude things like:
90
94
 
91
95
  ## Available Tools
92
96
 
97
+ - `search_zerowork_docs` - Searches the entire ZeroWork official documentation
98
+ - `generate_robust_selector` - Analyzes HTML snippets to craft non-brittle ZeroWork selectors
93
99
  - `list_taskbots` - Lists all configured TaskBots
94
100
  - `trigger_taskbot` - Triggers a TaskBot without data
95
101
  - `trigger_taskbot_with_data` - Triggers a TaskBot and passes JSON data
@@ -103,8 +109,14 @@ Once connected, you can ask Claude things like:
103
109
  - `resource://zerowork/variables`
104
110
  - `resource://zerowork/tables`
105
111
  - `resource://zerowork/selectors`
112
+ - `resource://zerowork/loops`
113
+ - `resource://zerowork/chatgpt`
114
+ - `resource://zerowork/anti_bot`
106
115
  - `resource://zerowork/troubleshooting`
116
+ - `resource://zerowork/building_blocks`
117
+ - `resource://zerowork/dynamic_inputs`
107
118
 
108
119
  ## License
109
120
 
110
121
  ISC © nagoc
122
+
package/dist/index.js CHANGED
@@ -309,7 +309,7 @@ SUMMARY:
309
309
  - Code Expression: Single-line JS. Requires Agent >= 1.1.72.
310
310
  - Code Block: Multi-line JS with imports. Requires Agent >= 1.1.72.
311
311
  - Spintax {opt1|opt2|opt3}: Randomizes text. Any agent version.
312
- `};var Az=()=>{let t=process.env.ZEROWORK_BOTS;if(!t)return{};try{return JSON.parse(t)}catch{return console.error("Failed to parse ZEROWORK_BOTS environment variable. Must be valid JSON."),{}}},lo=new On({name:"nagoc-zerowork",version:"1.1.3"},{capabilities:{tools:{},resources:{}}});lo.setRequestHandler(Cs,async()=>({resources:[{uri:"resource://zerowork/general",name:"ZeroWork General Knowledge",mimeType:"text/plain",description:"General concepts about ZeroWork RPA, TaskBots, and Architecture"},{uri:"resource://zerowork/webhooks",name:"ZeroWork Webhooks Guide",mimeType:"text/plain",description:"How to trigger ZeroWork bots and pass dynamic data via webhooks"},{uri:"resource://zerowork/variables",name:"ZeroWork Variables Guide",mimeType:"text/plain",description:"How variables work in ZeroWork"},{uri:"resource://zerowork/tables",name:"ZeroWork Tables Guide",mimeType:"text/plain",description:"How data tables work in ZeroWork"},{uri:"resource://zerowork/selectors",name:"ZeroWork Selectors Guide",mimeType:"text/plain",description:"How CSS and XPath selectors work in ZeroWork"},{uri:"resource://zerowork/loops",name:"ZeroWork Loops Guide",mimeType:"text/plain",description:"How loops and repeats work in ZeroWork"},{uri:"resource://zerowork/chatgpt",name:"ZeroWork ChatGPT Guide",mimeType:"text/plain",description:"How to integrate ChatGPT via Ask ChatGPT block"},{uri:"resource://zerowork/anti_bot",name:"ZeroWork Anti-Bot Guide",mimeType:"text/plain",description:"Best practices to avoid bot detection and handle dynamic states"},{uri:"resource://zerowork/troubleshooting",name:"ZeroWork Troubleshooting Guide",mimeType:"text/plain",description:"Common problems and troubleshooting steps"},{uri:"resource://zerowork/building_blocks",name:"ZeroWork Building Blocks Guide",mimeType:"text/plain",description:"Comprehensive catalog of all ZeroWork building blocks and their options"},{uri:"resource://zerowork/dynamic_inputs",name:"ZeroWork Dynamic Inputs Guide",mimeType:"text/plain",description:"How to use dynamic inputs: variable/table references, code expressions, code blocks, and spintax in ZeroWork building blocks"}]}));lo.setRequestHandler(qs,async t=>{let e=t.params.uri,r="";if(e==="resource://zerowork/general")r=Ee.general;else if(e==="resource://zerowork/webhooks")r=Ee.webhooks;else if(e==="resource://zerowork/variables")r=Ee.variables;else if(e==="resource://zerowork/tables")r=Ee.tables;else if(e==="resource://zerowork/selectors")r=Ee.selectors;else if(e==="resource://zerowork/loops")r=Ee.loops;else if(e==="resource://zerowork/chatgpt")r=Ee.chatgpt;else if(e==="resource://zerowork/anti_bot")r=Ee.anti_bot;else if(e==="resource://zerowork/troubleshooting")r=Ee.troubleshooting;else if(e==="resource://zerowork/building_blocks")r=Ee.building_blocks;else if(e==="resource://zerowork/dynamic_inputs")r=Ee.dynamic_inputs;else throw new Error(`Resource not found: ${e}`);return{contents:[{uri:e,mimeType:"text/plain",text:r}]}});lo.setRequestHandler(Vs,async()=>({tools:[{name:"list_taskbots",description:"Lists all configured TaskBots and their names that are available to trigger.",inputSchema:{type:"object",properties:{}}},{name:"trigger_taskbot",description:"Triggers a specific ZeroWork TaskBot by its configured name. Does not send data.",inputSchema:{type:"object",properties:{botName:{type:"string",description:"The name of the TaskBot to trigger (must be one from list_taskbots)"}},required:["botName"]}},{name:"trigger_taskbot_with_data",description:"Triggers a specific ZeroWork TaskBot and sends dynamic JSON data to its zw_webhook_data variable.",inputSchema:{type:"object",properties:{botName:{type:"string",description:"The name of the TaskBot to trigger"},payload:{type:"object",description:"The JSON object payload to send to the bot"}},required:["botName","payload"]}},{name:"trigger_webhook_url",description:"Triggers an arbitrary ZeroWork webhook URL directly.",inputSchema:{type:"object",properties:{url:{type:"string",description:"The full ZeroWork webhook URL"},payload:{type:"object",description:"Optional JSON object payload to send to the bot"}},required:["url"]}},{name:"generate_robust_selector",description:"Analyzes an HTML snippet and target requirements to generate robust, non-brittle CSS and XPath selectors tailored for ZeroWork TaskBots.",inputSchema:{type:"object",properties:{htmlSnippet:{type:"string",description:"The raw HTML snippet containing the target element and its surrounding container hierarchy."},targetText:{type:"string",description:"Optional exact or partial visible text of the target element (e.g., 'Connect', 'Follow')."},description:{type:"string",description:"Optional description of what the element is or its context (e.g., 'The experience list container on LinkedIn', 'Submit button on a dynamic form')."}},required:["htmlSnippet"]}},{name:"get_mcp_version",description:"Returns the version of this MCP server package currently running.",inputSchema:{type:"object",properties:{}}},{name:"search_zerowork_docs",description:"Search and query the ENTIRE ZeroWork official documentation at docs.zerowork.io. Use this tool for ANY question about ZeroWork including features, building blocks, dynamic inputs, TaskBots, spintax, variables, code in inputs, agents, triggers, actions, conditions, loops, integrations, webhooks, selectors, device storage, or any how-to guides. ALWAYS use this tool before answering any ZeroWork-related questions.",inputSchema:{type:"object",properties:{question:{type:"string",description:"The natural language question to search the docs for"}},required:["question"]}}]}));lo.setRequestHandler(Or,async t=>{let{name:e,arguments:r}=t.params,o=Az();try{if(e==="list_taskbots"){let n=Object.keys(o);return n.length===0?{content:[{type:"text",text:'No TaskBots are configured. Please set the ZEROWORK_BOTS environment variable in your Claude config (e.g., {"myBot": "https://hook.zerowork.io/..."}).'}]}:{content:[{type:"text",text:`Configured TaskBots:
312
+ `};var Az=()=>{let t=process.env.ZEROWORK_BOTS;if(!t)return{};try{return JSON.parse(t)}catch{return console.error("Failed to parse ZEROWORK_BOTS environment variable. Must be valid JSON."),{}}},lo=new On({name:"nagoc-zerowork",version:"1.1.4"},{capabilities:{tools:{},resources:{}}});lo.setRequestHandler(Cs,async()=>({resources:[{uri:"resource://zerowork/general",name:"ZeroWork General Knowledge",mimeType:"text/plain",description:"General concepts about ZeroWork RPA, TaskBots, and Architecture"},{uri:"resource://zerowork/webhooks",name:"ZeroWork Webhooks Guide",mimeType:"text/plain",description:"How to trigger ZeroWork bots and pass dynamic data via webhooks"},{uri:"resource://zerowork/variables",name:"ZeroWork Variables Guide",mimeType:"text/plain",description:"How variables work in ZeroWork"},{uri:"resource://zerowork/tables",name:"ZeroWork Tables Guide",mimeType:"text/plain",description:"How data tables work in ZeroWork"},{uri:"resource://zerowork/selectors",name:"ZeroWork Selectors Guide",mimeType:"text/plain",description:"How CSS and XPath selectors work in ZeroWork"},{uri:"resource://zerowork/loops",name:"ZeroWork Loops Guide",mimeType:"text/plain",description:"How loops and repeats work in ZeroWork"},{uri:"resource://zerowork/chatgpt",name:"ZeroWork ChatGPT Guide",mimeType:"text/plain",description:"How to integrate ChatGPT via Ask ChatGPT block"},{uri:"resource://zerowork/anti_bot",name:"ZeroWork Anti-Bot Guide",mimeType:"text/plain",description:"Best practices to avoid bot detection and handle dynamic states"},{uri:"resource://zerowork/troubleshooting",name:"ZeroWork Troubleshooting Guide",mimeType:"text/plain",description:"Common problems and troubleshooting steps"},{uri:"resource://zerowork/building_blocks",name:"ZeroWork Building Blocks Guide",mimeType:"text/plain",description:"Comprehensive catalog of all ZeroWork building blocks and their options"},{uri:"resource://zerowork/dynamic_inputs",name:"ZeroWork Dynamic Inputs Guide",mimeType:"text/plain",description:"How to use dynamic inputs: variable/table references, code expressions, code blocks, and spintax in ZeroWork building blocks"}]}));lo.setRequestHandler(qs,async t=>{let e=t.params.uri,r="";if(e==="resource://zerowork/general")r=Ee.general;else if(e==="resource://zerowork/webhooks")r=Ee.webhooks;else if(e==="resource://zerowork/variables")r=Ee.variables;else if(e==="resource://zerowork/tables")r=Ee.tables;else if(e==="resource://zerowork/selectors")r=Ee.selectors;else if(e==="resource://zerowork/loops")r=Ee.loops;else if(e==="resource://zerowork/chatgpt")r=Ee.chatgpt;else if(e==="resource://zerowork/anti_bot")r=Ee.anti_bot;else if(e==="resource://zerowork/troubleshooting")r=Ee.troubleshooting;else if(e==="resource://zerowork/building_blocks")r=Ee.building_blocks;else if(e==="resource://zerowork/dynamic_inputs")r=Ee.dynamic_inputs;else throw new Error(`Resource not found: ${e}`);return{contents:[{uri:e,mimeType:"text/plain",text:r}]}});lo.setRequestHandler(Vs,async()=>({tools:[{name:"list_taskbots",description:"Lists all configured TaskBots and their names that are available to trigger.",inputSchema:{type:"object",properties:{}}},{name:"trigger_taskbot",description:"Triggers a specific ZeroWork TaskBot by its configured name. Does not send data.",inputSchema:{type:"object",properties:{botName:{type:"string",description:"The name of the TaskBot to trigger (must be one from list_taskbots)"}},required:["botName"]}},{name:"trigger_taskbot_with_data",description:"Triggers a specific ZeroWork TaskBot and sends dynamic JSON data to its zw_webhook_data variable.",inputSchema:{type:"object",properties:{botName:{type:"string",description:"The name of the TaskBot to trigger"},payload:{type:"object",description:"The JSON object payload to send to the bot"}},required:["botName","payload"]}},{name:"trigger_webhook_url",description:"Triggers an arbitrary ZeroWork webhook URL directly.",inputSchema:{type:"object",properties:{url:{type:"string",description:"The full ZeroWork webhook URL"},payload:{type:"object",description:"Optional JSON object payload to send to the bot"}},required:["url"]}},{name:"generate_robust_selector",description:"Analyzes an HTML snippet and target requirements to generate robust, non-brittle CSS and XPath selectors tailored for ZeroWork TaskBots.",inputSchema:{type:"object",properties:{htmlSnippet:{type:"string",description:"The raw HTML snippet containing the target element and its surrounding container hierarchy."},targetText:{type:"string",description:"Optional exact or partial visible text of the target element (e.g., 'Connect', 'Follow')."},description:{type:"string",description:"Optional description of what the element is or its context (e.g., 'The experience list container on LinkedIn', 'Submit button on a dynamic form')."}},required:["htmlSnippet"]}},{name:"get_mcp_version",description:"Returns the version of this MCP server package currently running.",inputSchema:{type:"object",properties:{}}},{name:"search_zerowork_docs",description:"Search and query the ENTIRE ZeroWork official documentation at docs.zerowork.io. Use this tool for ANY question about ZeroWork including features, building blocks, dynamic inputs, TaskBots, spintax, variables, code in inputs, agents, triggers, actions, conditions, loops, integrations, webhooks, selectors, device storage, or any how-to guides. ALWAYS use this tool before answering any ZeroWork-related questions.",inputSchema:{type:"object",properties:{question:{type:"string",description:"The natural language question to search the docs for"}},required:["question"]}}]}));lo.setRequestHandler(Or,async t=>{let{name:e,arguments:r}=t.params,o=Az();try{if(e==="list_taskbots"){let n=Object.keys(o);return n.length===0?{content:[{type:"text",text:'No TaskBots are configured. Please set the ZEROWORK_BOTS environment variable in your Claude config (e.g., {"myBot": "https://hook.zerowork.io/..."}).'}]}:{content:[{type:"text",text:`Configured TaskBots:
313
313
  ${n.map(s=>`- ${s}`).join(`
314
314
  `)}`}]}}if(e==="trigger_taskbot"||e==="trigger_taskbot_with_data"){let n=String(r?.botName),s=o[n];if(!s)throw new Error(`Bot '${n}' not found in configuration. Use list_taskbots to see available bots.`);let i=e==="trigger_taskbot_with_data",a=i?r?.payload:null,c={method:i?"POST":"GET",headers:i?{"Content-Type":"application/json"}:void 0,body:i?JSON.stringify(a):void 0},u=await fetch(s,c),l=await u.text();return{content:[{type:"text",text:`Successfully triggered ${n}.
315
315
  Status: ${u.status}
@@ -348,7 +348,7 @@ ${n.slice(0,500)}${n.length>500?`
348
348
  ... (truncated)`:""}
349
349
  \`\`\`
350
350
 
351
- `,a+="*Guidance*: Use the strategies above to construct your selector in ZeroWork. Test the selector in your browser console using `document.querySelectorAll('your-selector')` to verify uniqueness before adding it to your TaskBot.",{content:[{type:"text",text:a}]}}if(e==="get_mcp_version")return{content:[{type:"text",text:"nagoc-zerowork version 1.1.3"}]};if(e==="search_zerowork_docs"){let n=String(r?.question||"");if(!n)throw new Error("The 'question' parameter is required.");let s=[];try{let l=(await(await fetch("https://docs.zerowork.io/sitemap.xml",{signal:AbortSignal.timeout(5e3)})).text()).match(/<loc>(.*?)<\/loc>/g);l&&(s=l.map(d=>d.replace(/<\/?loc>/g,"")))}catch{s=["https://docs.zerowork.io","https://docs.zerowork.io/crash-course","https://docs.zerowork.io/faqs","https://docs.zerowork.io/getting-started","https://docs.zerowork.io/install-the-agent","https://docs.zerowork.io/support/common-problems","https://docs.zerowork.io/support/getting-support","https://docs.zerowork.io/support/troubleshooting","https://docs.zerowork.io/support/using-run-reports","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/cookies","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/how-to-check-and-update-your-agent","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/install-zerowork-agent-on-vps","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/log-in-to-the-agent","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/proxies","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/remote-cloud-execution","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/run","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/run-settings","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/scheduler","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/stop","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/taskbot-sharing-options","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/trigger-run-via-webhook","https://docs.zerowork.io/using-zerowork/using-building-blocks/apis-send-http-request","https://docs.zerowork.io/using-zerowork/using-building-blocks/check-web-element","https://docs.zerowork.io/using-zerowork/using-building-blocks/click-element","https://docs.zerowork.io/using-zerowork/using-building-blocks/delay","https://docs.zerowork.io/using-zerowork/using-building-blocks/input-text","https://docs.zerowork.io/using-zerowork/using-building-blocks/loops","https://docs.zerowork.io/using-zerowork/using-building-blocks/open-link","https://docs.zerowork.io/using-zerowork/using-building-blocks/save-file","https://docs.zerowork.io/using-zerowork/using-building-blocks/save-text","https://docs.zerowork.io/using-zerowork/using-building-blocks/upload-file","https://docs.zerowork.io/using-zerowork/using-building-blocks/write-javascript","https://docs.zerowork.io/using-zerowork/using-selectors/css-selectors","https://docs.zerowork.io/using-zerowork/using-tables/data-tables","https://docs.zerowork.io/using-zerowork/using-variables/variables-management"]}let i="";try{let c=`https://docs.zerowork.io?ask=${encodeURIComponent(n)}`,u=await fetch(c,{signal:AbortSignal.timeout(5e3)}),l=await u.text();u.ok&&l&&!l.trim().toLowerCase().startsWith("<html")&&!l.includes("<head>")&&(i=l.trim())}catch{}let a="";if(i&&i.length>20)a=`### ZeroWork Documentation Search Result (via Ask Endpoint)
351
+ `,a+="*Guidance*: Use the strategies above to construct your selector in ZeroWork. Test the selector in your browser console using `document.querySelectorAll('your-selector')` to verify uniqueness before adding it to your TaskBot.",{content:[{type:"text",text:a}]}}if(e==="get_mcp_version")return{content:[{type:"text",text:"nagoc-zerowork version 1.1.4"}]};if(e==="search_zerowork_docs"){let n=String(r?.question||"");if(!n)throw new Error("The 'question' parameter is required.");let s=[];try{let l=(await(await fetch("https://docs.zerowork.io/sitemap.xml",{signal:AbortSignal.timeout(5e3)})).text()).match(/<loc>(.*?)<\/loc>/g);l&&(s=l.map(d=>d.replace(/<\/?loc>/g,"")))}catch{s=["https://docs.zerowork.io","https://docs.zerowork.io/crash-course","https://docs.zerowork.io/faqs","https://docs.zerowork.io/getting-started","https://docs.zerowork.io/install-the-agent","https://docs.zerowork.io/support/common-problems","https://docs.zerowork.io/support/getting-support","https://docs.zerowork.io/support/troubleshooting","https://docs.zerowork.io/support/using-run-reports","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/cookies","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/how-to-check-and-update-your-agent","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/install-zerowork-agent-on-vps","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/log-in-to-the-agent","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/proxies","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/remote-cloud-execution","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/run","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/run-settings","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/scheduler","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/stop","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/taskbot-sharing-options","https://docs.zerowork.io/using-zerowork/general-run-schedule-share-webhooks/trigger-run-via-webhook","https://docs.zerowork.io/using-zerowork/using-building-blocks/apis-send-http-request","https://docs.zerowork.io/using-zerowork/using-building-blocks/check-web-element","https://docs.zerowork.io/using-zerowork/using-building-blocks/click-element","https://docs.zerowork.io/using-zerowork/using-building-blocks/delay","https://docs.zerowork.io/using-zerowork/using-building-blocks/input-text","https://docs.zerowork.io/using-zerowork/using-building-blocks/loops","https://docs.zerowork.io/using-zerowork/using-building-blocks/open-link","https://docs.zerowork.io/using-zerowork/using-building-blocks/save-file","https://docs.zerowork.io/using-zerowork/using-building-blocks/save-text","https://docs.zerowork.io/using-zerowork/using-building-blocks/upload-file","https://docs.zerowork.io/using-zerowork/using-building-blocks/write-javascript","https://docs.zerowork.io/using-zerowork/using-selectors/css-selectors","https://docs.zerowork.io/using-zerowork/using-tables/data-tables","https://docs.zerowork.io/using-zerowork/using-variables/variables-management"]}let i="";try{let c=`https://docs.zerowork.io?ask=${encodeURIComponent(n)}`,u=await fetch(c,{signal:AbortSignal.timeout(5e3)}),l=await u.text();u.ok&&l&&!l.trim().toLowerCase().startsWith("<html")&&!l.includes("<head>")&&(i=l.trim())}catch{}let a="";if(i&&i.length>20)a=`### ZeroWork Documentation Search Result (via Ask Endpoint)
352
352
 
353
353
  ${i}`;else{let c=n.toLowerCase(),u=[];(c.includes("webhook")||c.includes("trigger")||c.includes("payload")||c.includes("zw_webhook_data"))&&u.push("webhooks"),(c.includes("variable")||c.includes("counter")||c.includes("scope"))&&u.push("variables"),(c.includes("table")||c.includes("sheet")||c.includes("column")||c.includes("batch"))&&u.push("tables"),(c.includes("selector")||c.includes("css")||c.includes("xpath")||c.includes("match")||c.includes("attribute")||c.includes("sibling"))&&u.push("selectors"),(c.includes("block")||c.includes("click")||c.includes("save")||c.includes("open")||c.includes("close")||c.includes("delay")||c.includes("loop")||c.includes("repeat")||c.includes("javascript")||c.includes("http")||c.includes("chatgpt"))&&u.push("building_blocks"),(c.includes("dynamic")||c.includes("input")||c.includes("code")||c.includes("spintax")||c.includes("expression")||c.includes("devicestorage")||c.includes("getref"))&&u.push("dynamic_inputs"),(c.includes("anti")||c.includes("bot")||c.includes("evasion")||c.includes("delay")||c.includes("limit"))&&u.push("anti_bot"),(c.includes("trouble")||c.includes("error")||c.includes("fail")||c.includes("start")||c.includes("cookie")||c.includes("agent")||c.includes("vps")||c.includes("proxy")||c.includes("cloud"))&&(u.push("troubleshooting"),u.push("general")),u.length===0&&u.push("general","building_blocks","dynamic_inputs");let d=Array.from(new Set(u)).map(p=>Ee[p]).join(`
354
354
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nagoc-zerowork",
3
- "version": "1.1.3",
3
+ "version": "1.1.4",
4
4
  "description": "An MCP Server for ZeroWork.io — trigger TaskBots, send dynamic data via webhooks, and get full ZeroWork documentation",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",