{"_id":"n-agents","_rev":"2-93945a2756829bc13aa854a231ff46bf","name":"n-agents","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"n-agents","version":"1.0.0","keywords":["ai","agent","ollama","llm","automation","tools","nodejs"],"author":{"name":"solidsnail"},"license":"MIT","_id":"n-agents@1.0.0","maintainers":[{"name":"rdaoudi","email":"rachiduoad@gmail.com"}],"homepage":"https://github.com/solidsnail/n-agents#readme","bugs":{"url":"https://github.com/solidsnail/n-agents/issues"},"dist":{"shasum":"0f99134f177aa2bd83a80603fc6d679cb1c29295","tarball":"https://registry.npmjs.org/n-agents/-/n-agents-1.0.0.tgz","fileCount":1291,"integrity":"sha512-CfWhKIrUPgHsz/RqsIbeYFu1A8xCyqDwf7itP/Z1xY1AyN3ZlMRtHNxf9nbZ0UNqajdsyNJX1jQF4I/Z7Ipv2A==","signatures":[{"sig":"MEQCIAnaIn0th2FzpCK7DJwIv+78VPUn6/vva0/ekf0pAHobAiAYNhfEkegXE/bqAFgUarxYzhpSblkknzwdkd8PVCTmLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4912389},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"e16292ed1cc3147dc23c3dbbe56738e9ead93ebc","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","format":"prettier --write .","readme":"npx readme.jsx ./README.jsx","lint:fix":"eslint . --fix","prebuild":"npm run clean","typecheck":"tsc --noEmit","example:file":"tsx examples/file-workflow.ts","example:http":"tsx examples/http.ts","format:check":"prettier --check .","example:image":"tsx examples/image.ts","example:github":"tsx examples/github.ts","prepublishOnly":"npm run typecheck && npm run lint && npm run build && npm run test","example:browser":"tsx examples/browser.ts","example:registry":"tsx examples/registry.ts","example:wikidata":"tsx examples/wikidata.ts","example:multi-agent":"tsx examples/multi-agent.ts","example:custom-agent":"tsx examples/custom-agent.ts"},"_npmUser":{"name":"rdaoudi","email":"rachiduoad@gmail.com"},"repository":{"url":"git+https://github.com/solidsnail/n-agents.git","type":"git"},"_npmVersion":"11.11.0","description":"A lightweight, composable AI agent framework for Node.js — powered by Ollama.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"pg":"^8.14.0","sharp":"^0.35.3","dotenv":"^16.4.5","ollama":"^0.5.1","evernote":"^2.0.5","basic-ftp":"^5.0.5","googleapis":"^140.0.0","googlethis":"^1.8.0","ghost-cursor":"^1.2.0","simple-icons":"^16.27.0","@iconify/json":"^2.2.501","puppeteer-extra":"^3.3.6","ssh2-sftp-client":"^12.1.1","rebrowser-puppeteer":"^23.0.0","@aws-sdk/client-cloudwatch":"^3.1090.0","puppeteer-extra-plugin-stealth":"^2.11.2","puppeteer-extra-plugin-adblocker":"^2.13.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","eslint":"^9.0.0","vitest":"^2.0.0","prettier":"^3.0.0","@types/pg":"^8.11.13","readme.jsx":"^0.6.9","typescript":"^5.0.0","@types/node":"^20.0.0","@types/sharp":"^0.31.1","@types/evernote":"^2.0.5","typescript-eslint":"^8.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","@types/ssh2-sftp-client":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/n-agents_1.0.0_1784728179143_0.6827802927374023","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"n-agents","version":"1.1.0","description":"A lightweight, composable AI agent framework for Node.js — powered by Ollama.","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"sideEffects":false,"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","prebuild":"npm run clean","typecheck":"tsc --noEmit","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write .","format:check":"prettier --check .","prepublishOnly":"npm run typecheck && npm run lint && npm run build","example:browser-weather":"tsx examples/browser-weather/index.ts","example:custom-agent":"tsx examples/custom-agent/index.ts","example:github":"tsx examples/github/index.ts","example:http-hackernews":"tsx examples/http-hackernews/index.ts","example:image":"tsx examples/image/index.ts","example:image-to-html":"tsx examples/image-to-html/index.ts","example:image-to-react":"tsx examples/image-to-react/index.ts","example:multi-agent":"tsx examples/multi-agent/index.ts","example:registry":"tsx examples/registry/index.ts","example:researcher-writer":"tsx examples/researcher-writer/index.ts","example:wikidata":"tsx examples/wikidata/index.ts","readme":"npx readme.jsx ./README.jsx"},"keywords":["ai","agent","ollama","llm","automation","tools","nodejs"],"author":{"name":"solidsnail"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/solidsnail/n-agents.git"},"bugs":{"url":"https://github.com/solidsnail/n-agents/issues"},"homepage":"https://github.com/solidsnail/n-agents#readme","engines":{"node":">=18"},"publishConfig":{"access":"public"},"dependencies":{"@aws-sdk/client-cloudwatch":"^3.1090.0","@iconify/json":"^2.2.501","dotenv":"^16.4.5","evernote":"^2.0.5","ghost-cursor":"^1.2.0","googleapis":"^140.0.0","googlethis":"^1.8.0","ollama":"^0.5.1","pg":"^8.14.0","puppeteer-extra":"^3.3.6","puppeteer-extra-plugin-adblocker":"^2.13.6","puppeteer-extra-plugin-stealth":"^2.11.2","rebrowser-puppeteer":"^23.0.0","sharp":"^0.35.3","simple-icons":"^16.27.0","basic-ftp":"^5.0.5","ssh2-sftp-client":"^12.1.1"},"devDependencies":{"@types/evernote":"^2.0.5","@types/node":"^20.0.0","@types/pg":"^8.11.13","@types/sharp":"^0.31.1","@types/ssh2-sftp-client":"^9.0.0","eslint":"^9.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","prettier":"^3.0.0","readme.jsx":"^0.6.9","tsx":"^4.0.0","typescript":"^5.0.0","typescript-eslint":"^8.0.0","vitest":"^2.0.0"},"_id":"n-agents@1.1.0","gitHead":"beb31deceeb8cfeca9a25f8ef01e7f6478d4c869","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-MO7/2gUL1LIMgOEQvbJTZSQMpgbDb87c8t/lQ+lgKisow5HbXG3Jg8lIDZkLSP3tnqnEcW/krS7ovYe/UARByA==","shasum":"2bcdddebf109917e31bb0274dd53e3921218cb37","tarball":"https://registry.npmjs.org/n-agents/-/n-agents-1.1.0.tgz","fileCount":1292,"unpackedSize":4910886,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCqhATw9X6PrXH07ZbzLeG+5u9kLDUT0qjVhDWBjrF8NAIgNY7duefj1V2wAnbsK+1xFgEXE0anMzXBdlrFsSc/WPQ="}]},"_npmUser":{"name":"rdaoudi","email":"rachiduoad@gmail.com"},"directories":{},"maintainers":[{"name":"rdaoudi","email":"rachiduoad@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n-agents_1.1.0_1785084404457_0.354450638350982"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-22T13:49:38.918Z","modified":"2026-07-26T16:46:44.777Z","1.0.0":"2026-07-22T13:49:39.302Z","1.1.0":"2026-07-26T16:46:44.619Z"},"bugs":{"url":"https://github.com/solidsnail/n-agents/issues"},"author":{"name":"solidsnail"},"license":"MIT","homepage":"https://github.com/solidsnail/n-agents#readme","keywords":["ai","agent","ollama","llm","automation","tools","nodejs"],"repository":{"type":"git","url":"git+https://github.com/solidsnail/n-agents.git"},"description":"A lightweight, composable AI agent framework for Node.js — powered by Ollama.","maintainers":[{"name":"rdaoudi","email":"rachiduoad@gmail.com"}],"readme":"<p align=\"center\"><img src=\"./readme-assets/logo.png\" width=\"300px\" /></p>\n\n<p align=\"center\">A lightweight, composable AI agent framework for Node.js — powered by Ollama.</p>\n<p align=\"center\"><img src=\"https://img.shields.io/badge/version-1.0.0-4c1?style=flat&labelColor=black&color=4c1\" alt=\"version\" /> <img src=\"https://img.shields.io/badge/runtime-Node.js-339933?style=flat&labelColor=black&color=339933\" alt=\"runtime\" /> <img src=\"https://img.shields.io/badge/language-TypeScript-3178c6?style=flat&labelColor=black&color=3178c6\" alt=\"language\" /> <img src=\"https://img.shields.io/badge/LLM-Ollama-7c3aed?style=flat&labelColor=black&color=7c3aed\" alt=\"LLM\" /> <img src=\"https://img.shields.io/badge/license-MIT-007ec6?style=flat&labelColor=black&color=007ec6\" alt=\"license\" /></p>\n<p align=\"center\"><a href=\"https://www.paypal.com/paypalme/undefined\"><img src=\"https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif\" width=\"130\" /></a></p>\n\n## Overview\n\n**n-agents** is a minimal yet powerful framework for building AI-powered agents in Node.js. Each agent is a self-contained specialist that uses LLM reasoning (via Ollama) to autonomously execute multi-step tasks by calling tools — no chat required.\n\n- 🧩 **Composable** — Mix and match pre-built tools to create custom agents\n- 🔧 **Tool-driven** — Agents act by calling typed tool functions, not by chatting\n- 🛡️ **Stealth browser** — Built-in Puppeteer agent with anti-detection and human-like behavior\n- ☁️ **Cloud or local** — Connect to Ollama Cloud or run models locally\n- 📦 **Zero boilerplate** — 146 ready-to-use agents for GitHub, Slack, Jira, Gmail, and more\n- 🔄 **Auto-recovery** — Agents retry on tool failures and self-correct hallucinations\n\n## Examples\n\nReal-world tasks executed autonomously by n-agents.\n\n<table ><tr ><th width=\"100px\">\n\n**Code Snippet**\n\n</th><th >\n\n**Input**\n\n</th><th >\n\n**Output**\n\n</th></tr><tr ><td >\n\n```javascript\nconst result = await agent.execute({\n  instructions: [\n    \"Grayscale then resize to 200x200 the image ./apples.jpg\",\n    \"Save the result to ./examples/image/output/apples-processed.jpg\",\n  ],\n});\n```\n\n</td><td >\n\n<img src=\"./examples/image/apples.jpg\" alt=\"apples.jpg\" width=\"180\" />\n\n</td><td >\n\n<img src=\"./examples/image/output/apples-processed.jpg\" alt=\"apples-processed.jpg\" width=\"180\" />\n\n</td></tr><tr ><td >\n\n```javascript\nconst result = await agent.execute({\n  instructions: [\n    \"Transform the UI image at ./examples/image-to-html/ui-mockup.png into a self-contained HTML page with embedded CSS\",\n    \"Save the generated HTML file to ./examples/image-to-html/output/generated-ui.html\",\n  ],\n});\n```\n\n</td><td >\n\n<img src=\"./examples/image-to-html/ui-mockup.png\" alt=\"ui-mockup.png\" width=\"180\" />\n\n</td><td >\n\n<a href=\"./examples/image-to-html/output/generated-ui.html\"><code >generated-ui.html</code></a>\n\n</td></tr><tr ><td >\n\n```javascript\nconst result = await agent.execute({\n  instructions: [\n    \"Transform the UI image at ./examples/image-to-react/ui-mockup.png into a React TypeScript component\",\n    \"Save the generated TSX code to ./examples/image-to-react/output/generated-ui.tsx\",\n  ],\n});\n```\n\n</td><td >\n\n<img src=\"./examples/image-to-react/ui-mockup.png\" alt=\"ui-mockup.png\" width=\"180\" />\n\n</td><td >\n\n<a href=\"./examples/image-to-react/output/generated-ui.tsx\"><code >generated-ui.tsx</code></a>\n\n</td></tr><tr ><td >\n\n```javascript\nconst result = await agent.execute({\n  instructions: [\n    \"Go to https://duckduckgo.com/?q=weather&ia=web\",\n    \"Take a screenshot of the element '[data-layout=\\\"forecast\\\"]'\",\n    \"Save it to ./examples/browser-weather/output/weather.png\",\n  ],\n});\n```\n\n</td><td >\n\n<a href=\"https://duckduckgo.com/?q=weather&ia=web\"><code >duckduckgo.com/weather</code></a>\n\n</td><td >\n\n<img src=\"./examples/browser-weather/output/weather.png\" alt=\"weather.png\" width=\"220\" />\n\n</td></tr><tr ><td >\n\n```javascript\nconst researchResult = await researcher.execute({\n  instructions: [\n    'Research topic \"the impact of AI agents on software engineering\" using public web sources',\n  ],\n});\n\nconst writeResult = await writer.execute({\n  instructions: [\n    \"Write a polished Markdown article based on the research brief and save to ./examples/researcher-writer/output/the_impact_of_ai_agents_on_software_engineering.md\",\n  ],\n});\n```\n\n</td><td >\n\n<code >\"the impact of AI agents on software engineering\"</code>\n\n</td><td >\n\n<a href=\"./examples/researcher-writer/output/the_impact_of_ai_agents_on_software_engineering.md\"><code >the_impact_of_ai_agents_on_software_engineering.md</code></a>\n\n</td></tr><tr ><td >\n\n```javascript\nconst researchResult = await httpAgent.execute({\n  instructions: [\n    \"Fetch Wikipedia info for 5 landmark space exploration missions\",\n  ],\n});\n\nconst reportResult = await reportWriterAgent.execute({\n  instructions: [\n    \"Generate a clean Markdown report with embedded images and save to ./examples/multi-agent/output/report.md\",\n  ],\n});\n```\n\n</td><td >\n\n5 space missions: <code >Apollo_11</code>, <code >Voyager_1</code>, <code >JWST</code>, <code >Curiosity</code>, <code >Artemis_1</code>\n\n</td><td >\n\n<a href=\"./examples/multi-agent/output/report.md\"><code >report.md</code></a>\n\n</td></tr></table>\n\n## Available Agents\n\nThe library ships with 146 pre-configured agents across 19 categories. Each agent is created via a factory function and can be customized with partial overrides.\n\n<details ><summary >🔧 Source Control (6)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/github.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**GitHub**\n\n</td><td >\n\nRepositories, branches, PRs, issues, and releases via the GitHub API.\n\n</td><td >\n\n<kbd >GITHUB_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/gitlab.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**GitLab**\n\n</td><td >\n\nProjects, branches, merge requests, issues, and releases via the GitLab API.\n\n</td><td >\n\n<kbd >GITLAB_TOKEN</kbd> <kbd >GITLAB_HOST</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/bitbucket.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Bitbucket**\n\n</td><td >\n\nRepositories, branches, PRs, issues, and pipelines via the Bitbucket API.\n\n</td><td >\n\n<kbd >BITBUCKET_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/git.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Git**\n\n</td><td >\n\nBranches, commits, diffs, and file operations in the local repository.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/linear.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Linear**\n\n</td><td >\n\nModern software development issue tracking.\n\n</td><td >\n\n<kbd >LINEAR_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/docker.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Docker**\n\n</td><td >\n\nContainer management and orchestration.\n\n</td><td >\n\n<kbd >DOCKER_HOST</kbd>\n\n</td></tr></table></details><details ><summary >🚨 Monitoring (4)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/pagerduty.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**PagerDuty**\n\n</td><td >\n\nIncident response and on-call management.\n\n</td><td >\n\n<kbd >PAGERDUTY_API_KEY</kbd> <kbd >PAGERDUTY_FROM_EMAIL</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/datadog.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Datadog**\n\n</td><td >\n\nCloud monitoring and analytics.\n\n</td><td >\n\n<kbd >DATADOG_API_KEY</kbd> <kbd >DATADOG_APP_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/sentry.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Sentry**\n\n</td><td >\n\nError tracking and performance monitoring.\n\n</td><td >\n\n<kbd >SENTRY_AUTH_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/aws-cloudwatch.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**AWS CloudWatch**\n\n</td><td >\n\nCloud resources monitoring.\n\n</td><td >\n\n<kbd >AWS_ACCESS_KEY_ID</kbd> <kbd >AWS_SECRET_ACCESS_KEY</kbd> <kbd >AWS_REGION</kbd>\n\n</td></tr></table></details><details ><summary >💬 Communication (8)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/slack.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Slack**\n\n</td><td >\n\nChannels, messages, files, reactions, stars, users, and user groups.\n\n</td><td >\n\n<kbd >SLACK_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/discord.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Discord**\n\n</td><td >\n\nBot integration for reading, managing, and sending messages.\n\n</td><td >\n\n<kbd >DISCORD_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/microsoft-teams.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Microsoft Teams**\n\n</td><td >\n\nTeams, channels, and messages via Microsoft Graph API.\n\n</td><td >\n\n<kbd >MICROSOFT_TEAMS_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/telegram.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Telegram**\n\n</td><td >\n\nGet updates and send messages via the Telegram Bot API.\n\n</td><td >\n\n<kbd >TELEGRAM_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/whatsapp.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**WhatsApp**\n\n</td><td >\n\nSend messages and fetch templates via the WhatsApp Business API.\n\n</td><td >\n\n<kbd >WHATSAPP_TOKEN</kbd> <kbd >WHATSAPP_PHONE_NUMBER_ID</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/twilio.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Twilio**\n\n</td><td >\n\nSend SMS messages and make voice calls.\n\n</td><td >\n\n<kbd >TWILIO_ACCOUNT_SID</kbd> <kbd >TWILIO_AUTH_TOKEN</kbd> <kbd >TWILIO_PHONE_NUMBER</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/webex.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Webex**\n\n</td><td >\n\nSend messages and create meetings via the Webex API.\n\n</td><td >\n\n<kbd >WEBEX_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/mattermost.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Mattermost**\n\n</td><td >\n\nSend messages and get channel details.\n\n</td><td >\n\n<kbd >MATTERMOST_URL</kbd> <kbd >MATTERMOST_TOKEN</kbd>\n\n</td></tr></table></details><details ><summary >📹 Video (2)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/zoom.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Zoom**\n\n</td><td >\n\nCreate and manage meetings via the Zoom API.\n\n</td><td >\n\n<kbd >ZOOM_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/google-meet.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Google Meet**\n\n</td><td >\n\nCreate and list meetings via the Google Calendar API.\n\n</td><td >\n\n<kbd >GOOGLE_MEET_TOKEN</kbd>\n\n</td></tr></table></details><details ><summary >📧 Email (10)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/gmail.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Gmail**\n\n</td><td >\n\nDrafts, labels, messages, and threads via the Gmail API.\n\n</td><td >\n\n<kbd >GMAIL_ACCESS_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/outlook.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Outlook**\n\n</td><td >\n\nOffice 365 email management.\n\n</td><td >\n\n<kbd >OUTLOOK_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/mailchimp.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Mailchimp**\n\n</td><td >\n\nManage audiences and campaigns.\n\n</td><td >\n\n<kbd >MAILCHIMP_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/sendgrid.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**SendGrid**\n\n</td><td >\n\nTransactional email delivery.\n\n</td><td >\n\n<kbd >SENDGRID_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/activecampaign.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**ActiveCampaign**\n\n</td><td >\n\nEmail automation and CRM.\n\n</td><td >\n\n<kbd >ACTIVECAMPAIGN_BASE_URL</kbd> <kbd >ACTIVECAMPAIGN_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/klaviyo.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Klaviyo**\n\n</td><td >\n\nEcommerce marketing automation.\n\n</td><td >\n\n<kbd >KLAVIYO_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/brevo-sendinblue.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Brevo (Sendinblue)**\n\n</td><td >\n\nEmail and SMS marketing.\n\n</td><td >\n\n<kbd >BREVO_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/mailgun.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Mailgun**\n\n</td><td >\n\nEmail API integration.\n\n</td><td >\n\n<kbd >MAILGUN_API_KEY</kbd> <kbd >MAILGUN_DOMAIN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/convertkit.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**ConvertKit**\n\n</td><td >\n\nCreator marketing platform.\n\n</td><td >\n\n<kbd >CONVERTKIT_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/postmark.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Postmark**\n\n</td><td >\n\nFast transactional email delivery.\n\n</td><td >\n\n<kbd >POSTMARK_API_KEY</kbd>\n\n</td></tr></table></details><details ><summary >📱 Social (10)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/instagram.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Instagram**\n\n</td><td >\n\nUser profiles, media, and comments via the Instagram Graph API.\n\n</td><td >\n\n<kbd >INSTAGRAM_ACCESS_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/tiktok.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**TikTok**\n\n</td><td >\n\nUser profiles, videos, and analytics via the TikTok Open API.\n\n</td><td >\n\n<kbd >TIKTOK_ACCESS_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/reddit.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Reddit**\n\n</td><td >\n\nPosts, comments, subreddits, and user information.\n\n</td><td >\n\n<kbd >REDDIT_CLIENT_ID</kbd> <kbd >REDDIT_CLIENT_SECRET</kbd> <kbd >REDDIT_USERNAME</kbd> <kbd >REDDIT_PASSWORD</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/youtube.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**YouTube**\n\n</td><td >\n\nChannels, playlists, videos, and categories via the YouTube Data API v3.\n\n</td><td >\n\n<kbd >YOUTUBE_ACCESS_TOKEN</kbd> or <kbd >YOUTUBE_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/facebook-pages.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Facebook Pages**\n\n</td><td >\n\nPosts, photos, comments, and Page insights via the Graph API.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/linkedin.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**LinkedIn**\n\n</td><td >\n\nOrganic posts, timelines, reshares, and image uploads.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/pinterest.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Pinterest**\n\n</td><td >\n\nBoards, pins, and pin analytics via the Pinterest API v5.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/snapchat.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Snapchat**\n\n</td><td >\n\nAd accounts, campaigns, ads, and audience insights.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/tumblr.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Tumblr**\n\n</td><td >\n\nCreate, edit, and manage posts and blogs via the Tumblr API v2.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/twitter-x.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Twitter / X**\n\n</td><td >\n\nPosts, search, timelines, profiles, and media uploads via the X API v2.\n\n</td><td >\n\n—\n\n</td></tr></table></details><details ><summary >📋 Project Mgmt (8)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/jira.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Jira**\n\n</td><td >\n\nIssues, comments, attachments, users, and workflows. Supports JQL search.\n\n</td><td >\n\n<kbd >JIRA_BASE_URL</kbd> <kbd >JIRA_API_TOKEN</kbd> <kbd >JIRA_EMAIL</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/notion.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Notion**\n\n</td><td >\n\nRead databases, create pages, and update blocks.\n\n</td><td >\n\n<kbd >NOTION_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/trello.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Trello**\n\n</td><td >\n\nManage boards, lists, and cards.\n\n</td><td >\n\n<kbd >TRELLO_API_KEY</kbd> <kbd >TRELLO_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/asana.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Asana**\n\n</td><td >\n\nManage tasks and projects.\n\n</td><td >\n\n<kbd >ASANA_ACCESS_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/monday-com.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Monday.com**\n\n</td><td >\n\nUpdate items and manage boards.\n\n</td><td >\n\n<kbd >MONDAY_API_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/clickup.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**ClickUp**\n\n</td><td >\n\nManage tasks and workspaces.\n\n</td><td >\n\n<kbd >CLICKUP_API_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/todoist.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Todoist**\n\n</td><td >\n\nManage personal and team to-dos.\n\n</td><td >\n\n<kbd >TODOIST_API_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/smartsheet.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Smartsheet**\n\n</td><td >\n\nManage rows, columns, and sheets.\n\n</td><td >\n\n<kbd >SMARTSHEET_ACCESS_TOKEN</kbd>\n\n</td></tr></table></details><details ><summary >📊 Data (1)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/wikidata.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Wikidata**\n\n</td><td >\n\nSPARQL queries against the Wikidata knowledge base.\n\n</td><td >\n\n—\n\n</td></tr></table></details><details ><summary >📚 Knowledge (4)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/airtable.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Airtable**\n\n</td><td >\n\nCRUD operations on bases and records.\n\n</td><td >\n\n<kbd >AIRTABLE_ACCESS_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/evernote.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Evernote**\n\n</td><td >\n\nCreate and organize notes.\n\n</td><td >\n\n<kbd >EVERNOTE_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/obsidian.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Obsidian**\n\n</td><td >\n\nLocal vault management and markdown generation.\n\n</td><td >\n\n<kbd >OBSIDIAN_VAULT_PATH</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/google-sheets.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Google Sheets**\n\n</td><td >\n\nRead, update, append, and clear spreadsheet data.\n\n</td><td >\n\n<kbd >GOOGLE_SHEETS_ACCESS_TOKEN</kbd>\n\n</td></tr></table></details><details ><summary >💼 CRM (7)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/salesforce.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Salesforce**\n\n</td><td >\n\nManage leads, contacts, and opportunities.\n\n</td><td >\n\n<kbd >SALESFORCE_INSTANCE_URL</kbd> <kbd >SALESFORCE_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/hubspot.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**HubSpot**\n\n</td><td >\n\nInbound marketing and sales workflows.\n\n</td><td >\n\n<kbd >HUBSPOT_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/pipedrive.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Pipedrive**\n\n</td><td >\n\nSales pipeline management.\n\n</td><td >\n\n<kbd >PIPEDRIVE_API_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/zoho-crm.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Zoho CRM**\n\n</td><td >\n\nLead and inventory management.\n\n</td><td >\n\n<kbd >ZOHO_CRM_ACCESS_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/copper.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Copper**\n\n</td><td >\n\nCRM built for Google Workspace.\n\n</td><td >\n\n<kbd >COPPER_API_KEY</kbd> <kbd >COPPER_USER_EMAIL</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/close.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Close**\n\n</td><td >\n\nInside sales CRM.\n\n</td><td >\n\n<kbd >CLOSE_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/salesforce-pardot.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Salesforce Pardot**\n\n</td><td >\n\nB2B marketing automation.\n\n</td><td >\n\n<kbd >PARDOT_API_KEY</kbd> <kbd >PARDOT_BUSINESS_UNIT_ID</kbd>\n\n</td></tr></table></details><details ><summary >🎧 Support (3)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/zendesk.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Zendesk**\n\n</td><td >\n\nCustomer support ticket management.\n\n</td><td >\n\n<kbd >ZENDESK_API_TOKEN</kbd> <kbd >ZENDESK_EMAIL</kbd> <kbd >ZENDESK_SUBDOMAIN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/freshdesk.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Freshdesk**\n\n</td><td >\n\nHelpdesk automation.\n\n</td><td >\n\n<kbd >FRESHDESK_API_KEY</kbd> <kbd >FRESHDESK_DOMAIN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/intercom.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Intercom**\n\n</td><td >\n\nIn-app messaging and customer data.\n\n</td><td >\n\n<kbd >INTERCOM_ACCESS_TOKEN</kbd>\n\n</td></tr></table></details><details ><summary >🛒 E-Commerce (11)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/shopify.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Shopify**\n\n</td><td >\n\nProducts, orders, customers, and inventory via the Shopify Admin API.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/shopify-payments.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Shopify Payments**\n\n</td><td >\n\nOrders, transactions, payouts, balance, disputes, and refunds.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/woocommerce.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**WooCommerce**\n\n</td><td >\n\nProducts, orders, and customers.\n\n</td><td >\n\n<kbd >WOOCOMMERCE_STORE_URL</kbd> <kbd >WOOCOMMERCE_CONSUMER_KEY</kbd> <kbd >WOOCOMMERCE_CONSUMER_SECRET</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/bigcommerce.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**BigCommerce**\n\n</td><td >\n\nProducts, orders, and customers.\n\n</td><td >\n\n<kbd >BIGCOMMERCE_STORE_HASH</kbd> <kbd >BIGCOMMERCE_ACCESS_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/magento.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Magento**\n\n</td><td >\n\nProducts, orders, and customers.\n\n</td><td >\n\n<kbd >MAGENTO_BASE_URL</kbd> <kbd >MAGENTO_ACCESS_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/prestashop.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**PrestaShop**\n\n</td><td >\n\nProducts, orders, and customers.\n\n</td><td >\n\n<kbd >PRESTASHOP_STORE_URL</kbd> <kbd >PRESTASHOP_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/wix-stores.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Wix Stores**\n\n</td><td >\n\nProducts, orders, and inventory.\n\n</td><td >\n\n<kbd >WIX_API_KEY</kbd> <kbd >WIX_SITE_ID</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/amazon-seller-central.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Amazon Seller Central**\n\n</td><td >\n\nSeller orders, catalog items, and FBA inventory.\n\n</td><td >\n\n<kbd >AMAZON_SPAPI_ACCESS_TOKEN</kbd> <kbd >AMAZON_SELLING_REGION</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/ebay.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**eBay**\n\n</td><td >\n\nSearch, seller inventory, and order management.\n\n</td><td >\n\n<kbd >EBAY_ACCESS_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/etsy.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Etsy**\n\n</td><td >\n\nShops, listings, and receipts.\n\n</td><td >\n\n<kbd >ETSY_API_KEY</kbd> <kbd >ETSY_ACCESS_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/gumroad.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Gumroad**\n\n</td><td >\n\nProducts, sales, and subscribers.\n\n</td><td >\n\n<kbd >GUMROAD_ACCESS_TOKEN</kbd>\n\n</td></tr></table></details><details ><summary >💳 Payments (9)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/stripe.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Stripe**\n\n</td><td >\n\nCharges, refunds, invoices, subscriptions, and customers.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/paypal.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**PayPal**\n\n</td><td >\n\nOrders, captures, refunds, payouts, and balances.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/square.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Square**\n\n</td><td >\n\nPayments, refunds, orders, subscriptions, and customers.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/braintree.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Braintree**\n\n</td><td >\n\nTransactions, refunds, vault customers, and subscriptions.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/razorpay.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Razorpay**\n\n</td><td >\n\nOrders, payments, refunds, invoices, and subscriptions.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/wise.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Wise**\n\n</td><td >\n\nQuotes, recipients, transfers, and multi-currency balances.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/quickbooks.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**QuickBooks**\n\n</td><td >\n\nInvoices, customers, payments, sales receipts, and accounts.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/freshbooks.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**FreshBooks**\n\n</td><td >\n\nInvoices, clients, expenses, payments, and time entries.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/xero.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Xero**\n\n</td><td >\n\nInvoices, contacts, payments, accounts, and reports.\n\n</td><td >\n\n—\n\n</td></tr></table></details><details ><summary >☁️ Storage (10)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/aws-s3.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**AWS S3**\n\n</td><td >\n\nBuckets, objects, ACLs, tags, and versions via S3 REST API.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/google-cloud-storage.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Google Cloud Storage**\n\n</td><td >\n\nBuckets, objects, metadata, and ACLs.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/google-drive.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Google Drive**\n\n</td><td >\n\nFiles, folders, permissions, and metadata.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/dropbox.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Dropbox**\n\n</td><td >\n\nFiles, folders, shared links, and metadata.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/onedrive.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**OneDrive**\n\n</td><td >\n\nFiles, folders, sharing links, and drive metadata.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/box.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Box**\n\n</td><td >\n\nFiles, folders, shared links, and metadata.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/sharepoint.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**SharePoint**\n\n</td><td >\n\nSites, document libraries, files, and sharing links.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/nextcloud.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Nextcloud**\n\n</td><td >\n\nFiles and shares via WebDAV and OCS Share API.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/mediafire.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**MediaFire**\n\n</td><td >\n\nFiles and folders via the MediaFire Core API 1.5.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/ftp-sftp.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**FTP/SFTP**\n\n</td><td >\n\nFile transfers, directory management, and remote metadata.\n\n</td><td >\n\n—\n\n</td></tr></table></details><details ><summary >📊 Analytics (10)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/google-analytics.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Google Analytics**\n\n</td><td >\n\nReports, realtime metrics, properties, and metadata via GA4.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/amplitude.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Amplitude**\n\n</td><td >\n\nSegmentation, analytics queries, and event tracking.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/mixpanel.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Mixpanel**\n\n</td><td >\n\nQuery, export, and send events.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/segment.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Segment**\n\n</td><td >\n\nSources, destinations, tracking plans, and events.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/bigquery.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**BigQuery**\n\n</td><td >\n\nQuery datasets and tables in Google BigQuery.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/power-bi.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Power BI**\n\n</td><td >\n\nWorkspaces, reports, datasets, and dashboards.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/tableau.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Tableau**\n\n</td><td >\n\nSites, workbooks, views, and data sources.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/snowflake.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Snowflake**\n\n</td><td >\n\nRun queries and inspect databases.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/databricks.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Databricks**\n\n</td><td >\n\nRun SQL, manage jobs, and clusters.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/postgresql.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**PostgreSQL**\n\n</td><td >\n\nQuery and manage a PostgreSQL database directly.\n\n</td><td >\n\n—\n\n</td></tr></table></details><details ><summary >👥 HR (10)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/bamboohr.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**BambooHR**\n\n</td><td >\n\nEmployee directory, time-off, and applicant tracking.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/greenhouse.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Greenhouse**\n\n</td><td >\n\nCandidates, applications, jobs, and pipeline management.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/lever.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Lever**\n\n</td><td >\n\nOpportunities, postings, applications, and pipeline stages.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/workable.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Workable**\n\n</td><td >\n\nJobs, candidates, pipeline stages, and employees.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/workday.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Workday**\n\n</td><td >\n\nWorkers, organizations, positions, and time tracking.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/adp.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**ADP**\n\n</td><td >\n\nWorkers, pay statements, profiles, and payroll instructions.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/gusto.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Gusto**\n\n</td><td >\n\nEmployees, jobs, payrolls, and pay stubs.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/rippling.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Rippling**\n\n</td><td >\n\nEmployees, departments, teams, and leave requests.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/deel.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Deel**\n\n</td><td >\n\nContracts, payslips, payroll cycles, and employees.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/sap-successfactors.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**SAP SuccessFactors**\n\n</td><td >\n\nPersons, jobs, employment, and departments.\n\n</td><td >\n\n—\n\n</td></tr></table></details><details ><summary >🤖 AI/ML (10)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/openai-chatgpt.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**OpenAI ChatGPT**\n\n</td><td >\n\nChat, embeddings, and image generation with OpenAI.\n\n</td><td >\n\n<kbd >OPENAI_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/anthropic-claude.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Anthropic Claude**\n\n</td><td >\n\nChat with Anthropic Claude models.\n\n</td><td >\n\n<kbd >ANTHROPIC_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/google-gemini.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Google Gemini**\n\n</td><td >\n\nGenerate content with Google Gemini models.\n\n</td><td >\n\n<kbd >GOOGLE_GEMINI_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/cohere.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Cohere**\n\n</td><td >\n\nChat and embeddings with Cohere.\n\n</td><td >\n\n<kbd >COHERE_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/hugging-face.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Hugging Face**\n\n</td><td >\n\nRun inference and search models.\n\n</td><td >\n\n<kbd >HUGGINGFACE_API_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/replicate.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Replicate**\n\n</td><td >\n\nRun open-source AI models on Replicate.\n\n</td><td >\n\n<kbd >REPLICATE_API_TOKEN</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/midjourney.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Midjourney**\n\n</td><td >\n\nGenerate images with Midjourney.\n\n</td><td >\n\n<kbd >MIDJOURNEY_BASE_URL</kbd> <kbd >MIDJOURNEY_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/elevenlabs.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**ElevenLabs**\n\n</td><td >\n\nText-to-speech with ElevenLabs voices.\n\n</td><td >\n\n<kbd >ELEVENLABS_API_KEY</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/langchain.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**LangChain**\n\n</td><td >\n\nInvoke deployed LangChain chains.\n\n</td><td >\n\n<kbd >LANGCHAIN_API_BASE_URL</kbd>\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/pinecone.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Pinecone**\n\n</td><td >\n\nQuery and upsert vectors in Pinecone indexes.\n\n</td><td >\n\n<kbd >PINECONE_API_KEY</kbd>\n\n</td></tr></table></details><details ><summary >🛠️ Utilities (3)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/browser.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Browser**\n\n</td><td >\n\nStealth Chromium browser for web automation, scraping, and screenshots.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/http.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**HTTP**\n\n</td><td >\n\nHTTP requests to external APIs and web services.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/image.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Image**\n\n</td><td >\n\nImage processing and manipulation with sharp.\n\n</td><td >\n\n—\n\n</td></tr></table></details><details ><summary >💻 Coding (20)</summary><table ><tr ><th >\n\n---\n\n</th><th >\n\n**Agent**\n\n</th><th >\n\n**Description**\n\n</th><th >\n\n**Env Vars**\n\n</th></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/image-to-html.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Image to HTML**\n\n</td><td >\n\nTransforms a UI image into a single self-contained HTML file with embedded CSS.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/image-to-react.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Image to React**\n\n</td><td >\n\nTransforms a UI image into a React component.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/javascript-to-typescript.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**JavaScript to TypeScript**\n\n</td><td >\n\nConvert JavaScript source files into idiomatic TypeScript.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/typescript-to-javascript.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**TypeScript to JavaScript**\n\n</td><td >\n\nStrip TypeScript annotations and produce plain JavaScript.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/react-to-vue2.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**React to Vue 2**\n\n</td><td >\n\nConvert React components into Vue 2 Options API components.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/vue2-to-react.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Vue 2 to React**\n\n</td><td >\n\nConvert Vue 2 Options API components into React functional components.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/react-to-vue3.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**React to Vue 3**\n\n</td><td >\n\nConvert React components into Vue 3 Composition API components.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/vue3-to-react.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Vue 3 to React**\n\n</td><td >\n\nConvert Vue 3 Composition API components into React functional components.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/react-to-svelte.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**React to Svelte**\n\n</td><td >\n\nConvert React components into Svelte components.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/svelte-to-react.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Svelte to React**\n\n</td><td >\n\nConvert Svelte components into React functional components.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/css-to-scss.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**CSS to SCSS**\n\n</td><td >\n\nConvert plain CSS into structured SCSS with nesting and variables.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/scss-to-css.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**SCSS to CSS**\n\n</td><td >\n\nFlatten SCSS files into plain, browser-ready CSS.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/comments-remover.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Comments Remover**\n\n</td><td >\n\nStrip comments from source code while preserving functionality.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/typescript-unused-code-remover.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**TypeScript Unused Code Remover**\n\n</td><td >\n\nRemove unused imports, variables, functions, and types from TypeScript files.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/json-to-yaml.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**JSON to YAML**\n\n</td><td >\n\nConvert JSON files into clean YAML.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/yaml-to-json.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**YAML to JSON**\n\n</td><td >\n\nConvert YAML files into formatted JSON.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/html-to-pug.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**HTML to Pug**\n\n</td><td >\n\nConvert HTML files into indented Pug templates.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/pug-to-html.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Pug to HTML**\n\n</td><td >\n\nExpand Pug templates into standard HTML markup.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/javascript-to-python.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**JavaScript to Python**\n\n</td><td >\n\nTranslate JavaScript source code into Python.\n\n</td><td >\n\n—\n\n</td></tr><tr ><td width=\"70\">\n\n<img src=\"./readme-assets/agents-icons/python-to-javascript.png\" width=\"64\" height=\"64\" align=\"center\" style=\"vertical-align: middle;\" />\n\n</td><td >\n\n**Python to JavaScript**\n\n</td><td >\n\nTranslate Python source code into JavaScript.\n\n</td><td >\n\n—\n\n</td></tr></table></details>\n\n## Architecture\n\n```mermaid\ngraph TD\n    User[\"User / Application\"] -->|prompt | NodeAgent[\"NodeAgent (Core Engine)\"]\n\n    subgraph Core [\"NodeAgent Core\"]\n        NodeAgent -->|1. Build messages | PromptBuilder[\"Prompt & System Context\"]\n        NodeAgent -->|2. Dispatch request | Provider[\"LLM Engine (Ollama Local / Cloud)\"]\n        Provider -->|3. Return completion | Parser[\"Output & JSON Parser\"]\n        Parser -->|4. Detect hallucination & validate | Guardrails[\"Guardrails & Schema Validator\"]\n    end\n\n    Guardrails -->|5a. Tool call detected | Dispatcher[\"Tool Dispatcher\"]\n    Guardrails -->|5b. Final response | Output[\"Final Output\"]\n\n    subgraph Ecosystem [\"Tools & Agent Factories\"]\n        Dispatcher -->|Execute | AgentFactories[\"Agent Factories (e.g. createGitHubAgent, createSlackAgent)\"]\n        AgentFactories -->|Uses | Tools[\"Toolsets (gitTools, fsTools, shellTools, etc.)\"]\n    end\n\n    Tools -->|Result | NodeAgent\n```\n\n- **NodeAgent** — The core class. Manages the conversation loop, tool dispatch, hallucination detection, and JSON output parsing powered by Ollama. (OpenAI, Anthropic, and Gemini integrations are supported via dedicated toolsets.)\n- **Tool** — A typed function wrapper with name, metadata (description + JSON schema), and an async execution function.\n- **Agent factories** — Functions like `createGitHubAgent()` that wire up the right tools and system prompt for a specific domain.\n\n## Installation\n\n```bash\nnpm install n-agents\n```\n\n### Environment Setup\n\nCreate a `.env` file in your project root and choose one of the following configurations:\n\n#### Local Setup\n\n```bash\n# Required — Local model (gemma4:e2b-mlx for macOS, gemma4:e2b for Windows & Linux)\nOLLAMA_LOCAL_MODEL=gemma4:e2b-mlx\n\n# Optional — Local host override (defaults to http://localhost:11434)\n# OLLAMA_LOCAL_HOST=http://localhost:11434\n```\n\n#### Cloud Setup\n\n```bash\n# Required — Ollama Cloud API key and cloud model\nOLLAMA_API_KEY=your_api_key\nOLLAMA_CLOUD_MODEL=gemma4:cloud\n\n# Optional — Cloud host override (defaults to https://ollama.com)\n# OLLAMA_CLOUD_HOST=https://ollama.com\n```\n\n## Quick Start\n\n### Using a pre-built agent\n\n```typescript\nimport { createWikidataAgent } from \"n-agents\";\n\nconst agent = createWikidataAgent();\n\nconst result = await agent.execute({\n  instructions: [\"List the top 5 largest countries by area.\"],\n  onStep: (step) => console.log(`[Tool] ${step.tool}`),\n});\n\nconsole.dir(result.output, { depth: null });\n```\n\n### Creating a custom agent\n\n```typescript\nimport { NodeAgent, Tool } from \"n-agents\";\n\nconst greetTool = new Tool(\n  \"greet\",\n  async (_ctx, args) => ({ message: `Hello, ${args.name}!` }),\n  {\n    description: \"Greet someone by name\",\n    schema: {\n      type: \"object\",\n      properties: {\n        name: { type: \"string\", description: \"Name to greet\" },\n      },\n      required: [\"name\"],\n    },\n  },\n);\n\nconst agent = new NodeAgent({\n  name: \"greeter\",\n  description: \"A friendly greeting agent.\",\n  tools: [greetTool],\n});\n\nconst result = await agent.execute({\n  instructions: [\"Greet Alice\"],\n});\n\nconsole.log(result.output);\n// { summary: \"Greeted Alice\", data: { message: \"Hello, Alice!\" }, success: true }\n```\n\n## API Reference\n\n### NodeAgent\n\n```typescript\nconst agent = new NodeAgent(config: AgentConfig);\n\ninterface AgentConfig {\n  name: string;              // Agent identifier\n  description?: string;      // What this agent specializes in\n  tools: Tool[];             // Array of tools the agent can call\n  model?: string;            // Ollama model override\n  systemPrompt?: string;     // Custom system prompt (overrides auto-generated)\n  maxIterations?: number;    // Max LLM turns (default: 50)\n  projectRoot?: string;      // Working directory for tools (default: \".\")\n  rateLimitMs?: number;      // Min delay between LLM calls (default: 500)\n}\n```\n\n### agent.execute()\n\n```typescript\nconst result = await agent.execute<R>({\n  instructions: string[],        // Natural language task\n  onStep?: (step: StepResult) => void,  // Callback after each tool call\n  stopOnStepFail?: boolean,      // Abort on first tool failure (default: false)\n  debug?: boolean;               // Enable debug logging & verbose mode for tools (default: false)\n});\n\ninterface AgentResult<R> {\n  success: boolean;     // Whether the task completed successfully\n  output: R;            // Parsed JSON output from the agent\n  steps: StepResult[];  // Full log of every tool call\n  iterations: number;   // Number of LLM turns used\n  durationMs: number;   // Total wall-clock time\n  error?: string;       // Error message if success is false\n}\n\ninterface StepResult {\n  tool: string;                      // Tool name that was called\n  args: Record<string, unknown>;     // Arguments passed to the tool\n  result: unknown;                   // Tool return value\n  success: boolean;                  // Whether the tool call succeeded\n  durationMs: number;                // Tool execution time\n}\n```\n\n### Tool\n\n```typescript\nconst tool = new Tool(name: string, fn: ToolFn, metadata: ToolMetadata);\n\ntype ToolFn = (ctx: ToolContext, args: Record<string, unknown>) => Promise<unknown>;\n\ninterface ToolMetadata {\n  description: string;     // Shown to the LLM\n  schema: ToolSchema;      // JSON Schema for arguments\n}\n\ninterface ToolContext {\n  projectRoot: string;     // Resolved working directory\n  env: Record<string, string | undefined>;  // Process environment\n}\n```\n\n## Customizing Agents\n\nEvery factory function accepts a partial override object, so you can tune any agent without forking:\n\n```typescript\nimport { createGitHubAgent } from \"n-agents\";\n\nconst agent = createGitHubAgent({\n  maxIterations: 100, // Allow more turns for complex tasks\n  rateLimitMs: 1000, // Slower rate limit\n  projectRoot: \"/my/repo\", // Custom working directory\n});\n```\n\n## Error Handling\n\nThe library exports three error classes for typed error handling:\n\n```typescript\nimport { AgentError, ToolExecutionError, ConfigurationError } from \"n-agents\";\n\n// AgentError           — Base class for all agent errors\n// ToolExecutionError   — Thrown when a tool call fails (includes .toolName)\n// ConfigurationError   — Thrown for missing API keys or invalid config\n```\n\n## Running Examples\n\nRun the included examples with:\n\n```bash\n# Query Wikidata for the top 5 largest countries\nnpm run example:wikidata\n\n# Scrape the top 10 Hacker News stories with the stealth browser\nnpm run example:browser\n```\n\n## Project Structure\n\n```text\nn-agents/\n├── agent.ts           # NodeAgent core — conversation loop, tool dispatch, LLM integration\n├── tool.ts            # Tool class — wraps typed functions for LLM consumption\n├── types.ts           # Shared TypeScript interfaces (AgentConfig, AgentResult, etc.)\n├── errors.ts          # Custom error classes (AgentError, ToolExecutionError, ConfigurationError)\n├── index.ts           # Public API — re-exports all agents, tools, types, and errors\n├── agents/            # Agent factory functions (one per service)\n│   ├── github.ts\n│   ├── gitlab.ts\n│   ├── bitbucket.ts\n│   ├── git.ts\n│   ├── data/\n│   │   └── wikidata.ts\n│   ├── reddit.ts\n│   ├── youtube.ts\n│   ├── gmail.ts\n│   ├── slack.ts\n│   ├── jira.ts\n│   ├── instagram.ts\n│   ├── tiktok.ts\n│   ├── browser.ts\n│   ├── http.ts\n│   ├── google-sheets.ts\n│   └── index.ts       # AGENTS_DEF — registry of all instantiated agents\n├── tools/             # Tool implementations (one per service + utilities)\n│   ├── github.ts      # 93K — comprehensive GitHub API coverage\n│   ├── browser.ts     # 69K — stealth Puppeteer automation\n│   ├── slack.ts       # 41K — full Slack API integration\n│   ├── youtube.ts     # 35K — YouTube Data API v3\n│   ├── jira.ts        # 32K — Jira REST API\n│   ├── gmail.ts       # 27K — Gmail API\n│   ├── reddit.ts      # 24K — Reddit API\n│   ├── bitbucket.ts   # 22K — Bitbucket API\n│   ├── gitlab.ts      # 20K — GitLab API\n│   ├── git.ts         # 17K — local git operations\n│   ├── data/\n│   │   └── wikidata.ts    # 8K  — SPARQL + entity search\n│   ├── instagram.ts   # 5K  — Instagram Graph API\n│   ├── tiktok.ts      # 5K  — TikTok Open API\n│   ├── fs.ts          # 4K  — filesystem operations\n│   ├── shell.ts       # 2K  — shell command execution\n│   ├── http.ts        # HTTP requests\n│   ├── google-sheets.ts # Google Sheets API\n│   └── index.ts       # Tool set re-exports\n├── utils/\n│   └── stealth-browser.ts  # 43K — Puppeteer stealth setup with ghost-cursor\n├── examples/\n│   ├── wikidata.ts    # Query Wikidata with natural language\n│   └── browser.ts     # Scrape Hacker News top stories\n└── scripts/             # Utility scripts\n```\n\n---\n\n## Contributing\n\nContributions are welcome! If you'd like to add a new agent, improve an existing tool, or fix a bug, please open an issue or pull request on <a href=\"https://github.com/solidsnail/n-agents/pulls\">GitHub</a>.\n\n## Sponsors\n\nThis project is made possible by the support of our sponsors.\n\n<img src=\"./readme-assets/svg/sponsor-card.svg\" />\n<table ><tr ><th >\n\nName\n\n</th></tr><tr ><td >\n\nYour logo here\n\n</td></tr></table>\n\n## License\n\nn-agents is released under the <a href=\"./LICENSE\">MIT License</a>\n\n---\n\n<p align=\"center\"><sub >Built with Ollama · TypeScript · Puppeteer</sub></p>\n","readmeFilename":"README.md"}