[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-2899":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":14,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":15,"starSnapshotCount":15,"syncStatus":37,"lastSyncTime":38,"discoverSource":39},2899,"runline","Michaelliv\u002Frunline","Michaelliv","⚡ Code mode for agents",null,"TypeScript",140,8,122,3,0,7,16,9,2.86,false,"main",true,[24,25,26,27,28,29,30,31,32,33],"agent","api","cli","javascript","npm","plugins","quickjs","sandbox","tools","typescript","2026-06-12 02:00:44","# runline ⚡\n\nCode mode for agents.\n\nTurn any API or host capability into a callable action. Install a plugin, write JavaScript, call actions. Code runs in a QuickJS WASM runtime with plugin globals; enable the built-in `node` plugin when you want filesystem, path, OS, process, crypto, shell, and fetch actions.\n\n```bash\nnpm install -g runline\n```\n\n## Quick Start\n\n```bash\nnpm install -g runline\nrunline init\nrunline connection add bf --plugin brandfetch --set apiKey=xxx\n\nrunline exec 'return await brandfetch.brand.getColors({ domain: \"nike.com\" })'\n# => [{ hex: \"#E5E5E5\", type: \"accent\" }, { hex: \"#111111\", type: \"dark\" }, ...]\n```\n\nAll 203 built-in plugins ship bundled inside `runline` — no per-plugin install step. Just add a connection for the one you want to use. Agent code runs in a QuickJS runtime: each configured plugin is a top-level global, dot-chain into resource and action. Configure the built-in `node` plugin for host work like `node.fs.readFile`, `node.process.execFile`, `node.path.join`, `node.crypto.hash`, and `node.fetch`.\n\n```js\n\u002F\u002F agent writes this\nconst company = await brandfetch.brand.getCompany({ domain: \"stripe.com\" });\nconst deals = await pipedrive.deal.list({ limit: 10 });\nconst issue = await github.issue.create({\n  owner: \"acme\", repo: \"api\",\n  title: `New lead: ${company.name}`,\n  body: `${deals.length} open deals`\n});\nreturn { company: company.name, issue: issue.number };\n```\n\n## Plugins\n\n203 built-in plugins covering popular SaaS, DevOps, productivity, image-generation APIs, and host Node capabilities. All ship with the package — no separate install needed.\n\nSet the env var shown in the Auth column, add a connection, and go:\n\n```bash\nexport GITHUB_TOKEN=ghp_xxx\nrunline connection add gh --plugin github --set token=$GITHUB_TOKEN\nrunline exec 'return await github.user.listRepos({ username: \"torvalds\" })'\n```\n\n\u003C!-- BEGIN PLUGIN TABLE -->\n\u003C!-- Generated by: node scripts\u002Fgenerate-plugin-table.js -->\n| Plugin | Actions | Resources | Auth |\n|--------|--------:|-----------|------|\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FactionNetwork.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **actionNetwork** | 23 | attendance, event, person, petition, signature, tag, personTag | `ACTION_NETWORK_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FactiveCampaign.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **activeCampaign** | 48 | contact, account, accountContact, contactTag, contactList, list, tag, deal, connection, ecomCustomer, ecomOrder, ecomOrderProduct | `ACTIVE_CAMPAIGN_API_URL`, `ACTIVE_CAMPAIGN_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fadalo.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **adalo** | 5 | collection | `ADALO_APP_ID`, `ADALO_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Faffinity.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **affinity** | 16 | list, listEntry, person, organization | `AFFINITY_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FagileCrm.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **agileCrm** | 15 | contact, company, deal | `AGILE_CRM_SUBDOMAIN`, `AGILE_CRM_EMAIL`, `AGILE_CRM_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fairtable.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **airtable** | 10 | base, record | `AIRTABLE_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fairtop.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **airtop** | 24 | session, window, extraction, interaction, agent, file | `AIRTOP_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FapiTemplateIo.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **apiTemplateIo** | 4 | account, template, image, pdf | `API_TEMPLATE_IO_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fasana.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **asana** | 22 | task, subtask, taskComment, taskTag, taskProject, user, project | `ASANA_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fautopilot.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **autopilot** | 11 | contact, contactJourney, contactList, list | `AUTOPILOT_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FbambooHr.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **bambooHr** | 11 | employee, employeeDocument, file, companyReport | `BAMBOO_HR_SUBDOMAIN`, `BAMBOO_HR_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fbannerbear.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **bannerbear** | 4 | image, template | `BANNERBEAR_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fbaserow.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **baserow** | 8 | row | `BASEROW_HOST`, `BASEROW_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fbeeminder.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **beeminder** | 18 | datapoint, charge, goal, user | `BEEMINDER_API_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fbitly.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **bitly** | 3 | link | `BITLY_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fbitwarden.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **bitwarden** | 19 | collection, event, group, member | `BITWARDEN_CLIENT_ID`, `BITWARDEN_CLIENT_SECRET` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fbox.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **box** | 11 | file, folder | `BOX_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fbrandfetch.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **brandfetch** | 5 | brand | `BRANDFETCH_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fbrevo.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **brevo** | 15 | contact, attribute, email, sender | `BREVO_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fbubble.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **bubble** | 5 | object | `BUBBLE_API_TOKEN`, `BUBBLE_APP_NAME` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fchargebee.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **chargebee** | 5 | customer, invoice, subscription | `CHARGEBEE_ACCOUNT_NAME`, `CHARGEBEE_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fcircleci.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **circleci** | 3 | pipeline | `CIRCLECI_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FciscoWebex.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **ciscoWebex** | 10 | message, meeting | `WEBEX_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fclearbit.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **clearbit** | 3 | person, company | `CLEARBIT_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fclickup.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **clickup** | 61 | checklist, checklistItem, comment, folder, goal, goalKeyResult, guest, task, taskTag, taskList, taskDependency, spaceTag, list, timeEntry, timeEntryTag | `CLICKUP_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fclockify.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **clockify** | 25 | client, project, tag, task, timeEntry, user, workspace | `CLOCKIFY_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fcloudflare.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **cloudflare** | 4 | zoneCertificate | `CLOUDFLARE_API_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fcockpit.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **cockpit** | 5 | collection, form, singleton | `COCKPIT_URL`, `COCKPIT_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fcoda.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **coda** | 18 | table, formula, control, view | `CODA_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fcoingecko.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **coingecko** | 10 | coin, event |  |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fcontentful.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **contentful** | 7 | space, contentType, entry, asset, locale | `CONTENTFUL_SPACE_ID`, `CONTENTFUL_DELIVERY_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fconvertkit.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **convertkit** | 16 | customField, form, sequence, tag, tagSubscriber | `CONVERTKIT_API_SECRET` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fcopper.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **copper** | 32 | company, lead, opportunity, person, project, task, customerSource, user | `COPPER_API_KEY`, `COPPER_EMAIL` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fcortex.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **cortex** | 4 | analyzer, job, responder | `CORTEX_HOST`, `CORTEX_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fcurrents.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **currents** | 22 | action, instance, project, run, signature, specFile, test, testResult | `CURRENTS_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FcustomerIo.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **customerIo** | 9 | campaign, customer, event, segment | `CUSTOMERIO_SITE_ID`, `CUSTOMERIO_TRACKING_API_KEY`, `CUSTOMERIO_APP_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fdatabricks.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **databricks** | 34 | sql, files, genie, modelServing, catalog, table, volume, function, vectorSearch | `DATABRICKS_HOST`, `DATABRICKS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fdeepl.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **deepl** | 2 | language | `DEEPL_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fdemio.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **demio** | 4 | event, report | `DEMIO_API_KEY`, `DEMIO_API_SECRET` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fdhl.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **dhl** | 1 | shipment | `DHL_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fdiscord.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **discord** | 13 | channel, member, message | `DISCORD_BOT_TOKEN`, `DISCORD_GUILD_ID` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fdiscourse.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **discourse** | 16 | category, group, post, user, userGroup | `DISCOURSE_HOST`, `DISCOURSE_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fdisqus.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **disqus** | 4 | forum | `DISQUS_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fdocker.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **docker** | 5 | containers, images | — |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fdrift.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **drift** | 5 | contact | `DRIFT_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fdropbox.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **dropbox** | 9 | file, folder, search | `DROPBOX_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fdropcontact.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **dropcontact** | 2 | contact | `DROPCONTACT_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fegoi.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **egoi** | 4 | contact | `EGOI_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Felasticsearch.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **elasticsearch** | 9 | document, index | `ELASTICSEARCH_URL` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Femelia.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **emelia** | 9 | campaign, contactList | `EMELIA_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Ferpnext.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **erpnext** | 5 | document | `ERPNEXT_HOST`, `ERPNEXT_API_KEY`, `ERPNEXT_API_SECRET` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FfacebookGraph.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **facebookGraph** | 1 | request | `FACEBOOK_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Ffreshdesk.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **freshdesk** | 10 | ticket, contact | `FRESHDESK_DOMAIN`, `FRESHDESK_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Ffreshservice.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **freshservice** | 77 | agent, agentGroup, announcement, asset, assetType, change, department, location, problem, product, release, requester, requesterGroup, software, ticket, agentRole | `FRESHSERVICE_DOMAIN`, `FRESHSERVICE_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FfreshworksCrm.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **freshworksCrm** | 35 | account, appointment, contact, deal, note, salesActivity, task, search | `FRESHWORKS_CRM_DOMAIN`, `FRESHWORKS_CRM_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fgetresponse.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **getresponse** | 5 | contact | `GETRESPONSE_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fghost.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **ghost** | 5 | post | `GHOST_URL`, `GHOST_ADMIN_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fgithub.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **github** | 34 | file, issue, release, repository, review, user, organization, workflow | `GITHUB_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fgitlab.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **gitlab** | 17 | issue, release, repository, user, file | `GITLAB_TOKEN` |\n| **gmail** | 32 | message, thread, draft, label, profile, alias |  |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fgong.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **gong** | 4 | call, user | `GONG_ACCESS_KEY`, `GONG_ACCESS_KEY_SECRET` |\n| **googleCalendar** | 11 | calendar, event |  |\n| **googleContacts** | 10 | contact, group |  |\n| **googleDocs** | 21 | document |  |\n| **googleDrive** | 20 | file, folder, fileFolder, drive |  |\n| **googleImage** | 1 | image | `GOOGLE_API_KEY` |\n| **googleSheets** | 13 | spreadsheet, sheet |  |\n| **googleSlides** | 7 | presentation, page |  |\n| **googleTasks** | 12 | taskList, task |  |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fgotify.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **gotify** | 3 | message | `GOTIFY_URL`, `GOTIFY_APP_TOKEN`, `GOTIFY_CLIENT_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fgotowebinar.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **gotowebinar** | 20 | webinar, registrant, session, attendee, coorganizer, panelist | `GOTO_ACCESS_TOKEN`, `GOTO_ORGANIZER_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fgrafana.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **grafana** | 17 | dashboard, team, teamMember, user | `GRAFANA_URL`, `GRAFANA_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fgraphql.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **graphql** | 2 | query, introspect | `GRAPHQL_ENDPOINT` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fgrist.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **grist** | 4 | record | `GRIST_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fhackernews.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **hackernews** | 6 | article, user, all |  |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fhalopsa.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **halopsa** | 20 | client, site, ticket, user | `HALOPSA_API_URL`, `HALOPSA_CLIENT_ID`, `HALOPSA_CLIENT_SECRET` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fharvest.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **harvest** | 49 | client, project, task, contact, invoice, expense, estimate, user, timeEntry, company | `HARVEST_TOKEN`, `HARVEST_ACCOUNT_ID` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fhelpscout.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **helpscout** | 13 | conversation, customer, mailbox, thread | `HELPSCOUT_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fhighlevel.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **highlevel** | 17 | contact, opportunity, task, calendar | `HIGHLEVEL_ACCESS_TOKEN`, `HIGHLEVEL_LOCATION_ID` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FhomeAssistant.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **homeAssistant** | 13 | config, service, state, event, log, template, history | `HASS_HOST`, `HASS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fhubspot.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **hubspot** | 32 | contact, company, deal, ticket, contactList, engagement, form | `HUBSPOT_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FhumanticAi.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **humanticAi** | 3 | profile | `HUMANTIC_AI_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fhunter.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **hunter** | 3 | domainSearch, emailFinder, emailVerifier | `HUNTER_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fintercom.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **intercom** | 10 | contact, company | `INTERCOM_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fiterable.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **iterable** | 6 | event, user, userList | `ITERABLE_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fjenkins.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **jenkins** | 11 | job, build, instance | `JENKINS_URL`, `JENKINS_USER`, `JENKINS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fjira.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **jira** | 16 | issue, issueComment, user | `JIRA_DOMAIN`, `JIRA_EMAIL`, `JIRA_API_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fkeap.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **keap** | 28 | company, contact, contactNote, contactTag, order, product, email, file | `KEAP_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fkobotoolbox.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **kobotoolbox** | 17 | form, submission, hook, file | `KOBOTOOLBOX_URL`, `KOBOTOOLBOX_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Flemlist.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **lemlist** | 15 | activity, campaign, lead, team, unsubscribe, enrich | `LEMLIST_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Flinear.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **linear** | 88 | issue, comment, state, label, project, milestone, projectUpdate, view, cycle, initiative, team, user, attachment, org, webhook | `LINEAR_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Flingvanex.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **lingvanex** | 1 | translate | `LINGVANEX_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Flinkedin.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **linkedin** | 1 | post | `LINKEDIN_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Flonescale.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **lonescale** | 4 | list, item | `LONESCALE_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmagento.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **magento** | 15 | customer, invoice, order, product | `MAGENTO_HOST`, `MAGENTO_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmailcheck.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **mailcheck** | 1 | email | `MAILCHECK_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmailchimp.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **mailchimp** | 14 | member, memberTag, listGroup, campaign | `MAILCHIMP_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmailerlite.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **mailerlite** | 4 | subscriber | `MAILERLITE_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmailgun.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **mailgun** | 1 | email | `MAILGUN_API_KEY`, `MAILGUN_EMAIL_DOMAIN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmailjet.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **mailjet** | 3 | email, sms | `MAILJET_API_KEY`, `MAILJET_SECRET_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmandrill.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **mandrill** | 2 | message | `MANDRILL_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmarketstack.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **marketstack** | 3 | endOfDayData, exchange, ticker | `MARKETSTACK_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmatrix.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **matrix** | 10 | account, room, message, event, roomMember | `MATRIX_HOMESERVER_URL`, `MATRIX_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmattermost.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **mattermost** | 19 | channel, message, reaction, user | `MATTERMOST_URL`, `MATTERMOST_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmautic.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **mautic** | 20 | company, contact, contactSegment, campaignContact, companyContact, segmentEmail | `MAUTIC_URL`, `MAUTIC_USERNAME`, `MAUTIC_PASSWORD` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmedium.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **medium** | 3 | post, publication, me | `MEDIUM_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmessagebird.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **messagebird** | 2 | sms, balance | `MESSAGEBIRD_ACCESS_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmetabase.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **metabase** | 10 | question, alert, database, metric | `METABASE_URL`, `METABASE_SESSION_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmisp.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **misp** | 44 | attribute, event, eventTag, feed, galaxy, noticelist, object, organisation, tag, user, warninglist | `MISP_URL`, `MISP_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmocean.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **mocean** | 2 | sms, voice | `MOCEAN_API_KEY`, `MOCEAN_API_SECRET` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmonday.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **monday** | 18 | board, boardColumn, boardGroup, boardItem | `MONDAY_API_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FmonicaCrm.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **monicaCrm** | 45 | contact, activity, note, task, tag, journalEntry, reminder, call, conversation | `MONICA_API_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fmsg91.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **msg91** | 1 | sms | `MSG91_AUTHKEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fnasa.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **nasa** | 14 | apod, asteroidNeoFeed, asteroidNeoLookup, asteroidNeoBrowse, donki, earthAssets | `NASA_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fnetlify.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **netlify** | 7 | deploy, site | `NETLIFY_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FnetscalerAdc.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **netscalerAdc** | 3 | certificate, file | `NETSCALER_URL`, `NETSCALER_USERNAME`, `NETSCALER_PASSWORD` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fnextcloud.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **nextcloud** | 13 | file, folder, user | `NEXTCLOUD_WEBDAV_URL`, `NEXTCLOUD_USERNAME`, `NEXTCLOUD_PASSWORD` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fnocodb.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **nocodb** | 5 | row | `NOCODB_HOST`, `NOCODB_API_TOKEN` |\n| **node** | 38 | fs, path, os, process, crypto, fetch | — |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fnotion.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **notion** | 14 | block, database, page, user | `NOTION_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fnpm.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **npm** | 5 | package, distTag |  |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fodoo.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **odoo** | 6 | record, model | `ODOO_URL`, `ODOO_USERNAME`, `ODOO_PASSWORD` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fokta.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **okta** | 5 | user | `OKTA_URL`, `OKTA_API_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FoneSimpleApi.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **oneSimpleApi** | 10 | website, socialProfile, information, utility | `ONE_SIMPLE_API_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fonfleet.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **onfleet** | 34 | organization, task, worker, admin, hub, team, recipient, container, destination | `ONFLEET_API_KEY` |\n| **openai** | 1 | image | `OPENAI_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FopenThesaurus.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **openThesaurus** | 1 | synonyms |  |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fopenweathermap.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **openweathermap** | 2 | weather | `OPENWEATHERMAP_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Foura.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **oura** | 4 | profile, summary | `OURA_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fpaddle.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **paddle** | 9 | coupon, payment, plan, product, user | `PADDLE_VENDOR_ID`, `PADDLE_VENDOR_AUTH_CODE` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fpagerduty.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **pagerduty** | 9 | incident, incidentNote, logEntry, user | `PAGERDUTY_API_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fpaypal.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **paypal** | 4 | payout, payoutItem | `PAYPAL_CLIENT_ID`, `PAYPAL_SECRET` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fpeekalink.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **peekalink** | 2 | link | `PEEKALINK_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fphantombuster.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **phantombuster** | 5 | agent | `PHANTOMBUSTER_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FphilipsHue.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **philipsHue** | 4 | light | `PHILIPS_HUE_ACCESS_TOKEN`, `PHILIPS_HUE_USERNAME` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fpipedrive.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **pipedrive** | 47 | activity, deal, dealProduct, file, lead, note, organization, person, product | `PIPEDRIVE_API_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fplivo.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **plivo** | 3 | sms, mms, call | `PLIVO_AUTH_ID`, `PLIVO_AUTH_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fpostbin.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **postbin** | 6 | bin, request |  |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fposthog.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **posthog** | 5 | alias, event, identity, track | `POSTHOG_URL`, `POSTHOG_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fprofitwell.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **profitwell** | 2 | company, metric | `PROFITWELL_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fpushbullet.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **pushbullet** | 4 | push | `PUSHBULLET_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fpushcut.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **pushcut** | 1 | notification | `PUSHCUT_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fpushover.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **pushover** | 1 | message | `PUSHOVER_API_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fquickbase.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **quickbase** | 8 | field, file, record, report | `QUICKBASE_HOSTNAME`, `QUICKBASE_USER_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fquickbooks.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **quickbooks** | 45 | bill, customer, employee, estimate, invoice, item, payment, purchase, vendor | `QUICKBOOKS_ACCESS_TOKEN`, `QUICKBOOKS_COMPANY_ID` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fquickchart.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **quickchart** | 1 | chart |  |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fraindrop.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **raindrop** | 13 | bookmark, collection, tag, user | `RAINDROP_ACCESS_TOKEN` |\n| **recraft** | 1 | image | `RECRAFT_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Freddit.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **reddit** | 10 | post, comment, subreddit, user |  |\n| **replicate** | 1 | image | `REPLICATE_API_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Frocketchat.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **rocketchat** | 1 | chat | `ROCKETCHAT_DOMAIN`, `ROCKETCHAT_USER_ID`, `ROCKETCHAT_AUTH_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Frundeck.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **rundeck** | 2 | job | `RUNDECK_URL`, `RUNDECK_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fsalesforce.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **salesforce** | 48 | account, contact, lead, opportunity, case, task, user, sobject, soql | `SALESFORCE_INSTANCE_URL`, `SALESFORCE_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fsalesmate.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **salesmate** | 15 | company, activity, deal | `SALESMATE_SESSION_TOKEN`, `SALESMATE_LINKNAME` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FsecurityScorecard.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **securityScorecard** | 14 | company, industry, portfolio, portfolioCompany, invite, report | `SECURITYSCORECARD_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fsegment.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **segment** | 4 | identify, track, group | `SEGMENT_WRITE_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fsendgrid.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **sendgrid** | 10 | mail, contact, list | `SENDGRID_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fsendy.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **sendy** | 6 | campaign, subscriber | `SENDY_URL`, `SENDY_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fsentry.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **sentry** | 21 | event, issue, organization, project, release, team | `SENTRY_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fservicenow.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **servicenow** | 40 | incident, user, userGroup, userRole, businessService, configurationItem, department, tableRecord | `SERVICENOW_SUBDOMAIN`, `SERVICENOW_USERNAME`, `SERVICENOW_PASSWORD` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fshopify.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **shopify** | 10 | order, product | `SHOPIFY_SUBDOMAIN`, `SHOPIFY_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fsignl4.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **signl4** | 2 | alert | `SIGNL4_TEAM_SECRET` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fslack.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **slack** | 38 | message, channel, reaction, user, userGroup, file, star | `SLACK_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fsms77.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **sms77** | 2 | sms, voice | `SMS77_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fsplunk.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **splunk** | 16 | search, alert, report, user | `SPLUNK_BASE_URL`, `SPLUNK_AUTH_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fspotify.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **spotify** | 30 | player, album, artist, playlist, track, library, myData | `SPOTIFY_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fstackby.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **stackby** | 4 | row | `STACKBY_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fstoryblok.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **storyblok** | 7 | content, management |  |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fstrapi.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **strapi** | 5 | entry | `STRAPI_URL` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fstrava.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **strava** | 9 | activity | `STRAVA_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fstripe.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **stripe** | 20 | balance, customer, charge, coupon, customerCard, source, token, meterEvent | `STRIPE_SECRET_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fsupabase.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **supabase** | 5 | row | `SUPABASE_URL`, `SUPABASE_SERVICE_ROLE_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fsyncromsp.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **syncromsp** | 20 | customer, contact, ticket, rmmAlert | `SYNCROMSP_SUBDOMAIN`, `SYNCROMSP_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Ftapfiliate.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **tapfiliate** | 11 | affiliate, affiliateMetadata, programAffiliate | `TAPFILIATE_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Ftelegram.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **telegram** | 21 | message, chat, callback, file | `TELEGRAM_BOT_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fthehive.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **thehive** | 23 | alert, case, observable, task, log | `THEHIVE_URL`, `THEHIVE_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FthehiveProject.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **thehiveProject** | 37 | alert, case, task, observable, comment, log, page, query | `THEHIVE_URL`, `THEHIVE_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Ftodoist.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **todoist** | 31 | task, project, section, comment, label | `TODOIST_API_TOKEN` |\n| **together** | 1 | image | `TOGETHER_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Ftravisci.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **travisci** | 5 | build | `TRAVISCI_API_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Ftrello.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **trello** | 37 | board, boardMember, card, cardComment, list, attachment, checklist, label | `TRELLO_API_KEY`, `TRELLO_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Ftwake.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **twake** | 1 | message | `TWAKE_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Ftwilio.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **twilio** | 2 | sms, call | `TWILIO_ACCOUNT_SID`, `TWILIO_AUTH_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Ftwist.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **twist** | 22 | channel, thread, comment, messageConversation | `TWIST_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Ftwitter.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **twitter** | 8 | tweet, user, list, dm | `TWITTER_BEARER_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002FunleashedSoftware.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **unleashedSoftware** | 3 | salesOrder, stockOnHand | `UNLEASHED_API_ID`, `UNLEASHED_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fuplead.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **uplead** | 2 | person, company | `UPLEAD_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fuproc.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **uproc** | 1 | process | `UPROC_EMAIL`, `UPROC_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fuptimerobot.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **uptimerobot** | 22 | account, monitor, alertContact, maintenanceWindow, publicStatusPage | `UPTIMEROBOT_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Furlscanio.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **urlscanio** | 3 | scan | `URLSCANIO_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fvero.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **vero** | 8 | user, event | `VERO_AUTH_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fvonage.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **vonage** | 1 | sms | `VONAGE_API_KEY`, `VONAGE_API_SECRET` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fwekan.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **wekan** | 24 | board, list, card, cardComment, checklist, checklistItem | `WEKAN_URL`, `WEKAN_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fwoocommerce.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **woocommerce** | 15 | product, order, customer | `WOOCOMMERCE_URL`, `WOOCOMMERCE_CONSUMER_KEY`, `WOOCOMMERCE_CONSUMER_SECRET` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fwordpress.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **wordpress** | 15 | post, page, user | `WORDPRESS_URL`, `WORDPRESS_USERNAME`, `WORDPRESS_PASSWORD` |\n| **xai** | 1 | image | `XAI_API_KEY` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fxero.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **xero** | 8 | invoice, contact | `XERO_ACCESS_TOKEN`, `XERO_TENANT_ID` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fyourls.png\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **yourls** | 3 | url | `YOURLS_URL`, `YOURLS_SIGNATURE` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fzammad.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **zammad** | 22 | user, organization, group, ticket | `ZAMMAD_URL`, `ZAMMAD_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fzendesk.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **zendesk** | 18 | ticket, user, organization, ticketField | `ZENDESK_SUBDOMAIN`, `ZENDESK_EMAIL`, `ZENDESK_API_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fzoho.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **zoho** | 60 | account, contact, deal, invoice, lead, product, purchaseOrder, salesOrder, vendor, quote | `ZOHO_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fzoom.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **zoom** | 5 | meeting | `ZOOM_ACCESS_TOKEN` |\n| \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FMichaelliv\u002Frunline\u002Fmain\u002Fpackages\u002Frunline-plugins\u002Ficons\u002Fzulip.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle\"> **zulip** | 15 | message, stream, user | `ZULIP_URL`, `ZULIP_EMAIL`, `ZULIP_API_KEY` |\n\u003C!-- END PLUGIN TABLE -->\n\n## Examples\n\n```bash\n# List all available actions\nrunline actions\n# List actions only for connected services\nrunline actions --connected\n\n# Get Nike's brand colors\nrunline exec 'return await brandfetch.brand.getColors({ domain: \"nike.com\" })'\n\n# Create a GitHub issue\nrunline exec '\n  return await github.issue.create({\n    owner: \"acme\", repo: \"api\",\n    title: \"Bug: login broken\",\n    labels: [\"bug\", \"urgent\"]\n  })\n'\n\n# Search Pipedrive deals\nrunline exec 'return await pipedrive.deal.search({ term: \"Acme\" })'\n\n# Chain actions together\nrunline exec '\n  const contact = await hubspot.contact.get({ id: \"123\" });\n  const task = await todoist.task.create({\n    content: `Follow up with ${contact.properties.firstname}`,\n    priority: 4\n  });\n  return { contact: contact.properties.email, taskId: task.id };\n'\n\n# Discover actions from inside the runtime\nrunline exec 'return actions.list()'\nrunline exec 'return actions.list(\"brandfetch\")'\nrunline exec 'return actions.find(\"create issue\")'\nrunline exec 'return actions.describe(\"github.issue.create\")'\nrunline exec 'return actions.check(\"github.issue.create\", { owner: \"a\" })'\n\n# Output as JSON (for agents)\nrunline exec 'return await github.repo.list({ owner: \"torvalds\" })' --json\n```\n\n## Writing a Plugin\n\nPlugins export a function that receives a `RunlinePluginAPI` and registers actions.\n\n```typescript\nimport type { RunlinePluginAPI } from \"runline\";\n\nexport default function orders(rl: RunlinePluginAPI) {\n  rl.setName(\"orders\");\n  rl.setVersion(\"1.0.0\");\n\n  \u002F\u002F Connection config — env vars override config.json values\n  rl.setConnectionSchema({\n    apiKey: { type: \"string\", required: true, env: \"ORDERS_API_KEY\" },\n    baseUrl: { type: \"string\", required: true, env: \"ORDERS_BASE_URL\" },\n  });\n\n  rl.registerAction(\"list\", {\n    description: \"List orders for an organization\",\n    inputSchema: {\n      orgId: { type: \"string\", required: true },\n      status: { type: \"string\", required: false, description: \"open, closed, or all\" },\n      limit: { type: \"number\", required: false },\n    },\n    async execute(input, ctx) {\n      const { orgId, status, limit } = input as Record\u003Cstring, unknown>;\n      const url = new URL(`${ctx.connection.config.baseUrl}\u002Forgs\u002F${orgId}\u002Forders`);\n      if (status) url.searchParams.set(\"status\", status as string);\n      if (limit) url.searchParams.set(\"limit\", String(limit));\n\n      const res = await fetch(url.toString(), {\n        headers: { Authorization: `Bearer ${ctx.connection.config.apiKey}` },\n      });\n      if (!res.ok) throw new Error(`Orders API ${res.status}: ${await res.text()}`);\n      return res.json();\n    },\n  });\n\n  rl.registerAction(\"create\", {\n    description: \"Create a new order\",\n    inputSchema: {\n      orgId: { type: \"string\", required: true },\n      customer: { type: \"string\", required: true },\n      total: { type: \"number\", required: true },\n    },\n    async execute(input, ctx) {\n      const res = await fetch(`${ctx.connection.config.baseUrl}\u002Forders`, {\n        method: \"POST\",\n        headers: {\n          Authorization: `Bearer ${ctx.connection.config.apiKey}`,\n          \"Content-Type\": \"application\u002Fjson\",\n        },\n        body: JSON.stringify(input),\n      });\n      if (!res.ok) throw new Error(`Orders API ${res.status}: ${await res.text()}`);\n      return res.json();\n    },\n  });\n}\n```\n\nKey points: plugin `execute` handlers run **outside** the QuickJS runtime with full Node.js access (fetch, fs, etc). Agent code calls them through configured plugin globals; add a `node` connection to expose host APIs through the built-in `node` plugin. `ctx.connection.config` holds the resolved config with env var overrides applied.\n\nSee [`packages\u002Frunline-plugins\u002F`](packages\u002Frunline-plugins) for 202 real-world examples.\n\n## Sandbox\n\nAgent code runs in a [QuickJS](https:\u002F\u002Fbellard.org\u002Fquickjs\u002F) WASM runtime:\n\n- **Timeout** — configurable, kills infinite loops\n- **Memory limit** — configurable, prevents OOM\n- **`console.log`** — captured and returned in `result.logs`\n- **Plugin globals** — each installed plugin is a top-level proxy (e.g. `github`, `slack`, `brandfetch`). Dot-chain into resource and action: `github.issue.create(input)`\n- **Configured Node globals** — when configured, the built-in `node` plugin exposes host-backed actions such as `node.fs.readFile`, `node.fs.writeFile`, `node.path.join`, `node.os.info`, `node.process.execFile`, `node.crypto.hash`, and `node.fetch`\n\n## For Agents\n\nEvery command supports `--json`. Use `runline actions --json` for full schemas with input types.\n\n```bash\nrunline actions --json          # all actions with schemas\nrunline actions --connected --json  # only connected services\nrunline exec '\u003Ccode>' --json    # structured { result, logs } output\n```\n\n## SDK\n\n```typescript\nimport { Runline } from \"runline\";\nimport brandfetch from \"runline-plugin-brandfetch\";\n\nconst rl = Runline.create({\n  plugins: [brandfetch],\n  connections: [{ name: \"bf\", plugin: \"brandfetch\", config: { apiKey: \"xxx\" } }],\n});\n\nconst result = await rl.execute(`\n  const colors = await brandfetch.brand.getColors({ domain: \"stripe.com\" });\n  return colors.filter(c => c.type === \"accent\");\n`);\n\nconsole.log(result.result);  \u002F\u002F [{ hex: \"#635BFF\", type: \"accent\", brightness: 116 }]\n```\n\n## CLI Reference\n\n```bash\nrunline exec \"\u003Ccode>\"                  # execute JS in the QuickJS runtime\nrunline exec -f .\u002Fscript.js            # execute a file\nrunline actions                        # list all actions\nrunline actions --connected            # only actions for configured connections\nrunline plugin install \u003Csource>        # install from git\u002Fnpm\u002Flocal\nrunline plugin list                    # list installed plugins\nrunline plugin remove \u003Cname>           # remove a plugin\nrunline connection add \u003Cn> -p \u003Cplugin> -s key=val  # add connection\nrunline connection list                # list connections\nrunline connection remove \u003Cname>       # remove a connection\nrunline init                           # create .runline\u002F directory\n```\n\n## Configuration\n\n`.runline\u002Fconfig.json`:\n\n```json\n{\n  \"connections\": [\n    { \"name\": \"gh\", \"plugin\": \"github\", \"config\": { \"token\": \"ghp_xxx\" } },\n    { \"name\": \"bf\", \"plugin\": \"brandfetch\", \"config\": { \"apiKey\": \"xxx\" } }\n  ],\n  \"timeoutMs\": 30000,\n  \"memoryLimitBytes\": 67108864\n}\n```\n\nEnv vars override config values. Plugins declare env var names in their connection schema (e.g. `GITHUB_TOKEN`).\n\n## Development\n\nRunline is a bun workspace monorepo: `packages\u002Frunline` (library + CLI), `packages\u002Frunline-plugins` (203 built-in plugins, bundled into runline's dist at build time), and `packages\u002Fpi-runline` (pi extension that exposes runline to agents).\n\n```bash\nbun install\nbun --filter runline dev -- exec 'return 1 + 2'\nbun --filter runline test\nbun run check\n```\n\n## Pi integration\n\nThe [`pi-runline`](packages\u002Fpi-runline) package is a [pi](https:\u002F\u002Fgithub.com\u002Fmariozechner\u002Fpi) extension that plugs runline into coding agents as a single native tool:\n\n- **`execute_runline`** — run JavaScript in the runline runtime. Discovery happens inside the runtime via `actions.list \u002F find \u002F describe \u002F check`, so the agent never needs a separate listing tool.\n\nIt ships with `\u002Frunline-plugins`, a fuzzy multi-select picker for choosing which of the 202 plugins the agent should see, plus a guided credential prompt for the ones you enable.\n\n```bash\npi install npm:pi-runline\n# then in any pi session inside a project with .runline\u002F\n\u002Frunline-plugins\n```\n\nSee [`packages\u002Fpi-runline\u002FREADME.md`](packages\u002Fpi-runline\u002FREADME.md) for details.\n\n## How It Relates to dripline\n\n[dripline](https:\u002F\u002Fgithub.com\u002FMichaelliv\u002Fdripline) is **query mode** — SQL tables over live APIs. runline is **code mode** — JavaScript actions over the same APIs. Same plugin architecture, same connection config, different interface. Use dripline when you want to `SELECT` rows; use runline when you want to `create`, `update`, `delete`, or chain multiple API calls together.\n\n## License\n\nMIT\n","runline 是一个为代理设计的代码模式工具，能够将任何API或主机功能转换为可调用的操作。它支持通过安装插件、编写JavaScript代码来执行这些操作，所有的代码运行在一个基于QuickJS的WASM运行时环境中，并且可以通过启用内置的`node`插件来访问文件系统、路径、操作系统、进程、加密和网络请求等功能。该工具特别适合需要快速集成多种服务API以实现自动化流程的场景，如DevOps任务自动化、数据处理流水线构建等。其203个内置插件覆盖了广泛的SaaS、开发运维、生产力提升及图像生成API，无需单独安装即可直接使用，极大简化了配置过程。",2,"2026-06-11 02:51:32","CREATED_QUERY"]