@openhands/agent-canvas 1.7.1 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/README.windows.md +2 -2
- package/build/assets/{Trans-DP5rcauH.js → Trans-B7lYw4uD.js} +1 -1
- package/build/assets/{acp-providers-BHKZvEm5.js → acp-providers-WUD4tfSq.js} +1 -1
- package/build/assets/active-backend-context-mY7Gff5c.js +2 -0
- package/build/assets/{agent-context-settings-BwAakl29.js → agent-context-settings-BTUmWEzL.js} +1 -1
- package/build/assets/{agent-profiles-settings-BYU6aWus.js → agent-profiles-settings-Ilqid_R5.js} +1 -1
- package/build/assets/agent-server-conversation-service.api-C_7YnjzP.js +41 -0
- package/build/assets/{agent-settings-DEPFl5hR.js → agent-settings-BGTyoT6X.js} +2 -2
- package/build/assets/agent-settings-CxfT4ksO.js +1 -0
- package/build/assets/{alert-banner-C1nzoXBC.js → alert-banner-eRyIwDyU.js} +1 -1
- package/build/assets/api-key-entry-screen-JOx3SH1-.js +1 -0
- package/build/assets/app-settings-D53QZy5p.js +1 -0
- package/build/assets/automation-detail-nEflClmc.js +2 -0
- package/build/assets/{automation-export-Ca2ehC-k.js → automation-export-BO_kfqC8.js} +1 -1
- package/build/assets/{automations-list-ZHQSW8qD.js → automations-list-BYncC7gv.js} +1 -1
- package/build/assets/{back-nav-button-Be_L157B.js → back-nav-button-C02hGa8t.js} +1 -1
- package/build/assets/backend-form-modal-CKrBF80P.js +1 -0
- package/build/assets/{backend-synced-settings-badge-DdUfuSN8.js → backend-synced-settings-badge-CQ9xtNWm.js} +1 -1
- package/build/assets/{badge-B6q3sVom.js → badge-CzXbf7tR.js} +1 -1
- package/build/assets/{base-modal-CSHhJTSr.js → base-modal-DkVyzFMt.js} +1 -1
- package/build/assets/{brand-button-CQO8oqVo.js → brand-button-BUlDL-mz.js} +1 -1
- package/build/assets/{browser-BUDJnBg4.js → browser-3QjrEr1D.js} +1 -1
- package/build/assets/{browser-tab-Cir7KbAL.js → browser-tab-BijpUbdt.js} +1 -1
- package/build/assets/{chat-send-button-D4614wUz.js → chat-send-button-BKsVjhtA.js} +1 -1
- package/build/assets/check-CrxQfJZ2.js +1 -0
- package/build/assets/chevron-down-D_LsyTA7.js +1 -0
- package/build/assets/circle-check-DZn9HkLE.js +1 -0
- package/build/assets/{circle-plus-check-toggle-E3Ecb_gg.js → circle-plus-check-toggle-DdjUiOo1.js} +1 -1
- package/build/assets/cloud-funnel-analytics-NlmDoeo2.js +1 -0
- package/build/assets/{combobox-caret-C8_eGdp2.js → combobox-caret-Dl9UtvD6.js} +1 -1
- package/build/assets/{command-menu-N_BriUy8.js → command-menu-CvLPs7dg.js} +1 -1
- package/build/assets/{condenser-settings-jNGOKFGz.js → condenser-settings-C4Y9CzQV.js} +1 -1
- package/build/assets/{confirmation-modal-gZtbojCm.js → confirmation-modal-CRBJSllP.js} +1 -1
- package/build/assets/{context-menu-list-item-BTHGFhIx.js → context-menu-list-item-FGaafXGh.js} +1 -1
- package/build/assets/conversation-D_ORtpKC.js +1 -0
- package/build/assets/conversation-Dpc5nmGi.js +90 -0
- package/build/assets/conversation-panel-D_ORtpKC.js +1 -0
- package/build/assets/conversation-state-store-CGRQemtx.js +1 -0
- package/build/assets/{conversation-tab-empty-state-BCMHkGQk.js → conversation-tab-empty-state-CDjvNgpG.js} +1 -1
- package/build/assets/{copy-B8Y5ufoR.js → copy-Drwu97Gx.js} +1 -1
- package/build/assets/{copy-to-clipboard-button-C4l3CMSd.js → copy-to-clipboard-button-NbN1clVr.js} +1 -1
- package/build/assets/{device-verify-C_M7Z8xs.js → device-verify-CDm_WrVu.js} +1 -1
- package/build/assets/{dropdown-classes-DQlj-MpS.js → dropdown-classes-CqA2BTCL.js} +1 -1
- package/build/assets/{entry.client-CCrlta8r.js → entry.client-BO2KQj0y.js} +2 -2
- package/build/assets/{enum-filter-dropdown-paB-lFSP.js → enum-filter-dropdown-DSqPZnsD.js} +1 -1
- package/build/assets/{environment-switch-overlay-D0FgCMqs.js → environment-switch-overlay-mGl2pqqx.js} +1 -1
- package/build/assets/extensions-hub-Br3Lgynp.js +1 -0
- package/build/assets/extensions-navigation-BQmstKDZ.js +1 -0
- package/build/assets/{external-link-Cnnd6ikC.js → external-link-D9B2QMPf.js} +1 -1
- package/build/assets/files-tab-4c9HFSLo.js +1 -0
- package/build/assets/{form-control-classes-CSPevi7c.js → form-control-classes-CtVAktAy.js} +1 -1
- package/build/assets/{format-time-delta-DuhE50B-.js → format-time-delta-DICE64sz.js} +1 -1
- package/build/assets/git-provider-icon-0PqmIS_S.js +1 -0
- package/build/assets/{highlighted-source-view-suUKd5if.js → highlighted-source-view-KMsA9c4a.js} +1 -1
- package/build/assets/home-D9JsyEmE.js +1 -0
- package/build/assets/{home-BZclW6kd.js → home-TFhnmZLx.js} +1 -1
- package/build/assets/index-home-D9JsyEmE.js +1 -0
- package/build/assets/install-server-modal-BgGRnqA0.js +1 -0
- package/build/assets/{launch-Bik37u9Y.js → launch-DjkKw55l.js} +1 -1
- package/build/assets/{list-todo-_BXQzOiB.js → list-todo-BpAf7aOT.js} +1 -1
- package/build/assets/{llm-not-configured-banner-znJFsW_O.js → llm-not-configured-banner-Y4W9-sar.js} +4 -4
- package/build/assets/llm-settings-D8zNkIlP.js +1 -0
- package/build/assets/llm-settings-nPwv7hKu.js +1 -0
- package/build/assets/{llm-subscription-service-_QUsVybQ.js → llm-subscription-service-COTgZc1C.js} +1 -1
- package/build/assets/loader-circle-CGD6-Vak.js +1 -0
- package/build/assets/{loading-spinner-CcpnCr_d.js → loading-spinner-DRFyh6Iy.js} +1 -1
- package/build/assets/manage-backends-modal-DiRWE3tJ.js +1 -0
- package/build/assets/manifest-1cf33a7b.js +1 -0
- package/build/assets/markdown-renderer-U40HF0Ak.js +8 -0
- package/build/assets/mcp-xDMaHzOw.js +9 -0
- package/build/assets/{messages-CYztjKLQ.js → messages-CdNfZPgd.js} +2 -2
- package/build/assets/{modal-body-DQhiw-AR.js → modal-body-C3bGicn4.js} +1 -1
- package/build/assets/{modal-classes-YaEEa5eZ.js → modal-classes-DFFO6BMU.js} +1 -1
- package/build/assets/{modal-close-button-turIYn0t.js → modal-close-button-vxkAIRyZ.js} +1 -1
- package/build/assets/{onboarding-9pEMFGtN.js → onboarding-DWuFieEA.js} +1 -1
- package/build/assets/onboarding-modal-C8m72Dpb.js +1 -0
- package/build/assets/organization-service.api-CQ73CB-S.js +1 -0
- package/build/assets/{pencil-8_lvWDoZ.js → pencil-DzW2GB2M.js} +1 -1
- package/build/assets/{planner-tab-Dr8B-ZBI.js → planner-tab-YG0bGxDY.js} +1 -1
- package/build/assets/plugins-management-service-ijhH8OSh.js +1 -0
- package/build/assets/plus-CTGLo3aa.js +1 -0
- package/build/assets/profiles-service.api-C32pPm70.js +1 -0
- package/build/assets/providers-DuSn9s2i.js +1 -0
- package/build/assets/proxy-BiyDhMBd.js +1 -0
- package/build/assets/{puzzle-DXWdfaa7.js → puzzle-DlqT0yvr.js} +1 -1
- package/build/assets/{recommended-automations-launcher-Dye8Li08.js → recommended-automations-launcher-Dru1yN46.js} +2 -2
- package/build/assets/{refresh-cw-D7CYLy-d.js → refresh-cw-Br5254f4.js} +1 -1
- package/build/assets/root-DOLLQteU.js +2 -0
- package/build/assets/root-layout-xmylWoew.js +3 -0
- package/build/assets/schema-field-htfNouTG.js +1 -0
- package/build/assets/{sdk-section-page-Di5mT86Y.js → sdk-section-page-D0K1dBQY.js} +1 -1
- package/build/assets/search-BrpWXWUi.js +1 -0
- package/build/assets/secrets-service-Dbv5Zb8G.js +1 -0
- package/build/assets/{secrets-settings-DPlA3moO.js → secrets-settings-Da4SSaX9.js} +1 -1
- package/build/assets/{segmented-toggle-DbbD3Tve.js → segmented-toggle-CZKOdIly.js} +1 -1
- package/build/assets/settings-F4a09IxY.js +1 -0
- package/build/assets/{settings-dropdown-input-Dx6vlkgf.js → settings-dropdown-input-jOiv5Yrk.js} +1 -1
- package/build/assets/{settings-index-D5dDKrDt.js → settings-index-CyJBf5NA.js} +1 -1
- package/build/assets/{settings-input-BjW_zyTN.js → settings-input-BEaTCem1.js} +1 -1
- package/build/assets/{settings-list-classes-gQdBahdt.js → settings-list-classes-VqMzkYYt.js} +1 -1
- package/build/assets/{settings-modal-DsJk2THd.js → settings-modal-C-S1NpbC.js} +1 -1
- package/build/assets/settings-service.api-CTJRrvMu.js +1 -0
- package/build/assets/{settings-switch-UNSf8K8I.js → settings-switch-B405oU_v.js} +1 -1
- package/build/assets/{shared-conversation-DU1kwDTF.js → shared-conversation-BvWtTwES.js} +1 -1
- package/build/assets/{sidebar-layout-DXHtbEj1.js → sidebar-layout-BGMuyC86.js} +1 -1
- package/build/assets/{sidebar-mobile-menu-toggle-BlmI8OrA.js → sidebar-mobile-menu-toggle-xiKoUfGa.js} +1 -1
- package/build/assets/{sidebar-nav-link-pvUivfK2.js → sidebar-nav-link-DA4_ct9G.js} +1 -1
- package/build/assets/{sidebar-store-DwrYKwYr.js → sidebar-store-FRJ3rADB.js} +1 -1
- package/build/assets/{skill-card-pill-row-D7XCz5uk.js → skill-card-pill-row-BMdhr_sd.js} +1 -1
- package/build/assets/{skill-icon-badge-HqBWZ2Eq.js → skill-icon-badge-CGUkgcVH.js} +1 -1
- package/build/assets/{skills-plugins-YJSV6A0M.js → skills-plugins-C5eJnyft.js} +1 -1
- package/build/assets/{skills-settings-BbREHv_-.js → skills-settings-pUxMr6WZ.js} +1 -1
- package/build/assets/{styled-tooltip-DsjDnR_W.js → styled-tooltip-B3kIdVyH.js} +1 -1
- package/build/assets/{task-list-tab-Dzim5ftn.js → task-list-tab-B3k4W1cK.js} +1 -1
- package/build/assets/{terminal-CYFAMiXx.js → terminal-CBI_41Zc.js} +1 -1
- package/build/assets/{toggle-switch-BptY3XRG.js → toggle-switch-DYRr9CAR.js} +1 -1
- package/build/assets/{trash-2-Bq4lHbTB.js → trash-2-gZPlx23R.js} +1 -1
- package/build/assets/{typography-C6fuRTTT.js → typography-B1UxuuEC.js} +1 -1
- package/build/assets/{use-acp-credential-form-CuBXKNvP.js → use-acp-credential-form-CjSvKWFH.js} +1 -1
- package/build/assets/use-activate-agent-profile-DCRf47e-.js +1 -0
- package/build/assets/use-agent-profiles-DmT9zxAN.js +1 -0
- package/build/assets/{use-can-manage-org-profiles-Uai-HHx2.js → use-can-manage-org-profiles-vBiP7rHF.js} +1 -1
- package/build/assets/use-cloud-current-user-id-BMq9gw93.js +1 -0
- package/build/assets/use-config-C959QcRC.js +1 -0
- package/build/assets/{use-create-conversation-DzcM79TE.js → use-create-conversation-CakhLF0X.js} +1 -1
- package/build/assets/{use-create-secret-2YLjoQw-.js → use-create-secret-RT4QtSS9.js} +1 -1
- package/build/assets/use-llm-profiles-CdaxVpyY.js +1 -0
- package/build/assets/use-onboarding-completion-CJU4MNAY.js +1 -0
- package/build/assets/use-plugins-marketplace-D-93nqtJ.js +1 -0
- package/build/assets/{use-save-agent-profile-Q2M72WgR.js → use-save-agent-profile-DGJ3-u0M.js} +1 -1
- package/build/assets/{use-save-settings-BZK7zVsK.js → use-save-settings--C6LZXfI.js} +1 -1
- package/build/assets/use-settings-DIAo5KFk.js +1 -0
- package/build/assets/use-settings-nav-items-DPK5sxvR.js +16 -0
- package/build/assets/use-skills-D_mLhYNa.js +1 -0
- package/build/assets/use-tracking-COqZLobY.js +1 -0
- package/build/assets/{use-user-conversation-43duhf7D.js → use-user-conversation-DhcAEyJX.js} +1 -1
- package/build/assets/{useMutation-DyQXZFEF.js → useMutation-DHLpZ6J0.js} +1 -1
- package/build/assets/utils-DsWhWn2F.js +1 -0
- package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-CJ7amdtQ.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-CYPMCkX1.js} +1 -1
- package/build/assets/{vendor~files-tab-vm3f67Pz.js → vendor~files-tab-atebg0iG.js} +1 -1
- package/build/assets/{vendor~index-home~home~conversation-panel~conversation-kX4LrGQC.js → vendor~index-home~home~conversation-panel~conversation-G9DMrR7m.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation-DpA6fir3.js → vendor~root-layout~conversation-panel~conversation-DEhW1h3I.js} +1 -1
- package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation-EShpjxey.js → vendor~root-layout~index-home~home~conversation-panel~conversation-Acmf1sKj.js} +1 -1
- package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-DD_UNO02.js → vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-CmzCY1BT.js} +1 -1
- package/build/assets/{vendor~root-layout~index-home~home~mcp~automations-list~onboarding-modal-Be63Q2Ln.js → vendor~root-layout~index-home~home~mcp~automations-list~onboarding-modal-C7Yh77RT.js} +1 -1
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~bi2r7bko-Bw4AuHN1.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~bi2r7bko-VFnwct3q.js} +1 -1
- package/build/assets/{verification-settings-B4DL3Tez.js → verification-settings-Vr5cN4md.js} +1 -1
- package/build/assets/x-Dx_JbpHA.js +1 -0
- package/build/favicon-16x16.png +0 -0
- package/build/favicon-32x32.png +0 -0
- package/build/favicon.ico +0 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +2 -0
- package/build/locales/ca/openhands.json +2 -0
- package/build/locales/de/openhands.json +2 -0
- package/build/locales/en/openhands.json +2 -0
- package/build/locales/es/openhands.json +2 -0
- package/build/locales/fr/openhands.json +2 -0
- package/build/locales/it/openhands.json +2 -0
- package/build/locales/ja/openhands.json +2 -0
- package/build/locales/ko-KR/openhands.json +2 -0
- package/build/locales/no/openhands.json +2 -0
- package/build/locales/pt/openhands.json +2 -0
- package/build/locales/tr/openhands.json +2 -0
- package/build/locales/uk/openhands.json +2 -0
- package/build/locales/zh-CN/openhands.json +2 -0
- package/build/locales/zh-TW/openhands.json +2 -0
- package/config/defaults.json +4 -4
- package/dist/api/agent-server-adapter.cjs +1 -1
- package/dist/api/agent-server-adapter.cjs.map +1 -1
- package/dist/api/agent-server-adapter.js +7 -7
- package/dist/api/agent-server-adapter.js.map +1 -1
- package/dist/api/automation-service/automation-service.api.cjs +1 -1
- package/dist/api/automation-service/automation-service.api.cjs.map +1 -1
- package/dist/api/automation-service/automation-service.api.js +95 -95
- package/dist/api/automation-service/automation-service.api.js.map +1 -1
- package/dist/api/backend-registry/storage.cjs +1 -1
- package/dist/api/backend-registry/storage.cjs.map +1 -1
- package/dist/api/backend-registry/storage.js +1 -1
- package/dist/api/backend-registry/storage.js.map +1 -1
- package/dist/api/backend-registry/types.d.ts +2 -0
- package/dist/api/cloud/conversation-service.api.cjs +1 -1
- package/dist/api/cloud/conversation-service.api.js +22 -22
- package/dist/api/mcp-service/mcp-service.api.cjs +1 -1
- package/dist/api/mcp-service/mcp-service.api.cjs.map +1 -1
- package/dist/api/mcp-service/mcp-service.api.js +19 -19
- package/dist/api/mcp-service/mcp-service.api.js.map +1 -1
- package/dist/api/settings-service/settings-service.api.cjs +1 -1
- package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
- package/dist/api/settings-service/settings-service.api.js +26 -12
- package/dist/api/settings-service/settings-service.api.js.map +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.js +16 -16
- package/dist/components/features/mcp-page/installed-server-card.cjs +1 -1
- package/dist/components/features/mcp-page/installed-server-card.cjs.map +1 -1
- package/dist/components/features/mcp-page/installed-server-card.d.ts +2 -2
- package/dist/components/features/mcp-page/installed-server-card.js +6 -7
- package/dist/components/features/mcp-page/installed-server-card.js.map +1 -1
- package/dist/components/features/mcp-page/installed-servers-section.cjs +1 -1
- package/dist/components/features/mcp-page/installed-servers-section.cjs.map +1 -1
- package/dist/components/features/mcp-page/installed-servers-section.d.ts +2 -2
- package/dist/components/features/mcp-page/installed-servers-section.js +2 -2
- package/dist/components/features/mcp-page/installed-servers-section.js.map +1 -1
- package/dist/components/features/mcp-page/mcp-server-health.cjs +1 -1
- package/dist/components/features/mcp-page/mcp-server-health.js +4 -4
- package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs +1 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs.map +1 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.js +2 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.js.map +1 -1
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.cjs.map +1 -1
- package/dist/config/defaults.js +3 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/contexts/active-backend-context.cjs +1 -1
- package/dist/contexts/active-backend-context.cjs.map +1 -1
- package/dist/contexts/active-backend-context.d.ts +3 -2
- package/dist/contexts/active-backend-context.js +55 -42
- package/dist/contexts/active-backend-context.js.map +1 -1
- package/dist/favicon-16x16.png +0 -0
- package/dist/favicon-32x32.png +0 -0
- package/dist/favicon.ico +0 -0
- package/dist/hooks/mutation/use-update-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.js +5 -5
- package/dist/hooks/query/use-cloud-current-user-id.cjs +1 -1
- package/dist/hooks/query/use-cloud-current-user-id.cjs.map +1 -1
- package/dist/hooks/query/use-cloud-current-user-id.js +7 -5
- package/dist/hooks/query/use-cloud-current-user-id.js.map +1 -1
- package/dist/hooks/query/use-cloud-organizations.cjs +1 -1
- package/dist/hooks/query/use-cloud-organizations.cjs.map +1 -1
- package/dist/hooks/query/use-cloud-organizations.js +5 -1
- package/dist/hooks/query/use-cloud-organizations.js.map +1 -1
- package/dist/hooks/use-can-manage-org-profiles.cjs +1 -1
- package/dist/hooks/use-can-manage-org-profiles.cjs.map +1 -1
- package/dist/hooks/use-can-manage-org-profiles.js +2 -1
- package/dist/hooks/use-can-manage-org-profiles.js.map +1 -1
- package/dist/hooks/use-tracking.cjs +1 -1
- package/dist/hooks/use-tracking.js +9 -9
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +2 -0
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +1 -1
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +34 -0
- package/dist/i18n/translation.js.map +1 -1
- package/dist/locales/ar/openhands.json +2 -0
- package/dist/locales/ca/openhands.json +2 -0
- package/dist/locales/de/openhands.json +2 -0
- package/dist/locales/en/openhands.json +2 -0
- package/dist/locales/es/openhands.json +2 -0
- package/dist/locales/fr/openhands.json +2 -0
- package/dist/locales/it/openhands.json +2 -0
- package/dist/locales/ja/openhands.json +2 -0
- package/dist/locales/ko-KR/openhands.json +2 -0
- package/dist/locales/no/openhands.json +2 -0
- package/dist/locales/pt/openhands.json +2 -0
- package/dist/locales/tr/openhands.json +2 -0
- package/dist/locales/uk/openhands.json +2 -0
- package/dist/locales/zh-CN/openhands.json +2 -0
- package/dist/locales/zh-TW/openhands.json +2 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.cjs +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.cjs.map +1 -1
- package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.js +9 -0
- package/dist/node_modules/@openhands/typescript-client/dist/client/settings-client.js.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +7 -2
- package/dist/package.js.map +1 -1
- package/dist/routes/app-settings.cjs +1 -1
- package/dist/routes/app-settings.js +5 -5
- package/dist/routes/mcp.cjs +1 -1
- package/dist/routes/mcp.cjs.map +1 -1
- package/dist/routes/mcp.js +73 -82
- package/dist/routes/mcp.js.map +1 -1
- package/dist/services/telemetry.cjs +1 -1
- package/dist/services/telemetry.cjs.map +1 -1
- package/dist/services/telemetry.d.ts +8 -0
- package/dist/services/telemetry.js +163 -116
- package/dist/services/telemetry.js.map +1 -1
- package/dist/types/mcp-server.d.ts +5 -0
- package/dist/types/settings.d.ts +3 -0
- package/dist/utils/mcp-config.cjs +1 -1
- package/dist/utils/mcp-config.cjs.map +1 -1
- package/dist/utils/mcp-config.d.ts +8 -0
- package/dist/utils/mcp-config.js +25 -20
- package/dist/utils/mcp-config.js.map +1 -1
- package/dist/utils/mcp-installed-servers.cjs +1 -1
- package/dist/utils/mcp-installed-servers.cjs.map +1 -1
- package/dist/utils/mcp-installed-servers.js +6 -3
- package/dist/utils/mcp-installed-servers.js.map +1 -1
- package/package.json +7 -2
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/dev-safe.mjs +2 -2
- package/scripts/stryker-diff.mjs +137 -0
- package/build/assets/active-backend-context-B9942JGX.js +0 -1
- package/build/assets/agent-server-conversation-service.api-D7qh9amG.js +0 -41
- package/build/assets/agent-settings-BbNLRtoh.js +0 -1
- package/build/assets/api-key-entry-screen-B2kVLRDQ.js +0 -1
- package/build/assets/app-settings-B92bjTei.js +0 -1
- package/build/assets/automation-detail-DoVSHQLs.js +0 -2
- package/build/assets/backend-form-modal-C0CIsQvd.js +0 -1
- package/build/assets/check-BMOG005H.js +0 -1
- package/build/assets/chevron-down-CV1zZP_K.js +0 -1
- package/build/assets/circle-check-lvN_jFN5.js +0 -1
- package/build/assets/client-source-D8jWKBfE.js +0 -1
- package/build/assets/cloud-funnel-analytics-CnCkPgQa.js +0 -1
- package/build/assets/conversation-DceG4LFS.js +0 -90
- package/build/assets/conversation-Do2Vg7uo.js +0 -1
- package/build/assets/conversation-panel-Do2Vg7uo.js +0 -1
- package/build/assets/conversation-state-store-BORusMiV.js +0 -1
- package/build/assets/extensions-hub-B2WudOET.js +0 -1
- package/build/assets/extensions-navigation-CYjIM65d.js +0 -1
- package/build/assets/files-tab-LSBijbEi.js +0 -1
- package/build/assets/git-provider-icon-DeQUgZVE.js +0 -1
- package/build/assets/home-C_R5pEbs.js +0 -1
- package/build/assets/index-home-C_R5pEbs.js +0 -1
- package/build/assets/install-server-modal-xCf76eim.js +0 -1
- package/build/assets/llm-settings-BYo9SN0I.js +0 -1
- package/build/assets/llm-settings-BaM0zJg5.js +0 -1
- package/build/assets/loader-circle-6zlEYCJw.js +0 -1
- package/build/assets/manage-backends-modal-n6PtHOER.js +0 -1
- package/build/assets/manifest-e9bbad7b.js +0 -1
- package/build/assets/markdown-renderer-Dkmjmx_d.js +0 -8
- package/build/assets/mcp-BJUOnO6v.js +0 -9
- package/build/assets/onboarding-modal-dYsjXJwx.js +0 -1
- package/build/assets/organization-service.api-HsxJhNCf.js +0 -1
- package/build/assets/plugins-management-service-DEjBqDoT.js +0 -1
- package/build/assets/plus-vIbGD459.js +0 -1
- package/build/assets/profiles-service.api-BddMsEhq.js +0 -1
- package/build/assets/providers-BxJi3BMO.js +0 -1
- package/build/assets/proxy-CN3HaaOW.js +0 -1
- package/build/assets/root-D4hpCAq9.js +0 -2
- package/build/assets/root-layout-a4-4sfbh.js +0 -3
- package/build/assets/schema-field-CZSs0hQP.js +0 -1
- package/build/assets/search-sKuYKllf.js +0 -1
- package/build/assets/secrets-service-i4CCd-UN.js +0 -1
- package/build/assets/settings-SHSt9Rq2.js +0 -1
- package/build/assets/settings-service.api-i_HHIqJP.js +0 -1
- package/build/assets/telemetry-B-2fXtqV.js +0 -2
- package/build/assets/use-activate-agent-profile-CXDcjVt8.js +0 -1
- package/build/assets/use-agent-profiles-CliaHofi.js +0 -1
- package/build/assets/use-cloud-current-user-id-BzamKpu-.js +0 -1
- package/build/assets/use-config-DPEYpfIj.js +0 -1
- package/build/assets/use-llm-profiles-Ci3zAVzV.js +0 -1
- package/build/assets/use-onboarding-completion-STApsofr.js +0 -1
- package/build/assets/use-plugins-marketplace-CzzdrUSK.js +0 -1
- package/build/assets/use-settings-BKpkUS4y.js +0 -1
- package/build/assets/use-settings-nav-items-BlXge_bf.js +0 -16
- package/build/assets/use-skills-BltA9XrV.js +0 -1
- package/build/assets/use-tracking-De7qByD4.js +0 -1
- package/build/assets/utils-qjs_KuS4.js +0 -1
- package/build/assets/x-EjvKGawc.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,o as t}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~f1hl7voa-BrmgjeOw.js";import{h as n}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hakxo2tj-ClV0p9g3.js";import{E as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-
|
|
1
|
+
import{a as e,o as t}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~f1hl7voa-BrmgjeOw.js";import{h as n}from"./vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hakxo2tj-ClV0p9g3.js";import{E as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-CYPMCkX1.js";import{n as i}from"./useQuery-B38jBavx.js";import{t as a}from"./iconBase-B2rQun3J.js";var o=class extends n{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){e._type=`infinite`,super.setOptions(e)}getOptimisticResult(e){return e._type=`infinite`,super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`forward`}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`backward`}}})}createResult(n,r){let{state:i}=n,a=super.createResult(n,r),{isFetching:o,isRefetching:s,isError:c,isRefetchError:l}=a,u=i.fetchMeta?.fetchMore?.direction,d=c&&u===`forward`,f=o&&u===`forward`,p=c&&u===`backward`,m=o&&u===`backward`;return{...a,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:e(r,i.data),hasPreviousPage:t(r,i.data),isFetchNextPageError:d,isFetchingNextPage:f,isFetchPreviousPageError:p,isFetchingPreviousPage:m,isRefetchError:l&&!d&&!p,isRefetching:s&&!f&&!m}}};function s(e,t){return i(e,o,t)}var c=r(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]);function l(e){return a({tag:`svg`,attr:{viewBox:`0 0 512 512`},child:[{tag:`path`,attr:{d:`M503.5 204.6L502.8 202.8L433.1 21.02C431.7 17.45 429.2 14.43 425.9 12.38C423.5 10.83 420.8 9.865 417.9 9.57C415 9.275 412.2 9.653 409.5 10.68C406.8 11.7 404.4 13.34 402.4 15.46C400.5 17.58 399.1 20.13 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.13 111.5 17.59 109.6 15.47C107.6 13.35 105.2 11.72 102.5 10.7C99.86 9.675 96.98 9.295 94.12 9.587C91.26 9.878 88.51 10.83 86.08 12.38C82.84 14.43 80.33 17.45 78.92 21.02L9.267 202.8L8.543 204.6C-1.484 230.8-2.72 259.6 5.023 286.6C12.77 313.5 29.07 337.3 51.47 354.2L51.74 354.4L52.33 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z`},child:[]}]})(e)}function u(e){return a({tag:`svg`,attr:{viewBox:`0 0 496 512`},child:[{tag:`path`,attr:{d:`M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z`},child:[]}]})(e)}function d(e){return a({tag:`svg`,attr:{viewBox:`0 0 512 512`},child:[{tag:`path`,attr:{d:`M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z`},child:[]}]})(e)}function f(e){return a({tag:`svg`,attr:{viewBox:`0 0 512 512`},child:[{tag:`path`,attr:{d:`M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z`},child:[]}]})(e)}function p(e){return a({tag:`svg`,attr:{viewBox:`0 0 384 512`},child:[{tag:`path`,attr:{d:`M272 384c9.6-31.9 29.5-59.1 49.2-86.2c0 0 0 0 0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4c0 0 0 0 0 0c19.8 27.1 39.7 54.4 49.2 86.2l160 0zM192 512c44.2 0 80-35.8 80-80l0-16-160 0 0 16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z`},child:[]}]})(e)}function m(e){return a({tag:`svg`,attr:{viewBox:`0 0 512 512`},child:[{tag:`path`,attr:{d:`M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32z`},child:[]}]})(e)}function h(e){return a({tag:`svg`,attr:{viewBox:`0 0 512 512`},child:[{tag:`path`,attr:{d:`M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z`},child:[]}]})(e)}function g(e){return a({tag:`svg`,attr:{viewBox:`0 0 512 512`},child:[{tag:`path`,attr:{d:`M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z`},child:[]}]})(e)}export{u as a,f as c,m as i,c as l,g as n,l as o,h as r,p as s,d as t,s as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{E as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-CJ7amdtQ.js";var t=e(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),n=[{id:`github`,name:`GitHub`,description:`Search code, manage issues and pull requests, and inspect repos via the GitHub API.`,categories:[`Engineering`,`Source control`],appUrl:`https://github.com`,docsUrl:`https://github.com/github/github-mcp-server`,notes:`Current managed connector works with bearer tokens today; GitHub OAuth is a strong candidate for a future one-click connect flow.`,popularityRank:100,connectionOptions:[{id:`oauth`,provider:`mcp`,connectionModel:{principalType:`user`,credentialScope:`account`,resourceType:`organization`,resourceCardinality:`many`,selectionMode:`post_auth`,identityMapping:{source:`identity_api`,endpoint:`https://api.github.com/user`,externalPrincipalIdPath:`id`,resourceNamePath:`login`,resourceUrlPath:`html_url`},resourceDiscovery:{endpoint:`https://api.github.com/user/orgs`,externalResourceIdPath:`id`,resourceNamePath:`login`,resourceUrlPath:`html_url`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://github.com/login/oauth/authorize`,tokenUrl:`https://github.com/login/oauth/access_token`,scopes:[`read:user`,`repo`]}},transport:{kind:`shttp`,url:`https://api.githubcopilot.com/mcp/`}},{id:`api`,provider:`mcp`,transport:{kind:`shttp`,url:`https://api.githubcopilot.com/mcp/`},auth:{strategy:`api_key`,credentialLabel:`Personal access token`,credentialPlaceholder:`github_pat_...`,credentialHelp:`Create a token in [GitHub settings](https://github.com/settings/personal-access-tokens): classic tokens need the repo and read:user scopes; fine-grained tokens need read access to Contents, Issues, and Pull requests for the repositories you use.`,credentialSecretName:`GITHUB_PERSONAL_ACCESS_TOKEN`,saveCredentialAsSecretByDefault:!0}}],iconBg:`var(--oh-surface)`,logoUrl:`https://cdn.simpleicons.org/github/FFFFFF`,keywords:[`git`,`pr`,`repo`,`issues`,`code`]},{id:`slack`,name:`Slack`,description:`Read channels, post messages, and search workspace history from your agent.`,categories:[`Communication`,`Operations`],appUrl:`https://slack.com`,docsUrl:`https://github.com/zencoderai/slack-mcp-server`,notes:`The OAuth option uses Slack's official hosted MCP server (confidential OAuth user-token auth); the local option runs the open-source zencoderai stdio server with a bot token.`,popularityRank:95,connectionOptions:[{id:`oauth`,provider:`mcp`,connectionModel:{principalType:`user`,credentialScope:`resource`,resourceType:`workspace`,resourceCardinality:`one`,selectionMode:`automatic`,identityMapping:{source:`oauth_token_response`,externalPrincipalIdPath:`authed_user.id`,externalTenantIdPath:`enterprise.id`,externalResourceIdPath:`team.id`,resourceNamePath:`team.name`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://slack.com/oauth/v2_user/authorize`,tokenUrl:`https://slack.com/api/oauth.v2.user.access`,scopes:[`search:read.public`,`search:read.private`,`search:read.mpim`,`search:read.im`,`search:read.files`,`search:read.users`,`chat:write`,`channels:history`,`groups:history`,`mpim:history`,`im:history`,`canvases:read`,`canvases:write`,`users:read`,`users:read.email`],pkce:!0,clientAuthentication:`body`}},transport:{kind:`shttp`,url:`https://mcp.slack.com/mcp`}},{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`slack`,command:`npx`,args:[`-y`,`@zencoderai/slack-mcp-server`],envFields:[{key:`SLACK_TEAM_ID`,label:`Team / Workspace ID`,type:`text`,placeholder:`T01234567`,helperText:`First get your [Slack URL](https://slack.com/help/articles/221769328-Locate-your-Slack-URL-or-ID#find-your-url). Then use that to get your [Workspace ID](https://slack.com/help/articles/221769328-Locate-your-Slack-URL-or-ID#find-your-workspace-or-org-id).`,required:!0},{key:`SLACK_BOT_TOKEN`,label:`Bot token`,type:`password`,placeholder:`xoxb-...`,required:!0,helperText:`You'll need to create or have access to a [Slack App](https://github.com/zencoderai/slack-mcp-server#slack-bot-setup) to get a Bot token.`}]},auth:{strategy:`api_key`}}],iconBg:`#4A154B`,logoUrl:`https://cdn.jsdelivr.net/gh/OpenHands/extensions/integrations/icons/slack.svg`,keywords:[`chat`,`messaging`,`team`],installHint:`Create a Slack app with bot token scopes channels:history, channels:read, chat:write, reactions:write, users:read, and users.profile:read, then paste its bot token below.`},{id:`tavily`,name:`Tavily`,description:`Production-grade web search optimized for LLM agents. Free tier available.`,docsUrl:`https://github.com/tavily-ai/tavily-mcp`,iconBg:`#2563EB`,keywords:[`search`,`web`,`browsing`,`research`],popularityRank:90,installHint:`Paste your Tavily API key - the official tavily-mcp package runs via npx.`,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`tavily`,command:`npx`,args:[`-y`,`tavily-mcp`],envFields:[{key:`TAVILY_API_KEY`,label:`Tavily API key`,type:`password`,placeholder:`tvly-...`,required:!0,helperText:`API key from your Tavily dashboard.`,helperLink:`https://app.tavily.com/home?tab=keys`}]},auth:{strategy:`api_key`}}]},{id:`atlassian`,name:`Atlassian (Jira & Confluence)`,description:`Search Jira issues, manage tickets, and read Confluence pages from your agent.`,categories:[`Project management`,`Documentation`],appUrl:`https://www.atlassian.com`,docsUrl:`https://mcp-atlassian.soomiles.com/docs/installation`,iconBg:`#0052CC`,logoUrl:`https://cdn.simpleicons.org/atlassian/FFFFFF`,keywords:[`jira`,`confluence`,`tickets`,`wiki`,`issues`,`sprint`],popularityRank:88,installHint:`Paste your Jira and/or Confluence URL and API token. The mcp-atlassian package runs via uvx - no install needed.`,connectionOptions:[{id:`oauth`,provider:`mcp`,connectionModel:{principalType:`user`,credentialScope:`account`,resourceType:`site`,resourceCardinality:`many`,selectionMode:`post_auth`,resourceDiscovery:{endpoint:`https://api.atlassian.com/oauth/token/accessible-resources`,externalResourceIdPath:`id`,resourceNamePath:`name`,resourceUrlPath:`url`}},transport:{kind:`shttp`,url:`https://mcp.atlassian.com/v1/mcp`},auth:{strategy:`oauth2`}},{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`mcp-atlassian`,command:`uvx`,args:[`mcp-atlassian`],envFields:[{key:`JIRA_URL`,label:`Jira URL`,type:`text`,placeholder:`https://your-company.atlassian.net`,required:!1,helperText:`Your Atlassian Jira base URL. Omit if using Confluence only.`},{key:`JIRA_USERNAME`,label:`Jira username (email)`,type:`text`,placeholder:`your.email@company.com`,required:!1,helperText:`Email address linked to your Atlassian account.`},{key:`JIRA_API_TOKEN`,label:`Jira API token`,type:`password`,placeholder:`ATATT...`,required:!1,helperText:`Atlassian API token for Jira. Required when JIRA_URL is set.`,helperLink:`https://id.atlassian.com/manage-profile/security/api-tokens`},{key:`CONFLUENCE_URL`,label:`Confluence URL`,type:`text`,placeholder:`https://your-company.atlassian.net/wiki`,required:!1,helperText:`Your Atlassian Confluence base URL. Omit if using Jira only.`},{key:`CONFLUENCE_USERNAME`,label:`Confluence username (email)`,type:`text`,placeholder:`your.email@company.com`,required:!1,helperText:`Email address linked to your Atlassian account.`},{key:`CONFLUENCE_API_TOKEN`,label:`Confluence API token`,type:`password`,placeholder:`ATATT...`,required:!1,helperText:`Atlassian API token for Confluence. Required when CONFLUENCE_URL is set.`,helperLink:`https://id.atlassian.com/manage-profile/security/api-tokens`}]},auth:{strategy:`api_key`}}]},{id:`linear`,name:`Linear`,description:`Browse and update Linear issues, cycles, and projects from the agent.`,categories:[`Project management`,`Engineering`],appUrl:`https://linear.app`,docsUrl:`https://linear.app/docs/mcp`,notes:`Popular among modern product engineering teams and already useful to this repo's users.`,popularityRank:86,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://mcp.linear.app/authorize`,tokenUrl:`https://mcp.linear.app/token`,registrationUrl:`https://mcp.linear.app/register`,scopes:[`read`,`write`],pkce:!0,clientAuthentication:`none`,additionalAuthorizationParams:{resource:`https://mcp.linear.app/mcp`},additionalTokenParams:{resource:`https://mcp.linear.app/mcp`}}},transport:{kind:`shttp`,url:`https://mcp.linear.app/mcp`}},{id:`api-key`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.linear.app/mcp`,apiKeyOptional:!0},auth:{strategy:`bearer`,apiKeyOptional:!0,credentialLabel:`Linear API key`,credentialPlaceholder:`Paste your Linear API key`,credentialHelp:`Create a personal API key (grant at least read access) under Security & access in [Linear settings](https://linear.app/settings/account/security). Sent as Authorization: Bearer <token>; optional when the endpoint accepts your OAuth session.`}}],iconBg:`#5E6AD2`,logoUrl:`https://cdn.simpleicons.org/linear/FFFFFF`,keywords:[`issues`,`project management`,`tasks`,`tickets`],installHint:`Prefer the OAuth MCP connection for Linear. The MCP server supports OAuth 2.1 with dynamic client registration at mcp.linear.app; a bearer-token MCP option remains available for API-key or existing OAuth-token workflows.`},{id:`notion`,name:`Notion`,description:`Read and edit Notion pages, databases, and blocks via Notion's MCP server.`,categories:[`Knowledge base`,`Documentation`],appUrl:`https://www.notion.so`,docsUrl:`https://developers.notion.com/docs/mcp`,popularityRank:82,connectionOptions:[{id:`oauth`,provider:`http`,connectionModel:{principalType:`user`,credentialScope:`resource`,resourceType:`workspace`,resourceCardinality:`one`,selectionMode:`automatic`,identityMapping:{source:`oauth_token_response`,externalPrincipalIdPath:`owner.user.id`,externalResourceIdPath:`workspace_id`,resourceNamePath:`workspace_name`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://api.notion.com/v1/oauth/authorize`,tokenUrl:`https://api.notion.com/v1/oauth/token`,scopes:[]}},http:{apiBaseUrl:`https://api.notion.com`,openApiUrl:`https://developers.notion.com/openapi.json`}},{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`notion`,command:`npx`,args:[`-y`,`@notionhq/notion-mcp-server`],envFields:[{key:`NOTION_API_KEY`,label:`Internal integration token`,type:`password`,placeholder:`ntn_...`,required:!0,helperText:`Internal integration token from your Notion integrations page.`,helperLink:`https://www.notion.so/profile/integrations`}]},auth:{strategy:`api_key`}}],iconBg:`#FFFFFF`,logoUrl:`https://cdn.simpleicons.org/notion/000000`,iconColor:`#000000`,keywords:[`docs`,`notes`,`wiki`,`knowledge base`]},{id:`vanta`,name:`Vanta`,description:`Query Vanta compliance controls, tests, evidence, risks, and vulnerabilities from the agent.`,categories:[`Security`,`Compliance`],appUrl:`https://www.vanta.com`,docsUrl:`https://developer.vanta.com/docs/vanta-mcp`,notes:`Vanta's hosted remote MCP server (beta, requires a Vanta Admin role). Regional endpoints: US https://mcp.vanta.com/mcp, EU https://mcp.eu.vanta.com/mcp, AUS https://mcp.aus.vanta.com/mcp. Authentication is OAuth only - no API keys.`,popularityRank:64,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://app.vanta.com/oauth/authorize`,tokenUrl:`https://api.vanta.com/oauth/token`,registrationUrl:`https://api.vanta.com/oauth/register`,scopes:[`mcp-api.all:read`],optionalScopes:[`mcp-api.all:write`],pkce:!0,clientAuthentication:`none`,additionalAuthorizationParams:{resource:`https://mcp.vanta.com`},additionalTokenParams:{resource:`https://mcp.vanta.com`}}},transport:{kind:`shttp`,url:`https://mcp.vanta.com/mcp`}}],iconBg:`#003D2B`,keywords:[`compliance`,`soc2`,`security`,`audit`,`risk`,`vanta`],installHint:`Connect via the OAuth MCP option. After connecting, complete the OAuth flow in your browser as a Vanta Admin. EU tenants should use https://mcp.eu.vanta.com/mcp and AUS tenants https://mcp.aus.vanta.com/mcp as the transport URL. The legacy local server @vantasdk/vanta-mcp-server is deprecated - prefer the hosted remote server.`},{id:`ordinal`,name:`Ordinal`,description:`Social media posts, profiles, analytics, labels, approvals, and engagements.`,categories:[`Social media`,`Marketing`],appUrl:`https://app.tryordinal.com`,docsUrl:`https://docs.tryordinal.com/api/mcp`,logoUrl:`https://app.tryordinal.com/favicon.ico`,notes:`Official MCP server backed by Ordinal's API with API-key (Bearer) auth.`,popularityRank:52,connectionOptions:[{id:`api`,provider:`mcp`,auth:{strategy:`bearer`,authModes:[`bearer`],credentialLabel:`Ordinal API key`,credentialPlaceholder:`Paste your Ordinal API key`,credentialHelp:`API key from your Ordinal workspace settings, sent as a Bearer token in the Authorization header.`},transport:{kind:`shttp`,url:`https://app.tryordinal.com/api/mcp`}}]},{id:`elevenlabs`,name:`ElevenLabs`,description:`Generate speech, clone voices, and transcribe audio via ElevenLabs.`,categories:[`Audio`,`AI`],appUrl:`https://elevenlabs.io`,docsUrl:`https://elevenlabs.io/docs/api-reference/mcp`,notes:`Official API-key connector backed by ElevenLabs' published OpenAPI spec.`,popularityRank:51,connectionOptions:[{id:`api`,provider:`http`,auth:{strategy:`api_key`,authModes:[`api_key`],credentialLabel:`ElevenLabs API key`,credentialPlaceholder:`Paste your ElevenLabs API key`,credentialHelp:`Personal or workspace ElevenLabs API key sent in the xi-api-key header.`,apiKeyHeaderName:`xi-api-key`},http:{apiBaseUrl:`https://api.elevenlabs.io`,openApiUrl:`https://api.elevenlabs.io/openapi.json`}}],iconBg:`var(--oh-color-base)`,logoUrl:`https://cdn.simpleicons.org/elevenlabs/FFFFFF`,keywords:[`tts`,`speech`,`voice`,`audio`]},{id:`bitbucket`,name:`Bitbucket`,description:`Repositories, pull requests, and Atlassian engineering workflows.`,categories:[`Engineering`,`Source control`],appUrl:`https://bitbucket.org`,docsUrl:`https://developer.atlassian.com/cloud/bitbucket/oauth-2/`,notes:`Popular in Atlassian-centric teams and complements Jira/Confluence.`,popularityRank:50,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://bitbucket.org/site/oauth2/authorize`,tokenUrl:`https://bitbucket.org/site/oauth2/access_token`,scopes:[`account`,`repository`]}},http:{apiBaseUrl:`https://api.bitbucket.org/2.0`,openApiUrl:`https://developer.atlassian.com/cloud/bitbucket/swagger.v3.json`}}]},{id:`xero`,name:`Xero`,description:`Accounting, contacts, invoices, and bookkeeping workflows.`,categories:[`Finance`,`Accounting`],appUrl:`https://www.xero.com`,docsUrl:`https://developer.xero.com/documentation/guides/oauth2/overview/`,notes:`Important accounting platform in many regions.`,popularityRank:48,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://login.xero.com/identity/connect/authorize`,tokenUrl:`https://identity.xero.com/connect/token`,scopes:[`accounting.contacts.read`]}},http:{apiBaseUrl:`https://api.xero.com/api.xro/2.0`,openApiUrl:`https://api.apis.guru/v2/specs/xero.com/xero_accounting/2.9.4/openapi.json`}}]},{id:`quickbooks`,name:`QuickBooks`,description:`Accounting, invoices, customers, and financial operations via the QuickBooks Online MCP server.`,categories:[`Finance`,`Accounting`],appUrl:`https://quickbooks.intuit.com`,docsUrl:`https://github.com/intuit/quickbooks-online-mcp-server`,notes:`Official Intuit QuickBooks Online MCP server runs locally over stdio after a one-time OAuth handshake.`,popularityRank:47,iconBg:`#2CA01C`,logoUrl:`https://cdn.simpleicons.org/quickbooks/FFFFFF`,keywords:[`accounting`,`finance`,`invoices`,`qbo`],installHint:`Create an app on the Intuit Developer Portal (developer.intuit.com), complete the one-time OAuth handshake (clone intuit/quickbooks-online-mcp-server, npm install, npm run build, npm run auth), then provide your Client ID/Secret, Refresh Token, and Realm ID. The server runs over stdio via npx from the official GitHub repo.`,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`quickbooks-online`,command:`npx`,args:[`-y`,`github:intuit/quickbooks-online-mcp-server`],envFields:[{key:`QUICKBOOKS_CLIENT_ID`,label:`QuickBooks OAuth Client ID`,type:`text`,placeholder:`your-intuit-app-client-id`,required:!0,helperText:`From the Intuit Developer Portal app you created.`,helperLink:`https://developer.intuit.com/`},{key:`QUICKBOOKS_CLIENT_SECRET`,label:`QuickBooks OAuth Client Secret`,type:`password`,placeholder:`your-intuit-app-client-secret`,required:!0,helperText:`From the Intuit Developer Portal app. Stored as a secret.`,helperLink:`https://developer.intuit.com/`},{key:`QUICKBOOKS_REFRESH_TOKEN`,label:`QuickBooks Refresh Token`,type:`password`,placeholder:`your-refresh-token`,required:!0,helperText:`Obtained after the one-time OAuth handshake (npm run auth). Auto-rotates; stored as a secret.`,helperLink:`https://github.com/intuit/quickbooks-online-mcp-server#authentication`},{key:`QUICKBOOKS_REALM_ID`,label:`QuickBooks Company (Realm) ID`,type:`text`,placeholder:`your-company-id`,required:!0,helperText:`The QBO company ID to connect to.`,helperLink:`https://github.com/intuit/quickbooks-online-mcp-server#authentication`},{key:`QUICKBOOKS_ENVIRONMENT`,label:`Environment`,type:`text`,placeholder:`sandbox`,required:!1,helperText:`sandbox or production (default: sandbox).`}]},auth:{strategy:`none`}}]},{id:`okta`,name:`Okta`,description:`Identity, users, applications, and access administration.`,categories:[`Identity`,`Enterprise`],appUrl:`https://www.okta.com`,docsUrl:`https://developer.okta.com/docs/guides/implement-oauth-for-okta/main/`,notes:`High-value admin and security automation surface.`,popularityRank:42,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://{yourOktaDomain}/oauth2/v1/authorize`,tokenUrl:`https://{yourOktaDomain}/oauth2/v1/token`,scopes:[`okta.users.read`]}},http:{apiBaseUrl:`https://{yourOktaDomain}/api/v1`,openApiUrl:`https://raw.githubusercontent.com/okta/okta-sdk-java/master/src/swagger/api.yaml`}}]},{id:`netlify`,name:`Netlify`,description:`Sites, builds, deploy previews, and web operations.`,categories:[`Deployment`,`Developer tools`],appUrl:`https://www.netlify.com`,docsUrl:`https://docs.netlify.com/api/get-started/#oauth-applications`,notes:`Common alternative hosting/deployment automation target.`,popularityRank:40,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://app.netlify.com/authorize`,tokenUrl:`https://api.netlify.com/oauth/token`,scopes:[`sites:read`]}},http:{apiBaseUrl:`https://api.netlify.com/api/v1`,openApiUrl:`https://raw.githubusercontent.com/netlify/open-api/master/swagger.yml`}}]},{id:`vercel`,name:`Vercel`,description:`Deployments, projects, domains, and preview environment workflows.`,categories:[`Developer tools`,`Deployment`],appUrl:`https://vercel.com`,docsUrl:`https://vercel.com/docs/rest-api#oauth-apps`,notes:`Especially relevant to this repo's deployment model.`,popularityRank:39,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://vercel.com/oauth/authorize`,tokenUrl:`https://api.vercel.com/v2/oauth/access_token`,scopes:[`project:read`]}},http:{apiBaseUrl:`https://api.vercel.com`,openApiUrl:`https://api.apis.guru/v2/specs/vercel.com/0.0.1/openapi.json`}}]},{id:`supabase`,name:`Supabase`,description:`Query and manage your Supabase project, including database, auth, and storage.`,categories:[`Database`,`Developer tools`],appUrl:`https://supabase.com`,docsUrl:`https://supabase.com/docs/guides/getting-started/mcp`,notes:`Popular developer platform with broad automation value and a documented management-API OAuth integration flow.`,popularityRank:38,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`supabase`,command:`npx`,args:[`-y`,`@supabase/mcp-server-supabase@latest`],envFields:[{key:`SUPABASE_ACCESS_TOKEN`,label:`Supabase access token`,type:`password`,required:!0,helperText:`Personal access token from your Supabase dashboard.`,helperLink:`https://supabase.com/dashboard/account/tokens`}]},auth:{strategy:`api_key`}},{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://api.supabase.com/v1/oauth/authorize`,tokenUrl:`https://api.supabase.com/v1/oauth/token`,scopes:[]}},http:{apiBaseUrl:`https://api.supabase.com/v1`,openApiUrl:`https://raw.githubusercontent.com/supabase/supabase/master/apps/docs/spec/api_v1_openapi.json`}}],iconBg:`#3ECF8E`,logoUrl:`https://cdn.simpleicons.org/supabase/FFFFFF`,keywords:[`database`,`auth`,`storage`,`postgres`]},{id:`posthog`,name:`PostHog`,description:`Product analytics, feature flags, and session insights.`,categories:[`Analytics`,`Product`],appUrl:`https://posthog.com`,docsUrl:`https://posthog.com/docs/model-context-protocol`,notes:`Relevant for product analytics and experimentation workflows.`,popularityRank:37,iconBg:`#1D4AFF`,logoUrl:`https://cdn.simpleicons.org/posthog/FFFFFF`,keywords:[`analytics`,`feature flags`,`product`,`experiments`],installHint:`Authenticate with a PostHog personal API key (PostHog → User settings → API keys, MCP Server preset) — sent as a Bearer token.`,connectionOptions:[{id:`api-key`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.posthog.com/mcp`},auth:{strategy:`bearer`,credentialLabel:`PostHog personal API key`,credentialPlaceholder:`Paste your PostHog personal API key`,credentialHelp:`Create one under PostHog → User settings → API keys (MCP Server preset). Sent as Authorization: Bearer <token>.`}}]},{id:`sentry`,name:`Sentry`,description:`Triage issues, inspect events, and run Seer fixes against your Sentry org.`,categories:[`Observability`,`Engineering`],appUrl:`https://sentry.io`,docsUrl:`https://docs.sentry.io/product/sentry-mcp/`,notes:`Natural target for engineering support agents.`,popularityRank:36,connectionOptions:[{id:`oauth-mcp`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.sentry.dev/mcp`},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://sentry.io/oauth/authorize`,tokenUrl:`https://sentry.io/oauth/token`,scopes:[`project:read`,`event:read`,`org:read`]}}},{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://sentry.io/oauth/authorize`,tokenUrl:`https://sentry.io/oauth/token`,scopes:[`project:read`,`event:read`,`org:read`]}},http:{apiBaseUrl:`https://sentry.io/api/0`,openApiUrl:`https://raw.githubusercontent.com/getsentry/sentry/master/api-docs/openapi.json`}}],iconBg:`#362D59`,logoUrl:`https://cdn.simpleicons.org/sentry/FFFFFF`,keywords:[`errors`,`observability`,`monitoring`,`crash`]},{id:`datadog`,name:`Datadog`,description:`Logs, metrics, monitors, incidents, and observability workflows.`,categories:[`Observability`,`Operations`],appUrl:`https://www.datadoghq.com`,docsUrl:`https://docs.datadoghq.com/bits_ai/mcp_server/setup/`,notes:`Uses Datadog's official hosted MCP server. The MCP endpoint host is site-specific: use https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (e.g. mcp.us5.datadoghq.com for US5). The default URL below targets US1 and can be edited in the install dialog.`,popularityRank:35,installHint:`The Datadog MCP URL is site-specific. Edit the URL to https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (for example https://mcp.us5.datadoghq.com/v1/mcp for US5, https://mcp.eu.datadoghq.com/v1/mcp for EU). Find your site at Organization Settings → Site in Datadog.`,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://app.datadoghq.com/oauth2/v1/authorize`,tokenUrl:`https://api.datadoghq.com/oauth2/v1/token`,scopes:[`dashboards_read`,`monitors_read`]}},transport:{kind:`shttp`,url:`https://mcp.datadoghq.com/v1/mcp`}},{id:`api`,provider:`mcp`,auth:{strategy:`none`},transport:{kind:`shttp`,url:`https://mcp.datadoghq.com/v1/mcp`,urlEditable:!0,headerFields:[{key:`DD-API-KEY`,label:`Datadog API key`,type:`password`,required:!0,placeholder:`xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,helperText:`Created in Datadog under Organization Settings → API Keys. Used to authenticate to the Datadog MCP server. See the [setup docs](https://docs.datadoghq.com/mcp_server/setup/?tab=other#authentication).`},{key:`DD-APPLICATION-KEY`,label:`Datadog Application key`,type:`password`,required:!0,placeholder:`xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,helperText:`Created in Datadog under Organization Settings → Application Keys. Grants the MCP server access to your Datadog data. See the [setup docs](https://docs.datadoghq.com/mcp_server/setup/?tab=other#authentication).`}]}}]},{id:`canva`,name:`Canva`,description:`Design content, brand assets, and marketing collateral workflows.`,categories:[`Design`,`Marketing`],appUrl:`https://www.canva.com`,docsUrl:`https://www.canva.dev/docs/connect/oauth/`,notes:`Broad creator and marketing adoption with OAuth-based apps.`,popularityRank:34,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{tokenUrl:`https://api.canva.com/rest/v1/oauth/token`,scopes:[],authorizationUrl:`https://www.canva.com/api/oauth/authorize`}},http:{apiBaseUrl:`https://api.canva.com/rest/v1`,openApiUrl:`https://raw.githubusercontent.com/canva-sdks/canva-connect-api-starter-kit/main/openapi/spec.yml`}}]},{id:`miro`,name:`Miro`,description:`Whiteboards, diagrams, notes, and workshop collaboration.`,categories:[`Whiteboard`,`Collaboration`],appUrl:`https://miro.com`,docsUrl:`https://developers.miro.com/docs/mcp-intro`,notes:`Strong visual collaboration target for design and product teams.`,popularityRank:33,iconBg:`#FFD02F`,logoUrl:`https://cdn.simpleicons.org/miro/05003B`,keywords:[`whiteboard`,`collaboration`,`diagrams`,`visual`],installHint:`Connect Miro's hosted MCP server with OAuth.`,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://miro.com/oauth/authorize`,tokenUrl:`https://api.miro.com/v1/oauth/token`,scopes:[`boards:read`]}},transport:{kind:`shttp`,url:`https://mcp.miro.com/`}}]},{id:`webflow`,name:`Webflow`,description:`CMS items, sites, and web publishing workflows.`,categories:[`CMS`,`Marketing`],appUrl:`https://webflow.com`,docsUrl:`https://developers.webflow.com/mcp/reference/getting-started`,notes:`Uses Webflow's official hosted MCP server and deployment-scoped MCP OAuth registration so each user can authorize their own sites and workspaces.`,popularityRank:32,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://mcp.webflow.com/oauth/authorize`,tokenUrl:`https://mcp.webflow.com/oauth/token`,scopes:[],pkce:!0,clientAuthentication:`none`,registrationUrl:`https://mcp.webflow.com/oauth/register`}},transport:{kind:`shttp`,url:`https://mcp.webflow.com/mcp`}}]},{id:`zoom`,name:`Zoom`,description:`Meetings, recordings, webinars, and scheduling operations.`,categories:[`Meetings`,`Calendar`],appUrl:`https://zoom.us`,docsUrl:`https://developers.zoom.us/docs/integrations/oauth/`,notes:`Frequently requested for scheduling and meeting summaries.`,popularityRank:31,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://zoom.us/oauth/authorize`,tokenUrl:`https://zoom.us/oauth/token`,scopes:[`meeting:read:user`]}},http:{apiBaseUrl:`https://api.zoom.us/v2`,openApiUrl:`https://api.apis.guru/v2/specs/zoom.us/2.0.0/openapi.json`}}]},{id:`discord`,name:`Discord`,description:`Guilds, channels, messages, and community operations.`,categories:[`Communication`,`Community`],appUrl:`https://discord.com`,docsUrl:`https://discord.com/developers/docs/topics/oauth2`,notes:`Useful for community automation and bot-assisted workflows.`,popularityRank:30,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://discord.com/oauth2/authorize`,tokenUrl:`https://discord.com/api/oauth2/token`,scopes:[`identify`,`guilds`]}},http:{apiBaseUrl:`https://discord.com/api/v10`,openApiUrl:`https://raw.githubusercontent.com/discord/discord-api-spec/main/specs/openapi.json`}}]},{id:`stripe`,name:`Stripe`,description:`Query customers, payments, subscriptions, and invoices via Stripe's hosted MCP server.`,categories:[`Payments`,`Finance`],appUrl:`https://stripe.com`,docsUrl:`https://stripe.com/docs/mcp`,notes:`High-value fintech automation target with mature OAuth patterns.`,popularityRank:28,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.stripe.com/`},auth:{strategy:`bearer`,credentialLabel:`Stripe restricted key`,credentialPlaceholder:`rk_live_...`,credentialHelp:`Create a Stripe restricted key for MCP access and paste it here.`}},{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://connect.stripe.com/oauth/authorize`,tokenUrl:`https://connect.stripe.com/oauth/token`,scopes:[`read_only`]}},http:{apiBaseUrl:`https://api.stripe.com/v1`,openApiUrl:`https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json`}}],iconBg:`#635BFF`,logoUrl:`https://cdn.simpleicons.org/stripe/FFFFFF`,keywords:[`payments`,`billing`,`subscriptions`,`finance`]},{id:`intercom`,name:`Intercom`,description:`Customer support, conversations, inboxes, and CRM context.`,categories:[`Support`,`CRM`],appUrl:`https://www.intercom.com`,docsUrl:`https://developers.intercom.com/building-apps/docs/authentication-types`,notes:`Useful for customer-facing assistant workflows.`,popularityRank:27,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://app.intercom.com/oauth`,tokenUrl:`https://api.intercom.io/auth/eagle/token`,scopes:[`read_users`,`read_conversations`]}},http:{apiBaseUrl:`https://api.intercom.io`,openApiUrl:`https://raw.githubusercontent.com/intercom/Intercom-OpenAPI/main/descriptions/2.15/api.intercom.io.yaml`}}]},{id:`hubspot`,name:`HubSpot`,description:`CRM, marketing, tickets, and customer lifecycle workflows.`,categories:[`CRM`,`Marketing`],appUrl:`https://www.hubspot.com`,docsUrl:`https://developers.hubspot.com/docs/apps/developer-platform/build-apps/integrate-with-the-remote-hubspot-mcp-server`,notes:`Uses HubSpot's official remote MCP server plus MCP auth apps with PKCE.`,popularityRank:25,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,credentialHelp:`Use the client ID and secret from a HubSpot MCP auth app (Development → MCP Auth Apps). Standard HubSpot OAuth apps and private apps will not authenticate with mcp.hubspot.com.`,oauth:{authorizationUrl:`https://mcp.hubspot.com/oauth/authorize/user`,tokenUrl:`https://mcp.hubspot.com/oauth/v3/token`,scopes:[],pkce:!0,clientAuthentication:`body`}},transport:{kind:`shttp`,url:`https://mcp.hubspot.com`}}]},{id:`salesforce`,name:`Salesforce`,description:`CRM records, accounts, opportunities, and sales operations.`,categories:[`CRM`,`Sales`],appUrl:`https://www.salesforce.com`,docsUrl:`https://developer.salesforce.com/docs/platform/hosted-mcp-servers`,notes:`Very common enterprise CRM and agent-assist target.`,popularityRank:24,iconBg:`#00A1E0`,logoUrl:`https://cdn.jsdelivr.net/gh/OpenHands/extensions/integrations/icons/salesforce.svg`,keywords:[`crm`,`sales`,`records`,`enterprise`],installHint:`Activate an MCP server in Salesforce Setup (API Catalog → MCP Servers), create an External Client App, then connect. Edit the URL to match your server and org (e.g. /sandbox/ for sandboxes).`,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://login.salesforce.com/services/oauth2/authorize`,tokenUrl:`https://login.salesforce.com/services/oauth2/token`,scopes:[`refresh_token`],pkce:!0}},transport:{kind:`shttp`,url:`https://api.salesforce.com/platform/mcp/v1/platform/sobject-reads`,urlEditable:!0}}]},{id:`sharepoint`,name:`SharePoint`,description:`Sites, document libraries, lists, and intranet content.`,categories:[`Knowledge base`,`Enterprise`],appUrl:`https://www.microsoft.com/microsoft-365/sharepoint/collaboration`,docsUrl:`https://learn.microsoft.com/graph/auth-v2-user`,notes:`Frequently requested for enterprise knowledge retrieval.`,popularityRank:23,connectionOptions:[{id:`oauth`,provider:`http`,connectionModel:{principalType:`user`,credentialScope:`tenant`,resourceType:`tenant`,resourceCardinality:`one`,selectionMode:`automatic`,identityMapping:{source:`access_token_claims`,externalPrincipalIdPath:`oid`,externalTenantIdPath:`tid`,externalResourceIdPath:`tid`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/authorize`,tokenUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/token`,scopes:[`Sites.Read.All`]}},http:{apiBaseUrl:`https://graph.microsoft.com/v1.0`,openApiUrl:`https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml`}}]},{id:`onedrive`,name:`OneDrive`,description:`Cloud file access and document workflows through Microsoft Graph.`,categories:[`Storage`,`Documents`],appUrl:`https://www.microsoft.com/microsoft-365/onedrive/online-cloud-storage`,docsUrl:`https://learn.microsoft.com/graph/auth-v2-user`,notes:`Useful for enterprise file automation and search.`,popularityRank:22,connectionOptions:[{id:`oauth`,provider:`http`,connectionModel:{principalType:`user`,credentialScope:`tenant`,resourceType:`tenant`,resourceCardinality:`one`,selectionMode:`automatic`,identityMapping:{source:`access_token_claims`,externalPrincipalIdPath:`oid`,externalTenantIdPath:`tid`,externalResourceIdPath:`tid`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/authorize`,tokenUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/token`,scopes:[`Files.Read`]}},http:{apiBaseUrl:`https://graph.microsoft.com/v1.0`,openApiUrl:`https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml`}}]},{id:`microsoft-teams`,name:`Microsoft Teams`,description:`Chats, channels, meetings, and collaboration via Microsoft Graph.`,categories:[`Communication`,`Enterprise`],appUrl:`https://www.microsoft.com/microsoft-teams/group-chat-software`,docsUrl:`https://learn.microsoft.com/graph/auth-v2-user`,notes:`Common enterprise chat target alongside Outlook.`,popularityRank:21,connectionOptions:[{id:`oauth`,provider:`http`,connectionModel:{principalType:`user`,credentialScope:`tenant`,resourceType:`tenant`,resourceCardinality:`one`,selectionMode:`automatic`,identityMapping:{source:`access_token_claims`,externalPrincipalIdPath:`oid`,externalTenantIdPath:`tid`,externalResourceIdPath:`tid`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/authorize`,tokenUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/token`,scopes:[`Team.ReadBasic.All`]}},http:{apiBaseUrl:`https://graph.microsoft.com/v1.0`,openApiUrl:`https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml`}}]},{id:`microsoft-outlook`,name:`Microsoft Outlook`,description:`Mail, calendar, contacts, and meeting workflows through Microsoft Graph.`,categories:[`Email`,`Calendar`],appUrl:`https://www.microsoft.com/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook`,docsUrl:`https://learn.microsoft.com/graph/auth-v2-user`,notes:`High-value Microsoft Graph integration surface for enterprise users.`,popularityRank:20,connectionOptions:[{id:`oauth`,provider:`http`,connectionModel:{principalType:`user`,credentialScope:`tenant`,resourceType:`tenant`,resourceCardinality:`one`,selectionMode:`automatic`,identityMapping:{source:`access_token_claims`,externalPrincipalIdPath:`oid`,externalTenantIdPath:`tid`,externalResourceIdPath:`tid`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/authorize`,tokenUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/token`,scopes:[`Mail.Read`]}},http:{apiBaseUrl:`https://graph.microsoft.com/v1.0`,openApiUrl:`https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml`}}]},{id:`box`,name:`Box`,description:`Enterprise file storage, metadata, and collaboration.`,categories:[`Storage`,`Enterprise`],appUrl:`https://www.box.com`,docsUrl:`https://developer.box.com/guides/authentication/oauth2/`,notes:`Strong enterprise document-management footprint.`,popularityRank:19,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://account.box.com/api/oauth2/authorize`,tokenUrl:`https://api.box.com/oauth2/token`,scopes:[`root_readonly`,`item_read`]}},http:{apiBaseUrl:`https://api.box.com/2.0`,openApiUrl:`https://raw.githubusercontent.com/box/box-openapi/main/openapi.json`}}]},{id:`airtable`,name:`Airtable`,description:`List bases, query records, and update fields across your Airtable workspace.`,categories:[`Database`,`Operations`],appUrl:`https://airtable.com`,docsUrl:`https://github.com/domdomegg/airtable-mcp-server`,notes:`Very common internal-tools and operations automation surface.`,popularityRank:17,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`airtable`,command:`npx`,args:[`-y`,`airtable-mcp-server`],envFields:[{key:`AIRTABLE_API_KEY`,label:`Airtable personal access token`,type:`password`,required:!0,helperText:`Personal access token from your Airtable account.`,helperLink:`https://airtable.com/create/tokens`}]},auth:{strategy:`api_key`}}],iconBg:`#FCB400`,logoUrl:`https://cdn.simpleicons.org/airtable/000000`,iconColor:`var(--oh-surface-deep)`,keywords:[`spreadsheet`,`database`,`records`,`bases`]},{id:`monday`,name:`Monday.com`,description:`Boards, automations, and work management across teams.`,categories:[`Project management`,`Operations`],appUrl:`https://monday.com`,docsUrl:`https://monday.com/w/mcp`,notes:`High-demand operations platform with rich board APIs.`,popularityRank:16,iconBg:`#FF3D00`,keywords:[`project management`,`boards`,`work`,`operations`],installHint:`Connect monday.com's hosted MCP server with OAuth.`,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://auth.monday.com/oauth2/authorize`,tokenUrl:`https://auth.monday.com/oauth2/token`,scopes:[`boards:read`]}},transport:{kind:`shttp`,url:`https://mcp.monday.com/mcp`}}]},{id:`trello`,name:`Trello`,description:`Boards, cards, checklists, and lightweight project planning.`,categories:[`Project management`,`Operations`],appUrl:`https://trello.com`,docsUrl:`https://developer.atlassian.com/cloud/trello/guides/rest-api/authorization/`,notes:`Trello now uses Atlassian OAuth2 (auth.atlassian.com) for API authorization.`,popularityRank:14,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://auth.atlassian.com/authorize`,tokenUrl:`https://api.atlassian.com/oauth/token`,scopes:[`read`,`write`]}},http:{apiBaseUrl:`https://api.trello.com/1`,openApiUrl:`https://developer.atlassian.com/cloud/trello/swagger.v3.json`}}]},{id:`asana`,name:`Asana`,description:`Task management, projects, and work tracking.`,categories:[`Project management`,`Operations`],appUrl:`https://asana.com`,docsUrl:`https://developers.asana.com/docs/oauth`,notes:`Broad business adoption and straightforward OAuth app model.`,popularityRank:13,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://app.asana.com/-/oauth_authorize`,tokenUrl:`https://app.asana.com/-/oauth_token`,scopes:[`tasks:read`]}},http:{apiBaseUrl:`https://app.asana.com/api/1.0`,openApiUrl:`https://api.apis.guru/v2/specs/asana.com/1.0/openapi.json`}}]},{id:`confluence`,name:`Confluence`,description:`Wiki pages, spaces, and internal documentation search.`,categories:[`Documentation`,`Knowledge base`],appUrl:`https://www.atlassian.com/software/confluence`,docsUrl:`https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/`,notes:`Natural companion to Jira for software teams.`,popularityRank:11,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://auth.atlassian.com/authorize`,tokenUrl:`https://auth.atlassian.com/oauth/token`,scopes:[`read:page:confluence`]}},http:{apiBaseUrl:`https://api.atlassian.com/ex/confluence/{cloudId}`,openApiUrl:`https://developer.atlassian.com/cloud/confluence/swagger.v3.json`}}]},{id:`jira`,name:`Jira`,description:`Issue tracking, sprint workflows, and engineering program management.`,categories:[`Project management`,`Engineering`],appUrl:`https://www.atlassian.com/software/jira`,docsUrl:`https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/`,notes:`Very common MCP target for software teams and ticket automation.`,popularityRank:10,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://auth.atlassian.com/authorize`,tokenUrl:`https://auth.atlassian.com/oauth/token`,scopes:[`read:jira-work`]}},http:{apiBaseUrl:`https://api.atlassian.com/ex/jira/{cloudId}`,openApiUrl:`https://developer.atlassian.com/cloud/jira/platform/swagger.v3.json`}}]},{id:`google-calendar`,name:`Google Calendar`,description:`Calendar search, event scheduling, and meeting coordination.`,categories:[`Calendar`,`Scheduling`],appUrl:`https://workspace.google.com/products/calendar/`,docsUrl:`https://developers.google.com/identity/protocols/oauth2`,notes:`Strong personal productivity use case with mature OAuth flows.`,popularityRank:9,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://accounts.google.com/o/oauth2/v2/auth`,tokenUrl:`https://oauth2.googleapis.com/token`,scopes:[`https://www.googleapis.com/auth/calendar.readonly`]}},http:{apiBaseUrl:`https://www.googleapis.com/calendar/v3`,openApiUrl:`https://api.apis.guru/v2/specs/googleapis.com/calendar/v3/openapi.json`}}]},{id:`gmail`,name:`Gmail`,description:`Mailbox search, drafting, sending, and thread triage.`,categories:[`Communication`,`Email`],appUrl:`https://workspace.google.com/products/gmail/`,docsUrl:`https://developers.google.com/identity/protocols/oauth2`,notes:`Popular agent workflow target for inbox triage and drafting.`,popularityRank:8,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://accounts.google.com/o/oauth2/v2/auth`,tokenUrl:`https://oauth2.googleapis.com/token`,scopes:[`https://www.googleapis.com/auth/gmail.readonly`]}},http:{apiBaseUrl:`https://gmail.googleapis.com`,openApiUrl:`https://api.apis.guru/v2/specs/googleapis.com/gmail/v1/openapi.json`}}]},{id:`google-sheets`,name:`Google Sheets`,description:`Spreadsheet reads, writes, formulas, and reporting workflows.`,categories:[`Spreadsheets`,`Analytics`],appUrl:`https://workspace.google.com/products/sheets/`,docsUrl:`https://developers.google.com/identity/protocols/oauth2`,notes:`High-value automation surface for agent-driven reporting and structured edits.`,popularityRank:7,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://accounts.google.com/o/oauth2/v2/auth`,tokenUrl:`https://oauth2.googleapis.com/token`,scopes:[`https://www.googleapis.com/auth/spreadsheets.readonly`]}},http:{apiBaseUrl:`https://sheets.googleapis.com`,openApiUrl:`https://api.apis.guru/v2/specs/googleapis.com/sheets/v4/openapi.json`}}]},{id:`google-drive`,name:`Google Drive`,description:`File search, metadata, folders, and document discovery.`,categories:[`Storage`,`Documents`],appUrl:`https://workspace.google.com/products/drive/`,docsUrl:`https://developers.google.com/identity/protocols/oauth2`,notes:`Natural expansion of the Google Workspace surface beyond Google Docs.`,popularityRank:6,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://accounts.google.com/o/oauth2/v2/auth`,tokenUrl:`https://oauth2.googleapis.com/token`,scopes:[`https://www.googleapis.com/auth/drive.metadata.readonly`]}},http:{apiBaseUrl:`https://www.googleapis.com/drive/v3`,openApiUrl:`https://api.apis.guru/v2/specs/googleapis.com/drive/v3/openapi.json`}}]},{id:`figma`,name:`Figma`,description:`Read Figma frames, components, and styles to ground UI work in your designs.`,categories:[`Design`,`Frontend`],appUrl:`https://www.figma.com`,docsUrl:`https://github.com/GLips/Figma-Context-MCP`,popularityRank:5,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`figma`,command:`npx`,args:[`-y`,`figma-developer-mcp`,`--stdio`],envFields:[{key:`FIGMA_API_KEY`,label:`Figma personal access token`,type:`password`,required:!0,helperText:`Personal access token from your Figma account settings.`,helperLink:`https://developers.figma.com/docs/rest-api/authentication/#personal-access-tokens`}]},auth:{strategy:`api_key`}},{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://www.figma.com/oauth`,tokenUrl:`https://api.figma.com/v1/oauth/token`,scopes:[`current_user:read`,`file_content:read`,`file_metadata:read`,`projects:read`]}},http:{apiBaseUrl:`https://api.figma.com`,openApiUrl:`https://raw.githubusercontent.com/figma/rest-api-spec/main/openapi/openapi.yaml`}}],iconBg:`var(--oh-surface)`,logoUrl:`https://cdn.simpleicons.org/figma/FFFFFF`,keywords:[`design`,`ui`,`frames`,`components`]},{id:`google-docs`,name:`Google Docs`,description:`Docs authoring and Google Workspace document automation.`,categories:[`Documents`,`Knowledge base`],appUrl:`https://workspace.google.com/products/docs/`,docsUrl:`https://developers.google.com/identity/protocols/oauth2`,notes:`Current managed connector accepts a Google access token manually; a full OAuth connect flow can remove token copy/paste.`,popularityRank:2,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://accounts.google.com/o/oauth2/v2/auth`,tokenUrl:`https://oauth2.googleapis.com/token`,scopes:[`https://www.googleapis.com/auth/documents.readonly`]}},http:{apiBaseUrl:`https://docs.googleapis.com`,openApiUrl:`https://api.apis.guru/v2/specs/googleapis.com/docs/v1/openapi.json`}}]},{id:`apify`,name:`Apify Actors`,description:`Run any of Apify's 5,000+ Actors (scrapers, automations) from the agent.`,docsUrl:`https://docs.apify.com/platform/integrations/mcp`,iconBg:`#10b981`,keywords:[`scraping`,`automation`,`crawl`,`actors`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`apify`,command:`npx`,args:[`-y`,`@apify/actors-mcp-server`],envFields:[{key:`APIFY_TOKEN`,label:`Apify token`,type:`password`,required:!0,helperText:`API token from your Apify account settings.`,helperLink:`https://console.apify.com/account/integrations`}]},auth:{strategy:`api_key`}}]},{id:`atlassian-rovo`,name:`Atlassian Rovo`,description:`Search, create, and update Jira issues, Confluence pages, Bitbucket repos, and Jira Service Management tickets - all through Atlassian's official hosted MCP server, powered by your Teamwork Graph.`,categories:[`Project management`,`Documentation`,`Engineering`],appUrl:`https://www.atlassian.com/rovo`,docsUrl:`https://support.atlassian.com/atlassian-rovo-mcp-server/docs/getting-started-with-the-atlassian-remote-mcp-server/`,notes:`OAuth 2.1 is handled entirely by the Atlassian Rovo MCP server. No client credentials required - sign in with your Atlassian account when the authentication flow starts.`,iconBg:`#0052CC`,logoUrl:`https://cdn.simpleicons.org/atlassian/FFFFFF`,keywords:[`atlassian`,`rovo`,`jira`,`confluence`,`bitbucket`,`jsm`,`tickets`,`wiki`,`issues`,`sprint`,`mcp`],connectionOptions:[{id:`oauth`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.atlassian.com/v1/mcp/authv2`},auth:{strategy:`oauth2`,oauth:{clientAuthentication:`none`}}}]},{id:`brave-search`,name:`Brave Search`,description:`Privacy-first web and local search using the Brave Search API.`,docsUrl:`https://github.com/brave/brave-search-mcp-server`,iconBg:`#FB542B`,logoUrl:`https://cdn.simpleicons.org/brave/FFFFFF`,keywords:[`search`,`web`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`brave_search`,command:`npx`,args:[`-y`,`@brave/brave-search-mcp-server`,`--transport`,`stdio`],envFields:[{key:`BRAVE_API_KEY`,label:`Brave API key`,type:`password`,required:!0,helperText:`API key from the Brave Search API portal.`,helperLink:`https://api-dashboard.search.brave.com/app/keys`}]},auth:{strategy:`api_key`}}]},{id:`browser-mcp`,name:`Browser MCP`,description:`Control your local browser tab — navigate, click, type, and read DOM contents.`,docsUrl:`https://browsermcp.io/`,iconBg:`#0EA5E9`,keywords:[`browser`,`automation`,`chrome`,`playwright`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`stdio`,serverName:`browser_mcp`,command:`npx`,args:[`-y`,`@browsermcp/mcp`]},auth:{strategy:`none`}}]},{id:`clickhouse`,name:`ClickHouse`,description:`Run analytical SQL queries against a ClickHouse cluster.`,docsUrl:`https://github.com/ClickHouse/mcp-clickhouse`,iconBg:`#FFFF00`,logoUrl:`https://cdn.simpleicons.org/clickhouse/000000`,iconColor:`var(--oh-surface-deep)`,keywords:[`analytics`,`olap`,`database`,`sql`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`clickhouse`,command:`uvx`,args:[`mcp-clickhouse`],envFields:[{key:`CLICKHOUSE_HOST`,label:`Host`,type:`text`,placeholder:`clickhouse.example.com`,required:!0},{key:`CLICKHOUSE_USER`,label:`Username`,type:`text`,required:!0},{key:`CLICKHOUSE_PASSWORD`,label:`Password`,type:`password`,required:!0,helperText:`Password for your ClickHouse user.`,helperLink:`https://clickhouse.com/docs/operations/access-rights`}]},auth:{strategy:`api_key`}}]},{id:`cloudflare-bindings`,name:`Cloudflare Workers Bindings`,description:`Inspect and manage KV, D1, R2, and Durable Object bindings on your Cloudflare account.`,docsUrl:`https://developers.cloudflare.com/agents/model-context-protocol/`,iconBg:`#F38020`,logoUrl:`https://cdn.simpleicons.org/cloudflare/FFFFFF`,keywords:[`cloudflare`,`workers`,`kv`,`d1`,`r2`,`durable objects`],connectionOptions:[{id:`oauth`,provider:`mcp`,transport:{kind:`shttp`,url:`https://bindings.mcp.cloudflare.com/mcp`},auth:{strategy:`oauth2`}}]},{id:`cloudflare-browser-rendering`,name:`Cloudflare Browser Rendering`,description:`Fetch and screenshot pages using Cloudflare's hosted browser rendering.`,docsUrl:`https://developers.cloudflare.com/agents/model-context-protocol/`,iconBg:`#F38020`,logoUrl:`https://cdn.simpleicons.org/cloudflare/FFFFFF`,keywords:[`cloudflare`,`browser`,`rendering`,`screenshots`],connectionOptions:[{id:`oauth`,provider:`mcp`,transport:{kind:`shttp`,url:`https://browser.mcp.cloudflare.com/mcp`},auth:{strategy:`oauth2`}}]},{id:`cloudflare-builds`,name:`Cloudflare Builds`,description:`Inspect Workers Builds — logs, statuses, and rerun failed deploys.`,docsUrl:`https://developers.cloudflare.com/agents/model-context-protocol/`,iconBg:`#F38020`,logoUrl:`https://cdn.simpleicons.org/cloudflare/FFFFFF`,keywords:[`cloudflare`,`workers`,`ci`,`builds`,`deploys`],connectionOptions:[{id:`oauth`,provider:`mcp`,transport:{kind:`shttp`,url:`https://builds.mcp.cloudflare.com/mcp`},auth:{strategy:`oauth2`}}]},{id:`cloudflare-docs`,name:`Cloudflare Docs`,description:`Search and reference Cloudflare's developer documentation directly from the agent.`,docsUrl:`https://developers.cloudflare.com/agents/model-context-protocol/`,iconBg:`#F38020`,logoUrl:`https://cdn.simpleicons.org/cloudflare/FFFFFF`,keywords:[`cloudflare`,`docs`,`reference`,`workers`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`shttp`,url:`https://docs.mcp.cloudflare.com/mcp`},auth:{strategy:`none`}}]},{id:`cloudflare-observability`,name:`Cloudflare Observability`,description:`Tail Workers logs and query observability data from your Cloudflare account.`,docsUrl:`https://developers.cloudflare.com/agents/model-context-protocol/`,iconBg:`#F38020`,logoUrl:`https://cdn.simpleicons.org/cloudflare/FFFFFF`,keywords:[`cloudflare`,`logs`,`tail`,`observability`,`workers`],connectionOptions:[{id:`oauth`,provider:`mcp`,transport:{kind:`shttp`,url:`https://observability.mcp.cloudflare.com/mcp`},auth:{strategy:`oauth2`}}]},{id:`deepwiki`,name:`DeepWiki`,description:`Ask grounded questions about any public GitHub repository via Devin's DeepWiki MCP.`,docsUrl:`https://docs.devin.ai/work-with-devin/deepwiki-mcp`,iconBg:`var(--oh-color-base)`,keywords:[`devin`,`code`,`wiki`,`github`,`docs`,`qa`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.deepwiki.com/mcp`},auth:{strategy:`none`}}]},{id:`everything`,name:`Everything (demo)`,description:`Reference server exercising every MCP capability — useful for testing.`,docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/everything`,iconBg:`#6366F1`,keywords:[`demo`,`test`,`reference`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`stdio`,serverName:`everything`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-everything`]},auth:{strategy:`none`}}]},{id:`exa`,name:`Exa`,description:`Neural web search with semantic ranking, content extraction, and similar-page lookup.`,docsUrl:`https://docs.exa.ai/reference/exa-mcp`,iconBg:`var(--oh-surface)`,keywords:[`search`,`web`,`research`,`neural`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`exa`,command:`npx`,args:[`-y`,`exa-mcp-server`],envFields:[{key:`EXA_API_KEY`,label:`Exa API key`,type:`password`,required:!0,helperText:`API key from your Exa account.`,helperLink:`https://exa.ai/docs/reference/getting-started`}]},auth:{strategy:`api_key`}}]},{id:`fetch`,name:`Fetch`,description:`Plain HTTP fetcher: download a URL and convert HTML to readable markdown.`,docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/fetch`,iconBg:`var(--oh-interactive-hover)`,keywords:[`http`,`web`,`url`,`scrape`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`stdio`,serverName:`fetch`,command:`uvx`,args:[`mcp-server-fetch`]},auth:{strategy:`none`}}]},{id:`filesystem`,name:`Filesystem`,description:`Give the agent secure, scoped filesystem access outside the workspace.`,docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem`,iconBg:`var(--oh-interactive-hover)`,keywords:[`files`,`local`,`disk`],installHint:`Each path is exposed read/write. Add as many as you need, separated by spaces.`,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`filesystem`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-filesystem`],argFields:[{key:`paths`,label:`Paths (space separated)`,type:`text`,placeholder:`/Users/me/Documents /Users/me/Projects`,required:!0,helperText:`Each whitespace-separated token is appended as its own argument.`}]},auth:{strategy:`api_key`}}]},{id:`firecrawl`,name:`Firecrawl`,description:`Crawl any site and return clean markdown, structured data, or screenshots.`,docsUrl:`https://docs.firecrawl.dev/mcp`,iconBg:`#F97316`,keywords:[`scraping`,`crawl`,`web`,`markdown`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`firecrawl`,command:`npx`,args:[`-y`,`firecrawl-mcp`],envFields:[{key:`FIRECRAWL_API_KEY`,label:`Firecrawl API key`,type:`password`,required:!0,helperText:`API key from your Firecrawl dashboard.`,helperLink:`https://www.firecrawl.dev/app/api-keys`}]},auth:{strategy:`api_key`}}]},{id:`git`,name:`Git`,description:`Local git repository operations: log, diff, blame, status, and more.`,docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/git`,iconBg:`#F1502F`,keywords:[`version control`,`log`,`diff`,`blame`],installHint:`Runs the official Python server via uvx — no setup beyond the path.`,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`git`,command:`uvx`,args:[`mcp-server-git`,`--repository`],argFields:[{key:`repo_path`,label:`Repository path`,type:`text`,placeholder:`/Users/me/code/my-repo`,required:!0,helperText:`Appended as --repository <path>.`}]},auth:{strategy:`api_key`}}]},{id:`huggingface`,name:`Hugging Face`,description:`Search models, datasets, and Spaces on the Hugging Face Hub from your agent.`,docsUrl:`https://huggingface.co/docs/huggingface_hub/en/guides/mcp`,iconBg:`#FFD21E`,logoUrl:`https://cdn.simpleicons.org/huggingface/000000`,iconColor:`#000000`,keywords:[`ml`,`models`,`datasets`,`ai`,`hub`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`shttp`,url:`https://huggingface.co/mcp`,apiKeyOptional:!0},auth:{strategy:`none`,apiKeyOptional:!0}}]},{id:`kagi`,name:`Kagi Search`,description:`Paid, privacy-first search with high signal-to-noise — great for research.`,docsUrl:`https://github.com/kagisearch/kagimcp`,iconBg:`#FFB319`,logoUrl:`https://cdn.simpleicons.org/kagi/000000`,iconColor:`var(--oh-surface-deep)`,keywords:[`search`,`web`,`privacy`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`kagi`,command:`uvx`,args:[`kagimcp`],envFields:[{key:`KAGI_API_KEY`,label:`Kagi API key`,type:`password`,required:!0,helperText:`API key from your Kagi account settings.`,helperLink:`https://kagi.com/settings?p=api`}]},auth:{strategy:`api_key`}}]},{id:`memory`,name:`Memory`,description:`Persistent key-value memory for the agent across conversations.`,docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/memory`,iconBg:`#7C3AED`,keywords:[`memory`,`kv`,`state`,`persistence`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`stdio`,serverName:`memory`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-memory`]},auth:{strategy:`none`}}]},{id:`mongodb`,name:`MongoDB`,description:`Query MongoDB collections, inspect schemas, and run aggregation pipelines.`,docsUrl:`https://www.mongodb.com/docs/mcp-server/`,iconBg:`#00684A`,logoUrl:`https://cdn.simpleicons.org/mongodb/FFFFFF`,keywords:[`database`,`nosql`,`atlas`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`mongodb`,command:`npx`,args:[`-y`,`mongodb-mcp-server`],envFields:[{key:`MDB_MCP_CONNECTION_STRING`,label:`MongoDB connection string`,type:`password`,placeholder:`mongodb+srv://user:pass@cluster.mongodb.net`,required:!0,helperText:`Connection string from your MongoDB Atlas cluster.`,helperLink:`https://www.mongodb.com/docs/atlas/connect-to-database-deployment/#connect-with-a-connection-string`}]},auth:{strategy:`api_key`}}]},{id:`neon`,name:`Neon`,description:`Serverless Postgres: list projects, run queries, manage branches.`,docsUrl:`https://neon.com/docs/ai/neon-mcp-server`,iconBg:`#00E599`,iconColor:`var(--oh-surface-deep)`,keywords:[`database`,`postgres`,`serverless`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`neon`,command:`npx`,args:[`-y`,`@neondatabase/mcp-server-neon`,`start`],envFields:[{key:`NEON_API_KEY`,label:`Neon API key`,type:`password`,required:!0,helperText:`API key from your Neon account settings.`,helperLink:`https://neon.tech/docs/manage/api-keys`}]},auth:{strategy:`api_key`}}]},{id:`obsidian`,name:`Obsidian`,description:`Read and edit Markdown notes inside an Obsidian vault on the local disk.`,docsUrl:`https://github.com/MarkusPfundstein/mcp-obsidian`,iconBg:`#7C3AED`,logoUrl:`https://cdn.simpleicons.org/obsidian/FFFFFF`,keywords:[`notes`,`knowledge`,`markdown`,`vault`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`obsidian`,command:`uvx`,args:[`mcp-obsidian`],envFields:[{key:`OBSIDIAN_API_KEY`,label:`Local REST API key`,type:`password`,required:!0,helperText:`From the Obsidian 'Local REST API' community plugin.`,helperLink:`https://github.com/coddingtonbear/obsidian-local-rest-api`}]},auth:{strategy:`api_key`}}]},{id:`paypal`,name:`PayPal`,description:`Manage transactions and merchant data via PayPal's MCP server.`,docsUrl:`https://developer.paypal.com/tools/mcp-server/`,iconBg:`#003087`,logoUrl:`https://cdn.simpleicons.org/paypal/FFFFFF`,keywords:[`payments`,`billing`,`finance`],connectionOptions:[{id:`oauth`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.paypal.com/mcp`},auth:{strategy:`oauth2`}}]},{id:`playwright`,name:`Playwright`,description:`Headless-browser automation backed by Microsoft Playwright.`,docsUrl:`https://github.com/microsoft/playwright-mcp`,iconBg:`#2EAD33`,keywords:[`browser`,`automation`,`e2e`,`testing`,`scrape`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`stdio`,serverName:`playwright`,command:`npx`,args:[`-y`,`@playwright/mcp`]},auth:{strategy:`none`}}]},{id:`redis`,name:`Redis`,description:`Get, set, scan, and inspect data on a Redis or Redis-compatible instance.`,docsUrl:`https://github.com/redis/mcp-redis`,iconBg:`#DC382D`,logoUrl:`https://cdn.simpleicons.org/redis/FFFFFF`,keywords:[`cache`,`kv`,`database`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`redis`,command:`uvx`,args:[`--from`,`redis-mcp-server@latest`,`redis-mcp-server`,`--url`],argFields:[{key:`redis_url`,label:`Redis URL`,type:`password`,placeholder:`redis://localhost:6379`,required:!0,helperText:`Connection URL for your Redis instance. Appended as --url <redis_url>.`,helperLink:`https://redis.io/docs/latest/operate/rc/databases/connect/`}]},auth:{strategy:`api_key`}}]},{id:`resend`,name:`Resend`,description:`Send transactional and marketing emails via the Resend API.`,docsUrl:`https://resend.com/docs/mcp`,iconBg:`var(--oh-surface-deep)`,logoUrl:`https://cdn.simpleicons.org/resend/FFFFFF`,keywords:[`email`,`transactional`,`smtp`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`resend`,command:`npx`,args:[`-y`,`mcp-send-email`],envFields:[{key:`RESEND_API_KEY`,label:`Resend API key`,type:`password`,required:!0,helperText:`API key from your Resend dashboard.`,helperLink:`https://resend.com/api-keys`},{key:`SENDER_EMAIL_ADDRESS`,label:`From address`,type:`text`,placeholder:`you@example.com`,required:!0}]},auth:{strategy:`api_key`}}]},{id:`sequential-thinking`,name:`Sequential Thinking`,description:`Lets the agent emit and revise a chain of structured thoughts.`,docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/sequentialthinking`,iconBg:`var(--oh-color-base)`,keywords:[`reasoning`,`planning`,`thoughts`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`stdio`,serverName:`sequential_thinking`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-sequential-thinking`]},auth:{strategy:`none`}}]},{id:`superhuman-mail`,name:`Superhuman Mail`,description:`Search, read, draft, and send email via Superhuman's hosted MCP server.`,categories:[`Communication`,`Email`],appUrl:`https://superhuman.com`,docsUrl:`https://github.com/superhuman/mcp-mail`,notes:`OAuth is handled by the Superhuman MCP server itself (mcp-remote). No client credentials required.`,connectionOptions:[{id:`oauth`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.mail.superhuman.com/mcp`},auth:{strategy:`oauth2`,oauth:{clientAuthentication:`none`}}}],iconBg:`#FF5C28`,logoUrl:`https://cdn.simpleicons.org/superhuman/FFFFFF`,keywords:[`email`,`mail`,`superhuman`,`inbox`]},{id:`time`,name:`Time`,description:`Timezone-aware current time, conversions, and timestamp formatting.`,docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/time`,iconBg:`var(--oh-surface)`,keywords:[`clock`,`timezone`,`date`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`stdio`,serverName:`time`,command:`uvx`,args:[`mcp-server-time`]},auth:{strategy:`none`}}]}],r=e=>JSON.parse(JSON.stringify(e)),i=n;new Map(i.map(e=>[e.id,e]));var a=r(i);export{t as n,a as t};
|
|
1
|
+
import{E as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-CYPMCkX1.js";var t=e(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),n=[{id:`github`,name:`GitHub`,description:`Search code, manage issues and pull requests, and inspect repos via the GitHub API.`,categories:[`Engineering`,`Source control`],appUrl:`https://github.com`,docsUrl:`https://github.com/github/github-mcp-server`,notes:`Current managed connector works with bearer tokens today; GitHub OAuth is a strong candidate for a future one-click connect flow.`,popularityRank:100,connectionOptions:[{id:`oauth`,provider:`mcp`,connectionModel:{principalType:`user`,credentialScope:`account`,resourceType:`organization`,resourceCardinality:`many`,selectionMode:`post_auth`,identityMapping:{source:`identity_api`,endpoint:`https://api.github.com/user`,externalPrincipalIdPath:`id`,resourceNamePath:`login`,resourceUrlPath:`html_url`},resourceDiscovery:{endpoint:`https://api.github.com/user/orgs`,externalResourceIdPath:`id`,resourceNamePath:`login`,resourceUrlPath:`html_url`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://github.com/login/oauth/authorize`,tokenUrl:`https://github.com/login/oauth/access_token`,scopes:[`read:user`,`repo`]}},transport:{kind:`shttp`,url:`https://api.githubcopilot.com/mcp/`}},{id:`api`,provider:`mcp`,transport:{kind:`shttp`,url:`https://api.githubcopilot.com/mcp/`},auth:{strategy:`api_key`,credentialLabel:`Personal access token`,credentialPlaceholder:`github_pat_...`,credentialHelp:`Create a token in [GitHub settings](https://github.com/settings/personal-access-tokens): classic tokens need the repo and read:user scopes; fine-grained tokens need read access to Contents, Issues, and Pull requests for the repositories you use.`,credentialSecretName:`GITHUB_PERSONAL_ACCESS_TOKEN`,saveCredentialAsSecretByDefault:!0}}],iconBg:`var(--oh-surface)`,logoUrl:`https://cdn.simpleicons.org/github/FFFFFF`,keywords:[`git`,`pr`,`repo`,`issues`,`code`]},{id:`slack`,name:`Slack`,description:`Read channels, post messages, and search workspace history from your agent.`,categories:[`Communication`,`Operations`],appUrl:`https://slack.com`,docsUrl:`https://github.com/zencoderai/slack-mcp-server`,notes:`The OAuth option uses Slack's official hosted MCP server (confidential OAuth user-token auth); the local option runs the open-source zencoderai stdio server with a bot token.`,popularityRank:95,connectionOptions:[{id:`oauth`,provider:`mcp`,connectionModel:{principalType:`user`,credentialScope:`resource`,resourceType:`workspace`,resourceCardinality:`one`,selectionMode:`automatic`,identityMapping:{source:`oauth_token_response`,externalPrincipalIdPath:`authed_user.id`,externalTenantIdPath:`enterprise.id`,externalResourceIdPath:`team.id`,resourceNamePath:`team.name`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://slack.com/oauth/v2_user/authorize`,tokenUrl:`https://slack.com/api/oauth.v2.user.access`,scopes:[`search:read.public`,`search:read.private`,`search:read.mpim`,`search:read.im`,`search:read.files`,`search:read.users`,`chat:write`,`channels:history`,`groups:history`,`mpim:history`,`im:history`,`canvases:read`,`canvases:write`,`users:read`,`users:read.email`],pkce:!0,clientAuthentication:`body`}},transport:{kind:`shttp`,url:`https://mcp.slack.com/mcp`}},{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`slack`,command:`npx`,args:[`-y`,`@zencoderai/slack-mcp-server`],envFields:[{key:`SLACK_TEAM_ID`,label:`Team / Workspace ID`,type:`text`,placeholder:`T01234567`,helperText:`First get your [Slack URL](https://slack.com/help/articles/221769328-Locate-your-Slack-URL-or-ID#find-your-url). Then use that to get your [Workspace ID](https://slack.com/help/articles/221769328-Locate-your-Slack-URL-or-ID#find-your-workspace-or-org-id).`,required:!0},{key:`SLACK_BOT_TOKEN`,label:`Bot token`,type:`password`,placeholder:`xoxb-...`,required:!0,helperText:`You'll need to create or have access to a [Slack App](https://github.com/zencoderai/slack-mcp-server#slack-bot-setup) to get a Bot token.`}]},auth:{strategy:`api_key`}}],iconBg:`#4A154B`,logoUrl:`https://cdn.jsdelivr.net/gh/OpenHands/extensions/integrations/icons/slack.svg`,keywords:[`chat`,`messaging`,`team`],installHint:`Create a Slack app with bot token scopes channels:history, channels:read, chat:write, reactions:write, users:read, and users.profile:read, then paste its bot token below.`},{id:`tavily`,name:`Tavily`,description:`Production-grade web search optimized for LLM agents. Free tier available.`,docsUrl:`https://github.com/tavily-ai/tavily-mcp`,iconBg:`#2563EB`,keywords:[`search`,`web`,`browsing`,`research`],popularityRank:90,installHint:`Paste your Tavily API key - the official tavily-mcp package runs via npx.`,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`tavily`,command:`npx`,args:[`-y`,`tavily-mcp`],envFields:[{key:`TAVILY_API_KEY`,label:`Tavily API key`,type:`password`,placeholder:`tvly-...`,required:!0,helperText:`API key from your Tavily dashboard.`,helperLink:`https://app.tavily.com/home?tab=keys`}]},auth:{strategy:`api_key`}}]},{id:`atlassian`,name:`Atlassian (Jira & Confluence)`,description:`Search Jira issues, manage tickets, and read Confluence pages from your agent.`,categories:[`Project management`,`Documentation`],appUrl:`https://www.atlassian.com`,docsUrl:`https://mcp-atlassian.soomiles.com/docs/installation`,iconBg:`#0052CC`,logoUrl:`https://cdn.simpleicons.org/atlassian/FFFFFF`,keywords:[`jira`,`confluence`,`tickets`,`wiki`,`issues`,`sprint`],popularityRank:88,installHint:`Paste your Jira and/or Confluence URL and API token. The mcp-atlassian package runs via uvx - no install needed.`,connectionOptions:[{id:`oauth`,provider:`mcp`,connectionModel:{principalType:`user`,credentialScope:`account`,resourceType:`site`,resourceCardinality:`many`,selectionMode:`post_auth`,resourceDiscovery:{endpoint:`https://api.atlassian.com/oauth/token/accessible-resources`,externalResourceIdPath:`id`,resourceNamePath:`name`,resourceUrlPath:`url`}},transport:{kind:`shttp`,url:`https://mcp.atlassian.com/v1/mcp`},auth:{strategy:`oauth2`}},{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`mcp-atlassian`,command:`uvx`,args:[`mcp-atlassian`],envFields:[{key:`JIRA_URL`,label:`Jira URL`,type:`text`,placeholder:`https://your-company.atlassian.net`,required:!1,helperText:`Your Atlassian Jira base URL. Omit if using Confluence only.`},{key:`JIRA_USERNAME`,label:`Jira username (email)`,type:`text`,placeholder:`your.email@company.com`,required:!1,helperText:`Email address linked to your Atlassian account.`},{key:`JIRA_API_TOKEN`,label:`Jira API token`,type:`password`,placeholder:`ATATT...`,required:!1,helperText:`Atlassian API token for Jira. Required when JIRA_URL is set.`,helperLink:`https://id.atlassian.com/manage-profile/security/api-tokens`},{key:`CONFLUENCE_URL`,label:`Confluence URL`,type:`text`,placeholder:`https://your-company.atlassian.net/wiki`,required:!1,helperText:`Your Atlassian Confluence base URL. Omit if using Jira only.`},{key:`CONFLUENCE_USERNAME`,label:`Confluence username (email)`,type:`text`,placeholder:`your.email@company.com`,required:!1,helperText:`Email address linked to your Atlassian account.`},{key:`CONFLUENCE_API_TOKEN`,label:`Confluence API token`,type:`password`,placeholder:`ATATT...`,required:!1,helperText:`Atlassian API token for Confluence. Required when CONFLUENCE_URL is set.`,helperLink:`https://id.atlassian.com/manage-profile/security/api-tokens`}]},auth:{strategy:`api_key`}}]},{id:`linear`,name:`Linear`,description:`Browse and update Linear issues, cycles, and projects from the agent.`,categories:[`Project management`,`Engineering`],appUrl:`https://linear.app`,docsUrl:`https://linear.app/docs/mcp`,notes:`Popular among modern product engineering teams and already useful to this repo's users.`,popularityRank:86,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://mcp.linear.app/authorize`,tokenUrl:`https://mcp.linear.app/token`,registrationUrl:`https://mcp.linear.app/register`,scopes:[`read`,`write`],pkce:!0,clientAuthentication:`none`,additionalAuthorizationParams:{resource:`https://mcp.linear.app/mcp`},additionalTokenParams:{resource:`https://mcp.linear.app/mcp`}}},transport:{kind:`shttp`,url:`https://mcp.linear.app/mcp`}},{id:`api-key`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.linear.app/mcp`,apiKeyOptional:!0},auth:{strategy:`bearer`,apiKeyOptional:!0,credentialLabel:`Linear API key`,credentialPlaceholder:`Paste your Linear API key`,credentialHelp:`Create a personal API key (grant at least read access) under Security & access in [Linear settings](https://linear.app/settings/account/security). Sent as Authorization: Bearer <token>; optional when the endpoint accepts your OAuth session.`}}],iconBg:`#5E6AD2`,logoUrl:`https://cdn.simpleicons.org/linear/FFFFFF`,keywords:[`issues`,`project management`,`tasks`,`tickets`],installHint:`Prefer the OAuth MCP connection for Linear. The MCP server supports OAuth 2.1 with dynamic client registration at mcp.linear.app; a bearer-token MCP option remains available for API-key or existing OAuth-token workflows.`},{id:`notion`,name:`Notion`,description:`Read and edit Notion pages, databases, and blocks via Notion's MCP server.`,categories:[`Knowledge base`,`Documentation`],appUrl:`https://www.notion.so`,docsUrl:`https://developers.notion.com/docs/mcp`,popularityRank:82,connectionOptions:[{id:`oauth`,provider:`http`,connectionModel:{principalType:`user`,credentialScope:`resource`,resourceType:`workspace`,resourceCardinality:`one`,selectionMode:`automatic`,identityMapping:{source:`oauth_token_response`,externalPrincipalIdPath:`owner.user.id`,externalResourceIdPath:`workspace_id`,resourceNamePath:`workspace_name`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://api.notion.com/v1/oauth/authorize`,tokenUrl:`https://api.notion.com/v1/oauth/token`,scopes:[]}},http:{apiBaseUrl:`https://api.notion.com`,openApiUrl:`https://developers.notion.com/openapi.json`}},{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`notion`,command:`npx`,args:[`-y`,`@notionhq/notion-mcp-server`],envFields:[{key:`NOTION_API_KEY`,label:`Internal integration token`,type:`password`,placeholder:`ntn_...`,required:!0,helperText:`Internal integration token from your Notion integrations page.`,helperLink:`https://www.notion.so/profile/integrations`}]},auth:{strategy:`api_key`}}],iconBg:`#FFFFFF`,logoUrl:`https://cdn.simpleicons.org/notion/000000`,iconColor:`#000000`,keywords:[`docs`,`notes`,`wiki`,`knowledge base`]},{id:`vanta`,name:`Vanta`,description:`Query Vanta compliance controls, tests, evidence, risks, and vulnerabilities from the agent.`,categories:[`Security`,`Compliance`],appUrl:`https://www.vanta.com`,docsUrl:`https://developer.vanta.com/docs/vanta-mcp`,notes:`Vanta's hosted remote MCP server (beta, requires a Vanta Admin role). Regional endpoints: US https://mcp.vanta.com/mcp, EU https://mcp.eu.vanta.com/mcp, AUS https://mcp.aus.vanta.com/mcp. Authentication is OAuth only - no API keys.`,popularityRank:64,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://app.vanta.com/oauth/authorize`,tokenUrl:`https://api.vanta.com/oauth/token`,registrationUrl:`https://api.vanta.com/oauth/register`,scopes:[`mcp-api.all:read`],optionalScopes:[`mcp-api.all:write`],pkce:!0,clientAuthentication:`none`,additionalAuthorizationParams:{resource:`https://mcp.vanta.com`},additionalTokenParams:{resource:`https://mcp.vanta.com`}}},transport:{kind:`shttp`,url:`https://mcp.vanta.com/mcp`}}],iconBg:`#003D2B`,keywords:[`compliance`,`soc2`,`security`,`audit`,`risk`,`vanta`],installHint:`Connect via the OAuth MCP option. After connecting, complete the OAuth flow in your browser as a Vanta Admin. EU tenants should use https://mcp.eu.vanta.com/mcp and AUS tenants https://mcp.aus.vanta.com/mcp as the transport URL. The legacy local server @vantasdk/vanta-mcp-server is deprecated - prefer the hosted remote server.`},{id:`ordinal`,name:`Ordinal`,description:`Social media posts, profiles, analytics, labels, approvals, and engagements.`,categories:[`Social media`,`Marketing`],appUrl:`https://app.tryordinal.com`,docsUrl:`https://docs.tryordinal.com/api/mcp`,logoUrl:`https://app.tryordinal.com/favicon.ico`,notes:`Official MCP server backed by Ordinal's API with API-key (Bearer) auth.`,popularityRank:52,connectionOptions:[{id:`api`,provider:`mcp`,auth:{strategy:`bearer`,authModes:[`bearer`],credentialLabel:`Ordinal API key`,credentialPlaceholder:`Paste your Ordinal API key`,credentialHelp:`API key from your Ordinal workspace settings, sent as a Bearer token in the Authorization header.`},transport:{kind:`shttp`,url:`https://app.tryordinal.com/api/mcp`}}]},{id:`elevenlabs`,name:`ElevenLabs`,description:`Generate speech, clone voices, and transcribe audio via ElevenLabs.`,categories:[`Audio`,`AI`],appUrl:`https://elevenlabs.io`,docsUrl:`https://elevenlabs.io/docs/api-reference/mcp`,notes:`Official API-key connector backed by ElevenLabs' published OpenAPI spec.`,popularityRank:51,connectionOptions:[{id:`api`,provider:`http`,auth:{strategy:`api_key`,authModes:[`api_key`],credentialLabel:`ElevenLabs API key`,credentialPlaceholder:`Paste your ElevenLabs API key`,credentialHelp:`Personal or workspace ElevenLabs API key sent in the xi-api-key header.`,apiKeyHeaderName:`xi-api-key`},http:{apiBaseUrl:`https://api.elevenlabs.io`,openApiUrl:`https://api.elevenlabs.io/openapi.json`}}],iconBg:`var(--oh-color-base)`,logoUrl:`https://cdn.simpleicons.org/elevenlabs/FFFFFF`,keywords:[`tts`,`speech`,`voice`,`audio`]},{id:`bitbucket`,name:`Bitbucket`,description:`Repositories, pull requests, and Atlassian engineering workflows.`,categories:[`Engineering`,`Source control`],appUrl:`https://bitbucket.org`,docsUrl:`https://developer.atlassian.com/cloud/bitbucket/oauth-2/`,notes:`Popular in Atlassian-centric teams and complements Jira/Confluence.`,popularityRank:50,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://bitbucket.org/site/oauth2/authorize`,tokenUrl:`https://bitbucket.org/site/oauth2/access_token`,scopes:[`account`,`repository`]}},http:{apiBaseUrl:`https://api.bitbucket.org/2.0`,openApiUrl:`https://developer.atlassian.com/cloud/bitbucket/swagger.v3.json`}}]},{id:`xero`,name:`Xero`,description:`Accounting, contacts, invoices, and bookkeeping workflows.`,categories:[`Finance`,`Accounting`],appUrl:`https://www.xero.com`,docsUrl:`https://developer.xero.com/documentation/guides/oauth2/overview/`,notes:`Important accounting platform in many regions.`,popularityRank:48,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://login.xero.com/identity/connect/authorize`,tokenUrl:`https://identity.xero.com/connect/token`,scopes:[`accounting.contacts.read`]}},http:{apiBaseUrl:`https://api.xero.com/api.xro/2.0`,openApiUrl:`https://api.apis.guru/v2/specs/xero.com/xero_accounting/2.9.4/openapi.json`}}]},{id:`quickbooks`,name:`QuickBooks`,description:`Accounting, invoices, customers, and financial operations via the QuickBooks Online MCP server.`,categories:[`Finance`,`Accounting`],appUrl:`https://quickbooks.intuit.com`,docsUrl:`https://github.com/intuit/quickbooks-online-mcp-server`,notes:`Official Intuit QuickBooks Online MCP server runs locally over stdio after a one-time OAuth handshake.`,popularityRank:47,iconBg:`#2CA01C`,logoUrl:`https://cdn.simpleicons.org/quickbooks/FFFFFF`,keywords:[`accounting`,`finance`,`invoices`,`qbo`],installHint:`Create an app on the Intuit Developer Portal (developer.intuit.com), complete the one-time OAuth handshake (clone intuit/quickbooks-online-mcp-server, npm install, npm run build, npm run auth), then provide your Client ID/Secret, Refresh Token, and Realm ID. The server runs over stdio via npx from the official GitHub repo.`,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`quickbooks-online`,command:`npx`,args:[`-y`,`github:intuit/quickbooks-online-mcp-server`],envFields:[{key:`QUICKBOOKS_CLIENT_ID`,label:`QuickBooks OAuth Client ID`,type:`text`,placeholder:`your-intuit-app-client-id`,required:!0,helperText:`From the Intuit Developer Portal app you created.`,helperLink:`https://developer.intuit.com/`},{key:`QUICKBOOKS_CLIENT_SECRET`,label:`QuickBooks OAuth Client Secret`,type:`password`,placeholder:`your-intuit-app-client-secret`,required:!0,helperText:`From the Intuit Developer Portal app. Stored as a secret.`,helperLink:`https://developer.intuit.com/`},{key:`QUICKBOOKS_REFRESH_TOKEN`,label:`QuickBooks Refresh Token`,type:`password`,placeholder:`your-refresh-token`,required:!0,helperText:`Obtained after the one-time OAuth handshake (npm run auth). Auto-rotates; stored as a secret.`,helperLink:`https://github.com/intuit/quickbooks-online-mcp-server#authentication`},{key:`QUICKBOOKS_REALM_ID`,label:`QuickBooks Company (Realm) ID`,type:`text`,placeholder:`your-company-id`,required:!0,helperText:`The QBO company ID to connect to.`,helperLink:`https://github.com/intuit/quickbooks-online-mcp-server#authentication`},{key:`QUICKBOOKS_ENVIRONMENT`,label:`Environment`,type:`text`,placeholder:`sandbox`,required:!1,helperText:`sandbox or production (default: sandbox).`}]},auth:{strategy:`none`}}]},{id:`okta`,name:`Okta`,description:`Identity, users, applications, and access administration.`,categories:[`Identity`,`Enterprise`],appUrl:`https://www.okta.com`,docsUrl:`https://developer.okta.com/docs/guides/implement-oauth-for-okta/main/`,notes:`High-value admin and security automation surface.`,popularityRank:42,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://{yourOktaDomain}/oauth2/v1/authorize`,tokenUrl:`https://{yourOktaDomain}/oauth2/v1/token`,scopes:[`okta.users.read`]}},http:{apiBaseUrl:`https://{yourOktaDomain}/api/v1`,openApiUrl:`https://raw.githubusercontent.com/okta/okta-sdk-java/master/src/swagger/api.yaml`}}]},{id:`netlify`,name:`Netlify`,description:`Sites, builds, deploy previews, and web operations.`,categories:[`Deployment`,`Developer tools`],appUrl:`https://www.netlify.com`,docsUrl:`https://docs.netlify.com/api/get-started/#oauth-applications`,notes:`Common alternative hosting/deployment automation target.`,popularityRank:40,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://app.netlify.com/authorize`,tokenUrl:`https://api.netlify.com/oauth/token`,scopes:[`sites:read`]}},http:{apiBaseUrl:`https://api.netlify.com/api/v1`,openApiUrl:`https://raw.githubusercontent.com/netlify/open-api/master/swagger.yml`}}]},{id:`vercel`,name:`Vercel`,description:`Deployments, projects, domains, and preview environment workflows.`,categories:[`Developer tools`,`Deployment`],appUrl:`https://vercel.com`,docsUrl:`https://vercel.com/docs/rest-api#oauth-apps`,notes:`Especially relevant to this repo's deployment model.`,popularityRank:39,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://vercel.com/oauth/authorize`,tokenUrl:`https://api.vercel.com/v2/oauth/access_token`,scopes:[`project:read`]}},http:{apiBaseUrl:`https://api.vercel.com`,openApiUrl:`https://api.apis.guru/v2/specs/vercel.com/0.0.1/openapi.json`}}]},{id:`supabase`,name:`Supabase`,description:`Query and manage your Supabase project, including database, auth, and storage.`,categories:[`Database`,`Developer tools`],appUrl:`https://supabase.com`,docsUrl:`https://supabase.com/docs/guides/getting-started/mcp`,notes:`Popular developer platform with broad automation value and a documented management-API OAuth integration flow.`,popularityRank:38,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`supabase`,command:`npx`,args:[`-y`,`@supabase/mcp-server-supabase@latest`],envFields:[{key:`SUPABASE_ACCESS_TOKEN`,label:`Supabase access token`,type:`password`,required:!0,helperText:`Personal access token from your Supabase dashboard.`,helperLink:`https://supabase.com/dashboard/account/tokens`}]},auth:{strategy:`api_key`}},{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://api.supabase.com/v1/oauth/authorize`,tokenUrl:`https://api.supabase.com/v1/oauth/token`,scopes:[]}},http:{apiBaseUrl:`https://api.supabase.com/v1`,openApiUrl:`https://raw.githubusercontent.com/supabase/supabase/master/apps/docs/spec/api_v1_openapi.json`}}],iconBg:`#3ECF8E`,logoUrl:`https://cdn.simpleicons.org/supabase/FFFFFF`,keywords:[`database`,`auth`,`storage`,`postgres`]},{id:`posthog`,name:`PostHog`,description:`Product analytics, feature flags, and session insights.`,categories:[`Analytics`,`Product`],appUrl:`https://posthog.com`,docsUrl:`https://posthog.com/docs/model-context-protocol`,notes:`Relevant for product analytics and experimentation workflows.`,popularityRank:37,iconBg:`#1D4AFF`,logoUrl:`https://cdn.simpleicons.org/posthog/FFFFFF`,keywords:[`analytics`,`feature flags`,`product`,`experiments`],installHint:`Authenticate with a PostHog personal API key (PostHog → User settings → API keys, MCP Server preset) — sent as a Bearer token.`,connectionOptions:[{id:`api-key`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.posthog.com/mcp`},auth:{strategy:`bearer`,credentialLabel:`PostHog personal API key`,credentialPlaceholder:`Paste your PostHog personal API key`,credentialHelp:`Create one under PostHog → User settings → API keys (MCP Server preset). Sent as Authorization: Bearer <token>.`}}]},{id:`sentry`,name:`Sentry`,description:`Triage issues, inspect events, and run Seer fixes against your Sentry org.`,categories:[`Observability`,`Engineering`],appUrl:`https://sentry.io`,docsUrl:`https://docs.sentry.io/product/sentry-mcp/`,notes:`Natural target for engineering support agents.`,popularityRank:36,connectionOptions:[{id:`oauth-mcp`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.sentry.dev/mcp`},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://sentry.io/oauth/authorize`,tokenUrl:`https://sentry.io/oauth/token`,scopes:[`project:read`,`event:read`,`org:read`]}}},{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://sentry.io/oauth/authorize`,tokenUrl:`https://sentry.io/oauth/token`,scopes:[`project:read`,`event:read`,`org:read`]}},http:{apiBaseUrl:`https://sentry.io/api/0`,openApiUrl:`https://raw.githubusercontent.com/getsentry/sentry/master/api-docs/openapi.json`}}],iconBg:`#362D59`,logoUrl:`https://cdn.simpleicons.org/sentry/FFFFFF`,keywords:[`errors`,`observability`,`monitoring`,`crash`]},{id:`datadog`,name:`Datadog`,description:`Logs, metrics, monitors, incidents, and observability workflows.`,categories:[`Observability`,`Operations`],appUrl:`https://www.datadoghq.com`,docsUrl:`https://docs.datadoghq.com/bits_ai/mcp_server/setup/`,notes:`Uses Datadog's official hosted MCP server. The MCP endpoint host is site-specific: use https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (e.g. mcp.us5.datadoghq.com for US5). The default URL below targets US1 and can be edited in the install dialog.`,popularityRank:35,installHint:`The Datadog MCP URL is site-specific. Edit the URL to https://mcp.<site>.datadoghq.com/v1/mcp for your Datadog site (for example https://mcp.us5.datadoghq.com/v1/mcp for US5, https://mcp.eu.datadoghq.com/v1/mcp for EU). Find your site at Organization Settings → Site in Datadog.`,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://app.datadoghq.com/oauth2/v1/authorize`,tokenUrl:`https://api.datadoghq.com/oauth2/v1/token`,scopes:[`dashboards_read`,`monitors_read`]}},transport:{kind:`shttp`,url:`https://mcp.datadoghq.com/v1/mcp`}},{id:`api`,provider:`mcp`,auth:{strategy:`none`},transport:{kind:`shttp`,url:`https://mcp.datadoghq.com/v1/mcp`,urlEditable:!0,headerFields:[{key:`DD-API-KEY`,label:`Datadog API key`,type:`password`,required:!0,placeholder:`xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,helperText:`Created in Datadog under Organization Settings → API Keys. Used to authenticate to the Datadog MCP server. See the [setup docs](https://docs.datadoghq.com/mcp_server/setup/?tab=other#authentication).`},{key:`DD-APPLICATION-KEY`,label:`Datadog Application key`,type:`password`,required:!0,placeholder:`xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,helperText:`Created in Datadog under Organization Settings → Application Keys. Grants the MCP server access to your Datadog data. See the [setup docs](https://docs.datadoghq.com/mcp_server/setup/?tab=other#authentication).`}]}}]},{id:`canva`,name:`Canva`,description:`Design content, brand assets, and marketing collateral workflows.`,categories:[`Design`,`Marketing`],appUrl:`https://www.canva.com`,docsUrl:`https://www.canva.dev/docs/connect/oauth/`,notes:`Broad creator and marketing adoption with OAuth-based apps.`,popularityRank:34,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{tokenUrl:`https://api.canva.com/rest/v1/oauth/token`,scopes:[],authorizationUrl:`https://www.canva.com/api/oauth/authorize`}},http:{apiBaseUrl:`https://api.canva.com/rest/v1`,openApiUrl:`https://raw.githubusercontent.com/canva-sdks/canva-connect-api-starter-kit/main/openapi/spec.yml`}}]},{id:`miro`,name:`Miro`,description:`Whiteboards, diagrams, notes, and workshop collaboration.`,categories:[`Whiteboard`,`Collaboration`],appUrl:`https://miro.com`,docsUrl:`https://developers.miro.com/docs/mcp-intro`,notes:`Strong visual collaboration target for design and product teams.`,popularityRank:33,iconBg:`#FFD02F`,logoUrl:`https://cdn.simpleicons.org/miro/05003B`,keywords:[`whiteboard`,`collaboration`,`diagrams`,`visual`],installHint:`Connect Miro's hosted MCP server with OAuth.`,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://miro.com/oauth/authorize`,tokenUrl:`https://api.miro.com/v1/oauth/token`,scopes:[`boards:read`]}},transport:{kind:`shttp`,url:`https://mcp.miro.com/`}}]},{id:`webflow`,name:`Webflow`,description:`CMS items, sites, and web publishing workflows.`,categories:[`CMS`,`Marketing`],appUrl:`https://webflow.com`,docsUrl:`https://developers.webflow.com/mcp/reference/getting-started`,notes:`Uses Webflow's official hosted MCP server and deployment-scoped MCP OAuth registration so each user can authorize their own sites and workspaces.`,popularityRank:32,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://mcp.webflow.com/oauth/authorize`,tokenUrl:`https://mcp.webflow.com/oauth/token`,scopes:[],pkce:!0,clientAuthentication:`none`,registrationUrl:`https://mcp.webflow.com/oauth/register`}},transport:{kind:`shttp`,url:`https://mcp.webflow.com/mcp`}}]},{id:`zoom`,name:`Zoom`,description:`Meetings, recordings, webinars, and scheduling operations.`,categories:[`Meetings`,`Calendar`],appUrl:`https://zoom.us`,docsUrl:`https://developers.zoom.us/docs/integrations/oauth/`,notes:`Frequently requested for scheduling and meeting summaries.`,popularityRank:31,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://zoom.us/oauth/authorize`,tokenUrl:`https://zoom.us/oauth/token`,scopes:[`meeting:read:user`]}},http:{apiBaseUrl:`https://api.zoom.us/v2`,openApiUrl:`https://api.apis.guru/v2/specs/zoom.us/2.0.0/openapi.json`}}]},{id:`discord`,name:`Discord`,description:`Guilds, channels, messages, and community operations.`,categories:[`Communication`,`Community`],appUrl:`https://discord.com`,docsUrl:`https://discord.com/developers/docs/topics/oauth2`,notes:`Useful for community automation and bot-assisted workflows.`,popularityRank:30,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://discord.com/oauth2/authorize`,tokenUrl:`https://discord.com/api/oauth2/token`,scopes:[`identify`,`guilds`]}},http:{apiBaseUrl:`https://discord.com/api/v10`,openApiUrl:`https://raw.githubusercontent.com/discord/discord-api-spec/main/specs/openapi.json`}}]},{id:`stripe`,name:`Stripe`,description:`Query customers, payments, subscriptions, and invoices via Stripe's hosted MCP server.`,categories:[`Payments`,`Finance`],appUrl:`https://stripe.com`,docsUrl:`https://stripe.com/docs/mcp`,notes:`High-value fintech automation target with mature OAuth patterns.`,popularityRank:28,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.stripe.com/`},auth:{strategy:`bearer`,credentialLabel:`Stripe restricted key`,credentialPlaceholder:`rk_live_...`,credentialHelp:`Create a Stripe restricted key for MCP access and paste it here.`}},{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://connect.stripe.com/oauth/authorize`,tokenUrl:`https://connect.stripe.com/oauth/token`,scopes:[`read_only`]}},http:{apiBaseUrl:`https://api.stripe.com/v1`,openApiUrl:`https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json`}}],iconBg:`#635BFF`,logoUrl:`https://cdn.simpleicons.org/stripe/FFFFFF`,keywords:[`payments`,`billing`,`subscriptions`,`finance`]},{id:`intercom`,name:`Intercom`,description:`Customer support, conversations, inboxes, and CRM context.`,categories:[`Support`,`CRM`],appUrl:`https://www.intercom.com`,docsUrl:`https://developers.intercom.com/building-apps/docs/authentication-types`,notes:`Useful for customer-facing assistant workflows.`,popularityRank:27,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://app.intercom.com/oauth`,tokenUrl:`https://api.intercom.io/auth/eagle/token`,scopes:[`read_users`,`read_conversations`]}},http:{apiBaseUrl:`https://api.intercom.io`,openApiUrl:`https://raw.githubusercontent.com/intercom/Intercom-OpenAPI/main/descriptions/2.15/api.intercom.io.yaml`}}]},{id:`hubspot`,name:`HubSpot`,description:`CRM, marketing, tickets, and customer lifecycle workflows.`,categories:[`CRM`,`Marketing`],appUrl:`https://www.hubspot.com`,docsUrl:`https://developers.hubspot.com/docs/apps/developer-platform/build-apps/integrate-with-the-remote-hubspot-mcp-server`,notes:`Uses HubSpot's official remote MCP server plus MCP auth apps with PKCE.`,popularityRank:25,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,credentialHelp:`Use the client ID and secret from a HubSpot MCP auth app (Development → MCP Auth Apps). Standard HubSpot OAuth apps and private apps will not authenticate with mcp.hubspot.com.`,oauth:{authorizationUrl:`https://mcp.hubspot.com/oauth/authorize/user`,tokenUrl:`https://mcp.hubspot.com/oauth/v3/token`,scopes:[],pkce:!0,clientAuthentication:`body`}},transport:{kind:`shttp`,url:`https://mcp.hubspot.com`}}]},{id:`salesforce`,name:`Salesforce`,description:`CRM records, accounts, opportunities, and sales operations.`,categories:[`CRM`,`Sales`],appUrl:`https://www.salesforce.com`,docsUrl:`https://developer.salesforce.com/docs/platform/hosted-mcp-servers`,notes:`Very common enterprise CRM and agent-assist target.`,popularityRank:24,iconBg:`#00A1E0`,logoUrl:`https://cdn.jsdelivr.net/gh/OpenHands/extensions/integrations/icons/salesforce.svg`,keywords:[`crm`,`sales`,`records`,`enterprise`],installHint:`Activate an MCP server in Salesforce Setup (API Catalog → MCP Servers), create an External Client App, then connect. Edit the URL to match your server and org (e.g. /sandbox/ for sandboxes).`,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://login.salesforce.com/services/oauth2/authorize`,tokenUrl:`https://login.salesforce.com/services/oauth2/token`,scopes:[`refresh_token`],pkce:!0}},transport:{kind:`shttp`,url:`https://api.salesforce.com/platform/mcp/v1/platform/sobject-reads`,urlEditable:!0}}]},{id:`sharepoint`,name:`SharePoint`,description:`Sites, document libraries, lists, and intranet content.`,categories:[`Knowledge base`,`Enterprise`],appUrl:`https://www.microsoft.com/microsoft-365/sharepoint/collaboration`,docsUrl:`https://learn.microsoft.com/graph/auth-v2-user`,notes:`Frequently requested for enterprise knowledge retrieval.`,popularityRank:23,connectionOptions:[{id:`oauth`,provider:`http`,connectionModel:{principalType:`user`,credentialScope:`tenant`,resourceType:`tenant`,resourceCardinality:`one`,selectionMode:`automatic`,identityMapping:{source:`access_token_claims`,externalPrincipalIdPath:`oid`,externalTenantIdPath:`tid`,externalResourceIdPath:`tid`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/authorize`,tokenUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/token`,scopes:[`Sites.Read.All`]}},http:{apiBaseUrl:`https://graph.microsoft.com/v1.0`,openApiUrl:`https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml`}}]},{id:`onedrive`,name:`OneDrive`,description:`Cloud file access and document workflows through Microsoft Graph.`,categories:[`Storage`,`Documents`],appUrl:`https://www.microsoft.com/microsoft-365/onedrive/online-cloud-storage`,docsUrl:`https://learn.microsoft.com/graph/auth-v2-user`,notes:`Useful for enterprise file automation and search.`,popularityRank:22,connectionOptions:[{id:`oauth`,provider:`http`,connectionModel:{principalType:`user`,credentialScope:`tenant`,resourceType:`tenant`,resourceCardinality:`one`,selectionMode:`automatic`,identityMapping:{source:`access_token_claims`,externalPrincipalIdPath:`oid`,externalTenantIdPath:`tid`,externalResourceIdPath:`tid`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/authorize`,tokenUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/token`,scopes:[`Files.Read`]}},http:{apiBaseUrl:`https://graph.microsoft.com/v1.0`,openApiUrl:`https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml`}}]},{id:`microsoft-teams`,name:`Microsoft Teams`,description:`Chats, channels, meetings, and collaboration via Microsoft Graph.`,categories:[`Communication`,`Enterprise`],appUrl:`https://www.microsoft.com/microsoft-teams/group-chat-software`,docsUrl:`https://learn.microsoft.com/graph/auth-v2-user`,notes:`Common enterprise chat target alongside Outlook.`,popularityRank:21,connectionOptions:[{id:`oauth`,provider:`http`,connectionModel:{principalType:`user`,credentialScope:`tenant`,resourceType:`tenant`,resourceCardinality:`one`,selectionMode:`automatic`,identityMapping:{source:`access_token_claims`,externalPrincipalIdPath:`oid`,externalTenantIdPath:`tid`,externalResourceIdPath:`tid`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/authorize`,tokenUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/token`,scopes:[`Team.ReadBasic.All`]}},http:{apiBaseUrl:`https://graph.microsoft.com/v1.0`,openApiUrl:`https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml`}}]},{id:`microsoft-outlook`,name:`Microsoft Outlook`,description:`Mail, calendar, contacts, and meeting workflows through Microsoft Graph.`,categories:[`Email`,`Calendar`],appUrl:`https://www.microsoft.com/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook`,docsUrl:`https://learn.microsoft.com/graph/auth-v2-user`,notes:`High-value Microsoft Graph integration surface for enterprise users.`,popularityRank:20,connectionOptions:[{id:`oauth`,provider:`http`,connectionModel:{principalType:`user`,credentialScope:`tenant`,resourceType:`tenant`,resourceCardinality:`one`,selectionMode:`automatic`,identityMapping:{source:`access_token_claims`,externalPrincipalIdPath:`oid`,externalTenantIdPath:`tid`,externalResourceIdPath:`tid`}},auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/authorize`,tokenUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/token`,scopes:[`Mail.Read`]}},http:{apiBaseUrl:`https://graph.microsoft.com/v1.0`,openApiUrl:`https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml`}}]},{id:`box`,name:`Box`,description:`Enterprise file storage, metadata, and collaboration.`,categories:[`Storage`,`Enterprise`],appUrl:`https://www.box.com`,docsUrl:`https://developer.box.com/guides/authentication/oauth2/`,notes:`Strong enterprise document-management footprint.`,popularityRank:19,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://account.box.com/api/oauth2/authorize`,tokenUrl:`https://api.box.com/oauth2/token`,scopes:[`root_readonly`,`item_read`]}},http:{apiBaseUrl:`https://api.box.com/2.0`,openApiUrl:`https://raw.githubusercontent.com/box/box-openapi/main/openapi.json`}}]},{id:`airtable`,name:`Airtable`,description:`List bases, query records, and update fields across your Airtable workspace.`,categories:[`Database`,`Operations`],appUrl:`https://airtable.com`,docsUrl:`https://github.com/domdomegg/airtable-mcp-server`,notes:`Very common internal-tools and operations automation surface.`,popularityRank:17,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`airtable`,command:`npx`,args:[`-y`,`airtable-mcp-server`],envFields:[{key:`AIRTABLE_API_KEY`,label:`Airtable personal access token`,type:`password`,required:!0,helperText:`Personal access token from your Airtable account.`,helperLink:`https://airtable.com/create/tokens`}]},auth:{strategy:`api_key`}}],iconBg:`#FCB400`,logoUrl:`https://cdn.simpleicons.org/airtable/000000`,iconColor:`var(--oh-surface-deep)`,keywords:[`spreadsheet`,`database`,`records`,`bases`]},{id:`monday`,name:`Monday.com`,description:`Boards, automations, and work management across teams.`,categories:[`Project management`,`Operations`],appUrl:`https://monday.com`,docsUrl:`https://monday.com/w/mcp`,notes:`High-demand operations platform with rich board APIs.`,popularityRank:16,iconBg:`#FF3D00`,keywords:[`project management`,`boards`,`work`,`operations`],installHint:`Connect monday.com's hosted MCP server with OAuth.`,connectionOptions:[{id:`oauth`,provider:`mcp`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://auth.monday.com/oauth2/authorize`,tokenUrl:`https://auth.monday.com/oauth2/token`,scopes:[`boards:read`]}},transport:{kind:`shttp`,url:`https://mcp.monday.com/mcp`}}]},{id:`trello`,name:`Trello`,description:`Boards, cards, checklists, and lightweight project planning.`,categories:[`Project management`,`Operations`],appUrl:`https://trello.com`,docsUrl:`https://developer.atlassian.com/cloud/trello/guides/rest-api/authorization/`,notes:`Trello now uses Atlassian OAuth2 (auth.atlassian.com) for API authorization.`,popularityRank:14,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://auth.atlassian.com/authorize`,tokenUrl:`https://api.atlassian.com/oauth/token`,scopes:[`read`,`write`]}},http:{apiBaseUrl:`https://api.trello.com/1`,openApiUrl:`https://developer.atlassian.com/cloud/trello/swagger.v3.json`}}]},{id:`asana`,name:`Asana`,description:`Task management, projects, and work tracking.`,categories:[`Project management`,`Operations`],appUrl:`https://asana.com`,docsUrl:`https://developers.asana.com/docs/oauth`,notes:`Broad business adoption and straightforward OAuth app model.`,popularityRank:13,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://app.asana.com/-/oauth_authorize`,tokenUrl:`https://app.asana.com/-/oauth_token`,scopes:[`tasks:read`]}},http:{apiBaseUrl:`https://app.asana.com/api/1.0`,openApiUrl:`https://api.apis.guru/v2/specs/asana.com/1.0/openapi.json`}}]},{id:`confluence`,name:`Confluence`,description:`Wiki pages, spaces, and internal documentation search.`,categories:[`Documentation`,`Knowledge base`],appUrl:`https://www.atlassian.com/software/confluence`,docsUrl:`https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/`,notes:`Natural companion to Jira for software teams.`,popularityRank:11,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://auth.atlassian.com/authorize`,tokenUrl:`https://auth.atlassian.com/oauth/token`,scopes:[`read:page:confluence`]}},http:{apiBaseUrl:`https://api.atlassian.com/ex/confluence/{cloudId}`,openApiUrl:`https://developer.atlassian.com/cloud/confluence/swagger.v3.json`}}]},{id:`jira`,name:`Jira`,description:`Issue tracking, sprint workflows, and engineering program management.`,categories:[`Project management`,`Engineering`],appUrl:`https://www.atlassian.com/software/jira`,docsUrl:`https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/`,notes:`Very common MCP target for software teams and ticket automation.`,popularityRank:10,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://auth.atlassian.com/authorize`,tokenUrl:`https://auth.atlassian.com/oauth/token`,scopes:[`read:jira-work`]}},http:{apiBaseUrl:`https://api.atlassian.com/ex/jira/{cloudId}`,openApiUrl:`https://developer.atlassian.com/cloud/jira/platform/swagger.v3.json`}}]},{id:`google-calendar`,name:`Google Calendar`,description:`Calendar search, event scheduling, and meeting coordination.`,categories:[`Calendar`,`Scheduling`],appUrl:`https://workspace.google.com/products/calendar/`,docsUrl:`https://developers.google.com/identity/protocols/oauth2`,notes:`Strong personal productivity use case with mature OAuth flows.`,popularityRank:9,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://accounts.google.com/o/oauth2/v2/auth`,tokenUrl:`https://oauth2.googleapis.com/token`,scopes:[`https://www.googleapis.com/auth/calendar.readonly`]}},http:{apiBaseUrl:`https://www.googleapis.com/calendar/v3`,openApiUrl:`https://api.apis.guru/v2/specs/googleapis.com/calendar/v3/openapi.json`}}]},{id:`gmail`,name:`Gmail`,description:`Mailbox search, drafting, sending, and thread triage.`,categories:[`Communication`,`Email`],appUrl:`https://workspace.google.com/products/gmail/`,docsUrl:`https://developers.google.com/identity/protocols/oauth2`,notes:`Popular agent workflow target for inbox triage and drafting.`,popularityRank:8,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://accounts.google.com/o/oauth2/v2/auth`,tokenUrl:`https://oauth2.googleapis.com/token`,scopes:[`https://www.googleapis.com/auth/gmail.readonly`]}},http:{apiBaseUrl:`https://gmail.googleapis.com`,openApiUrl:`https://api.apis.guru/v2/specs/googleapis.com/gmail/v1/openapi.json`}}]},{id:`google-sheets`,name:`Google Sheets`,description:`Spreadsheet reads, writes, formulas, and reporting workflows.`,categories:[`Spreadsheets`,`Analytics`],appUrl:`https://workspace.google.com/products/sheets/`,docsUrl:`https://developers.google.com/identity/protocols/oauth2`,notes:`High-value automation surface for agent-driven reporting and structured edits.`,popularityRank:7,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://accounts.google.com/o/oauth2/v2/auth`,tokenUrl:`https://oauth2.googleapis.com/token`,scopes:[`https://www.googleapis.com/auth/spreadsheets.readonly`]}},http:{apiBaseUrl:`https://sheets.googleapis.com`,openApiUrl:`https://api.apis.guru/v2/specs/googleapis.com/sheets/v4/openapi.json`}}]},{id:`google-drive`,name:`Google Drive`,description:`File search, metadata, folders, and document discovery.`,categories:[`Storage`,`Documents`],appUrl:`https://workspace.google.com/products/drive/`,docsUrl:`https://developers.google.com/identity/protocols/oauth2`,notes:`Natural expansion of the Google Workspace surface beyond Google Docs.`,popularityRank:6,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://accounts.google.com/o/oauth2/v2/auth`,tokenUrl:`https://oauth2.googleapis.com/token`,scopes:[`https://www.googleapis.com/auth/drive.metadata.readonly`]}},http:{apiBaseUrl:`https://www.googleapis.com/drive/v3`,openApiUrl:`https://api.apis.guru/v2/specs/googleapis.com/drive/v3/openapi.json`}}]},{id:`figma`,name:`Figma`,description:`Read Figma frames, components, and styles to ground UI work in your designs.`,categories:[`Design`,`Frontend`],appUrl:`https://www.figma.com`,docsUrl:`https://github.com/GLips/Figma-Context-MCP`,popularityRank:5,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`figma`,command:`npx`,args:[`-y`,`figma-developer-mcp`,`--stdio`],envFields:[{key:`FIGMA_API_KEY`,label:`Figma personal access token`,type:`password`,required:!0,helperText:`Personal access token from your Figma account settings.`,helperLink:`https://developers.figma.com/docs/rest-api/authentication/#personal-access-tokens`}]},auth:{strategy:`api_key`}},{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://www.figma.com/oauth`,tokenUrl:`https://api.figma.com/v1/oauth/token`,scopes:[`current_user:read`,`file_content:read`,`file_metadata:read`,`projects:read`]}},http:{apiBaseUrl:`https://api.figma.com`,openApiUrl:`https://raw.githubusercontent.com/figma/rest-api-spec/main/openapi/openapi.yaml`}}],iconBg:`var(--oh-surface)`,logoUrl:`https://cdn.simpleicons.org/figma/FFFFFF`,keywords:[`design`,`ui`,`frames`,`components`]},{id:`google-docs`,name:`Google Docs`,description:`Docs authoring and Google Workspace document automation.`,categories:[`Documents`,`Knowledge base`],appUrl:`https://workspace.google.com/products/docs/`,docsUrl:`https://developers.google.com/identity/protocols/oauth2`,notes:`Current managed connector accepts a Google access token manually; a full OAuth connect flow can remove token copy/paste.`,popularityRank:2,connectionOptions:[{id:`oauth`,provider:`http`,auth:{strategy:`oauth2`,oauth:{authorizationUrl:`https://accounts.google.com/o/oauth2/v2/auth`,tokenUrl:`https://oauth2.googleapis.com/token`,scopes:[`https://www.googleapis.com/auth/documents.readonly`]}},http:{apiBaseUrl:`https://docs.googleapis.com`,openApiUrl:`https://api.apis.guru/v2/specs/googleapis.com/docs/v1/openapi.json`}}]},{id:`apify`,name:`Apify Actors`,description:`Run any of Apify's 5,000+ Actors (scrapers, automations) from the agent.`,docsUrl:`https://docs.apify.com/platform/integrations/mcp`,iconBg:`#10b981`,keywords:[`scraping`,`automation`,`crawl`,`actors`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`apify`,command:`npx`,args:[`-y`,`@apify/actors-mcp-server`],envFields:[{key:`APIFY_TOKEN`,label:`Apify token`,type:`password`,required:!0,helperText:`API token from your Apify account settings.`,helperLink:`https://console.apify.com/account/integrations`}]},auth:{strategy:`api_key`}}]},{id:`atlassian-rovo`,name:`Atlassian Rovo`,description:`Search, create, and update Jira issues, Confluence pages, Bitbucket repos, and Jira Service Management tickets - all through Atlassian's official hosted MCP server, powered by your Teamwork Graph.`,categories:[`Project management`,`Documentation`,`Engineering`],appUrl:`https://www.atlassian.com/rovo`,docsUrl:`https://support.atlassian.com/atlassian-rovo-mcp-server/docs/getting-started-with-the-atlassian-remote-mcp-server/`,notes:`OAuth 2.1 is handled entirely by the Atlassian Rovo MCP server. No client credentials required - sign in with your Atlassian account when the authentication flow starts.`,iconBg:`#0052CC`,logoUrl:`https://cdn.simpleicons.org/atlassian/FFFFFF`,keywords:[`atlassian`,`rovo`,`jira`,`confluence`,`bitbucket`,`jsm`,`tickets`,`wiki`,`issues`,`sprint`,`mcp`],connectionOptions:[{id:`oauth`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.atlassian.com/v1/mcp/authv2`},auth:{strategy:`oauth2`,oauth:{clientAuthentication:`none`}}}]},{id:`brave-search`,name:`Brave Search`,description:`Privacy-first web and local search using the Brave Search API.`,docsUrl:`https://github.com/brave/brave-search-mcp-server`,iconBg:`#FB542B`,logoUrl:`https://cdn.simpleicons.org/brave/FFFFFF`,keywords:[`search`,`web`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`brave_search`,command:`npx`,args:[`-y`,`@brave/brave-search-mcp-server`,`--transport`,`stdio`],envFields:[{key:`BRAVE_API_KEY`,label:`Brave API key`,type:`password`,required:!0,helperText:`API key from the Brave Search API portal.`,helperLink:`https://api-dashboard.search.brave.com/app/keys`}]},auth:{strategy:`api_key`}}]},{id:`browser-mcp`,name:`Browser MCP`,description:`Control your local browser tab — navigate, click, type, and read DOM contents.`,docsUrl:`https://browsermcp.io/`,iconBg:`#0EA5E9`,keywords:[`browser`,`automation`,`chrome`,`playwright`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`stdio`,serverName:`browser_mcp`,command:`npx`,args:[`-y`,`@browsermcp/mcp`]},auth:{strategy:`none`}}]},{id:`clickhouse`,name:`ClickHouse`,description:`Run analytical SQL queries against a ClickHouse cluster.`,docsUrl:`https://github.com/ClickHouse/mcp-clickhouse`,iconBg:`#FFFF00`,logoUrl:`https://cdn.simpleicons.org/clickhouse/000000`,iconColor:`var(--oh-surface-deep)`,keywords:[`analytics`,`olap`,`database`,`sql`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`clickhouse`,command:`uvx`,args:[`mcp-clickhouse`],envFields:[{key:`CLICKHOUSE_HOST`,label:`Host`,type:`text`,placeholder:`clickhouse.example.com`,required:!0},{key:`CLICKHOUSE_USER`,label:`Username`,type:`text`,required:!0},{key:`CLICKHOUSE_PASSWORD`,label:`Password`,type:`password`,required:!0,helperText:`Password for your ClickHouse user.`,helperLink:`https://clickhouse.com/docs/operations/access-rights`}]},auth:{strategy:`api_key`}}]},{id:`cloudflare-bindings`,name:`Cloudflare Workers Bindings`,description:`Inspect and manage KV, D1, R2, and Durable Object bindings on your Cloudflare account.`,docsUrl:`https://developers.cloudflare.com/agents/model-context-protocol/`,iconBg:`#F38020`,logoUrl:`https://cdn.simpleicons.org/cloudflare/FFFFFF`,keywords:[`cloudflare`,`workers`,`kv`,`d1`,`r2`,`durable objects`],connectionOptions:[{id:`oauth`,provider:`mcp`,transport:{kind:`shttp`,url:`https://bindings.mcp.cloudflare.com/mcp`},auth:{strategy:`oauth2`}}]},{id:`cloudflare-browser-rendering`,name:`Cloudflare Browser Rendering`,description:`Fetch and screenshot pages using Cloudflare's hosted browser rendering.`,docsUrl:`https://developers.cloudflare.com/agents/model-context-protocol/`,iconBg:`#F38020`,logoUrl:`https://cdn.simpleicons.org/cloudflare/FFFFFF`,keywords:[`cloudflare`,`browser`,`rendering`,`screenshots`],connectionOptions:[{id:`oauth`,provider:`mcp`,transport:{kind:`shttp`,url:`https://browser.mcp.cloudflare.com/mcp`},auth:{strategy:`oauth2`}}]},{id:`cloudflare-builds`,name:`Cloudflare Builds`,description:`Inspect Workers Builds — logs, statuses, and rerun failed deploys.`,docsUrl:`https://developers.cloudflare.com/agents/model-context-protocol/`,iconBg:`#F38020`,logoUrl:`https://cdn.simpleicons.org/cloudflare/FFFFFF`,keywords:[`cloudflare`,`workers`,`ci`,`builds`,`deploys`],connectionOptions:[{id:`oauth`,provider:`mcp`,transport:{kind:`shttp`,url:`https://builds.mcp.cloudflare.com/mcp`},auth:{strategy:`oauth2`}}]},{id:`cloudflare-docs`,name:`Cloudflare Docs`,description:`Search and reference Cloudflare's developer documentation directly from the agent.`,docsUrl:`https://developers.cloudflare.com/agents/model-context-protocol/`,iconBg:`#F38020`,logoUrl:`https://cdn.simpleicons.org/cloudflare/FFFFFF`,keywords:[`cloudflare`,`docs`,`reference`,`workers`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`shttp`,url:`https://docs.mcp.cloudflare.com/mcp`},auth:{strategy:`none`}}]},{id:`cloudflare-observability`,name:`Cloudflare Observability`,description:`Tail Workers logs and query observability data from your Cloudflare account.`,docsUrl:`https://developers.cloudflare.com/agents/model-context-protocol/`,iconBg:`#F38020`,logoUrl:`https://cdn.simpleicons.org/cloudflare/FFFFFF`,keywords:[`cloudflare`,`logs`,`tail`,`observability`,`workers`],connectionOptions:[{id:`oauth`,provider:`mcp`,transport:{kind:`shttp`,url:`https://observability.mcp.cloudflare.com/mcp`},auth:{strategy:`oauth2`}}]},{id:`deepwiki`,name:`DeepWiki`,description:`Ask grounded questions about any public GitHub repository via Devin's DeepWiki MCP.`,docsUrl:`https://docs.devin.ai/work-with-devin/deepwiki-mcp`,iconBg:`var(--oh-color-base)`,keywords:[`devin`,`code`,`wiki`,`github`,`docs`,`qa`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.deepwiki.com/mcp`},auth:{strategy:`none`}}]},{id:`everything`,name:`Everything (demo)`,description:`Reference server exercising every MCP capability — useful for testing.`,docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/everything`,iconBg:`#6366F1`,keywords:[`demo`,`test`,`reference`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`stdio`,serverName:`everything`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-everything`]},auth:{strategy:`none`}}]},{id:`exa`,name:`Exa`,description:`Neural web search with semantic ranking, content extraction, and similar-page lookup.`,docsUrl:`https://docs.exa.ai/reference/exa-mcp`,iconBg:`var(--oh-surface)`,keywords:[`search`,`web`,`research`,`neural`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`exa`,command:`npx`,args:[`-y`,`exa-mcp-server`],envFields:[{key:`EXA_API_KEY`,label:`Exa API key`,type:`password`,required:!0,helperText:`API key from your Exa account.`,helperLink:`https://exa.ai/docs/reference/getting-started`}]},auth:{strategy:`api_key`}}]},{id:`fetch`,name:`Fetch`,description:`Plain HTTP fetcher: download a URL and convert HTML to readable markdown.`,docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/fetch`,iconBg:`var(--oh-interactive-hover)`,keywords:[`http`,`web`,`url`,`scrape`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`stdio`,serverName:`fetch`,command:`uvx`,args:[`mcp-server-fetch`]},auth:{strategy:`none`}}]},{id:`filesystem`,name:`Filesystem`,description:`Give the agent secure, scoped filesystem access outside the workspace.`,docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem`,iconBg:`var(--oh-interactive-hover)`,keywords:[`files`,`local`,`disk`],installHint:`Each path is exposed read/write. Add as many as you need, separated by spaces.`,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`filesystem`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-filesystem`],argFields:[{key:`paths`,label:`Paths (space separated)`,type:`text`,placeholder:`/Users/me/Documents /Users/me/Projects`,required:!0,helperText:`Each whitespace-separated token is appended as its own argument.`}]},auth:{strategy:`api_key`}}]},{id:`firecrawl`,name:`Firecrawl`,description:`Crawl any site and return clean markdown, structured data, or screenshots.`,docsUrl:`https://docs.firecrawl.dev/mcp`,iconBg:`#F97316`,keywords:[`scraping`,`crawl`,`web`,`markdown`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`firecrawl`,command:`npx`,args:[`-y`,`firecrawl-mcp`],envFields:[{key:`FIRECRAWL_API_KEY`,label:`Firecrawl API key`,type:`password`,required:!0,helperText:`API key from your Firecrawl dashboard.`,helperLink:`https://www.firecrawl.dev/app/api-keys`}]},auth:{strategy:`api_key`}}]},{id:`git`,name:`Git`,description:`Local git repository operations: log, diff, blame, status, and more.`,docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/git`,iconBg:`#F1502F`,keywords:[`version control`,`log`,`diff`,`blame`],installHint:`Runs the official Python server via uvx — no setup beyond the path.`,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`git`,command:`uvx`,args:[`mcp-server-git`,`--repository`],argFields:[{key:`repo_path`,label:`Repository path`,type:`text`,placeholder:`/Users/me/code/my-repo`,required:!0,helperText:`Appended as --repository <path>.`}]},auth:{strategy:`api_key`}}]},{id:`huggingface`,name:`Hugging Face`,description:`Search models, datasets, and Spaces on the Hugging Face Hub from your agent.`,docsUrl:`https://huggingface.co/docs/huggingface_hub/en/guides/mcp`,iconBg:`#FFD21E`,logoUrl:`https://cdn.simpleicons.org/huggingface/000000`,iconColor:`#000000`,keywords:[`ml`,`models`,`datasets`,`ai`,`hub`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`shttp`,url:`https://huggingface.co/mcp`,apiKeyOptional:!0},auth:{strategy:`none`,apiKeyOptional:!0}}]},{id:`kagi`,name:`Kagi Search`,description:`Paid, privacy-first search with high signal-to-noise — great for research.`,docsUrl:`https://github.com/kagisearch/kagimcp`,iconBg:`#FFB319`,logoUrl:`https://cdn.simpleicons.org/kagi/000000`,iconColor:`var(--oh-surface-deep)`,keywords:[`search`,`web`,`privacy`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`kagi`,command:`uvx`,args:[`kagimcp`],envFields:[{key:`KAGI_API_KEY`,label:`Kagi API key`,type:`password`,required:!0,helperText:`API key from your Kagi account settings.`,helperLink:`https://kagi.com/settings?p=api`}]},auth:{strategy:`api_key`}}]},{id:`memory`,name:`Memory`,description:`Persistent key-value memory for the agent across conversations.`,docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/memory`,iconBg:`#7C3AED`,keywords:[`memory`,`kv`,`state`,`persistence`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`stdio`,serverName:`memory`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-memory`]},auth:{strategy:`none`}}]},{id:`mongodb`,name:`MongoDB`,description:`Query MongoDB collections, inspect schemas, and run aggregation pipelines.`,docsUrl:`https://www.mongodb.com/docs/mcp-server/`,iconBg:`#00684A`,logoUrl:`https://cdn.simpleicons.org/mongodb/FFFFFF`,keywords:[`database`,`nosql`,`atlas`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`mongodb`,command:`npx`,args:[`-y`,`mongodb-mcp-server`],envFields:[{key:`MDB_MCP_CONNECTION_STRING`,label:`MongoDB connection string`,type:`password`,placeholder:`mongodb+srv://user:pass@cluster.mongodb.net`,required:!0,helperText:`Connection string from your MongoDB Atlas cluster.`,helperLink:`https://www.mongodb.com/docs/atlas/connect-to-database-deployment/#connect-with-a-connection-string`}]},auth:{strategy:`api_key`}}]},{id:`neon`,name:`Neon`,description:`Serverless Postgres: list projects, run queries, manage branches.`,docsUrl:`https://neon.com/docs/ai/neon-mcp-server`,iconBg:`#00E599`,iconColor:`var(--oh-surface-deep)`,keywords:[`database`,`postgres`,`serverless`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`neon`,command:`npx`,args:[`-y`,`@neondatabase/mcp-server-neon`,`start`],envFields:[{key:`NEON_API_KEY`,label:`Neon API key`,type:`password`,required:!0,helperText:`API key from your Neon account settings.`,helperLink:`https://neon.tech/docs/manage/api-keys`}]},auth:{strategy:`api_key`}}]},{id:`obsidian`,name:`Obsidian`,description:`Read and edit Markdown notes inside an Obsidian vault on the local disk.`,docsUrl:`https://github.com/MarkusPfundstein/mcp-obsidian`,iconBg:`#7C3AED`,logoUrl:`https://cdn.simpleicons.org/obsidian/FFFFFF`,keywords:[`notes`,`knowledge`,`markdown`,`vault`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`obsidian`,command:`uvx`,args:[`mcp-obsidian`],envFields:[{key:`OBSIDIAN_API_KEY`,label:`Local REST API key`,type:`password`,required:!0,helperText:`From the Obsidian 'Local REST API' community plugin.`,helperLink:`https://github.com/coddingtonbear/obsidian-local-rest-api`}]},auth:{strategy:`api_key`}}]},{id:`paypal`,name:`PayPal`,description:`Manage transactions and merchant data via PayPal's MCP server.`,docsUrl:`https://developer.paypal.com/tools/mcp-server/`,iconBg:`#003087`,logoUrl:`https://cdn.simpleicons.org/paypal/FFFFFF`,keywords:[`payments`,`billing`,`finance`],connectionOptions:[{id:`oauth`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.paypal.com/mcp`},auth:{strategy:`oauth2`}}]},{id:`playwright`,name:`Playwright`,description:`Headless-browser automation backed by Microsoft Playwright.`,docsUrl:`https://github.com/microsoft/playwright-mcp`,iconBg:`#2EAD33`,keywords:[`browser`,`automation`,`e2e`,`testing`,`scrape`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`stdio`,serverName:`playwright`,command:`npx`,args:[`-y`,`@playwright/mcp`]},auth:{strategy:`none`}}]},{id:`redis`,name:`Redis`,description:`Get, set, scan, and inspect data on a Redis or Redis-compatible instance.`,docsUrl:`https://github.com/redis/mcp-redis`,iconBg:`#DC382D`,logoUrl:`https://cdn.simpleicons.org/redis/FFFFFF`,keywords:[`cache`,`kv`,`database`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`redis`,command:`uvx`,args:[`--from`,`redis-mcp-server@latest`,`redis-mcp-server`,`--url`],argFields:[{key:`redis_url`,label:`Redis URL`,type:`password`,placeholder:`redis://localhost:6379`,required:!0,helperText:`Connection URL for your Redis instance. Appended as --url <redis_url>.`,helperLink:`https://redis.io/docs/latest/operate/rc/databases/connect/`}]},auth:{strategy:`api_key`}}]},{id:`resend`,name:`Resend`,description:`Send transactional and marketing emails via the Resend API.`,docsUrl:`https://resend.com/docs/mcp`,iconBg:`var(--oh-surface-deep)`,logoUrl:`https://cdn.simpleicons.org/resend/FFFFFF`,keywords:[`email`,`transactional`,`smtp`],connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`resend`,command:`npx`,args:[`-y`,`mcp-send-email`],envFields:[{key:`RESEND_API_KEY`,label:`Resend API key`,type:`password`,required:!0,helperText:`API key from your Resend dashboard.`,helperLink:`https://resend.com/api-keys`},{key:`SENDER_EMAIL_ADDRESS`,label:`From address`,type:`text`,placeholder:`you@example.com`,required:!0}]},auth:{strategy:`api_key`}}]},{id:`sequential-thinking`,name:`Sequential Thinking`,description:`Lets the agent emit and revise a chain of structured thoughts.`,docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/sequentialthinking`,iconBg:`var(--oh-color-base)`,keywords:[`reasoning`,`planning`,`thoughts`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`stdio`,serverName:`sequential_thinking`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-sequential-thinking`]},auth:{strategy:`none`}}]},{id:`superhuman-mail`,name:`Superhuman Mail`,description:`Search, read, draft, and send email via Superhuman's hosted MCP server.`,categories:[`Communication`,`Email`],appUrl:`https://superhuman.com`,docsUrl:`https://github.com/superhuman/mcp-mail`,notes:`OAuth is handled by the Superhuman MCP server itself (mcp-remote). No client credentials required.`,connectionOptions:[{id:`oauth`,provider:`mcp`,transport:{kind:`shttp`,url:`https://mcp.mail.superhuman.com/mcp`},auth:{strategy:`oauth2`,oauth:{clientAuthentication:`none`}}}],iconBg:`#FF5C28`,logoUrl:`https://cdn.simpleicons.org/superhuman/FFFFFF`,keywords:[`email`,`mail`,`superhuman`,`inbox`]},{id:`time`,name:`Time`,description:`Timezone-aware current time, conversions, and timestamp formatting.`,docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/time`,iconBg:`var(--oh-surface)`,keywords:[`clock`,`timezone`,`date`],connectionOptions:[{id:`none`,provider:`mcp`,transport:{kind:`stdio`,serverName:`time`,command:`uvx`,args:[`mcp-server-time`]},auth:{strategy:`none`}}]}],r=e=>JSON.parse(JSON.stringify(e)),i=n;new Map(i.map(e=>[e.id,e]));var a=r(i);export{t as n,a as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-Cyuzqnbw.js";import{S as t,v as n,x as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-
|
|
1
|
+
import{t as e}from"./rolldown-runtime-Cyuzqnbw.js";import{S as t,v as n,x as r}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-CYPMCkX1.js";var i=e(((e,t)=>{t.exports=function(){throw Error(`ws does not work in the browser. Browser clients must use the native WebSocket object`)}}));if(typeof window<`u`&&window.WebSocket)window.WebSocket;else try{i()}catch{}var a=class{constructor(e,t){this.cachedEvents=[],this.cachedEventIds=new Set,this.client=e instanceof r?e:new r(e),this.conversationId=t}async search(e={}){let t={limit:e.limit??100};return e.page_id&&(t.page_id=e.page_id),e.kind&&(t.kind=e.kind),e.source&&(t.source=e.source),e.body&&(t.body=e.body),e.sort_order&&(t.sort_order=e.sort_order),e.timestamp__gte&&(t.timestamp__gte=e.timestamp__gte),e.timestamp__lt&&(t.timestamp__lt=e.timestamp__lt),(await this.client.get(`/api/conversations/${this.conversationId}/events/search`,{params:t})).data}async count(e={}){let t={};return e.kind&&(t.kind=e.kind),e.source&&(t.source=e.source),e.body&&(t.body=e.body),e.timestamp__gte&&(t.timestamp__gte=e.timestamp__gte),e.timestamp__lt&&(t.timestamp__lt=e.timestamp__lt),(await this.client.get(`/api/conversations/${this.conversationId}/events/count`,{params:t})).data}async getEventById(e){return(await this.client.get(`/api/conversations/${this.conversationId}/events/${e}`)).data}async getEventsById(e){return Promise.all(e.map(async e=>{try{return await this.getEventById(e)}catch(e){if(e instanceof t&&e.status===404)return null;throw e}}))}async addEvent(e){this.cachedEventIds.has(e.id)||(this.cachedEvents.push(e),this.cachedEventIds.add(e.id))}async append(e){await this.addEvent(e)}createDefaultCallback(e){return t=>{this.addEvent(t).catch(t=>{e&&e(t instanceof Error?t:Error(`Error adding event to cache: ${t}`))})}}async length(){return this.cachedEvents.length}async getEvent(e){return this.cachedEvents[e]}async getEvents(e,t){let n=[],r;for(;;){let e={limit:100};r&&(e.page_id=r);let t=(await this.client.get(`/api/conversations/${this.conversationId}/events/search`,{params:e})).data;if(n.push(...t.items),!t.next_page_id)break;r=t.next_page_id}let i=new Set(n.map(e=>e.id)),a=[...n,...this.cachedEvents.filter(e=>!i.has(e.id))];return e===void 0&&t===void 0?a:a.slice(e,t)}async*[Symbol.asyncIterator](){let e=await this.getEvents();for(let t of e)yield t}},o=`__full_state__`,s=class e{constructor(e,t){this.cachedState=null,this.cachedAt=0,this.lock=new c,this.client=e,this.conversationId=t,this._events=new a(e,t)}async getConversationInfo(){return await this.lock.acquire(async()=>{if(this.cachedState!==null&&Date.now()-this.cachedAt<e.CACHE_TTL_MS)return this.normalizeFullState(this.cachedState);let t=await this.client.get(`/api/conversations/${this.conversationId}`),n=this.normalizeFullState(t.data);return this.cachedState=n,this.cachedAt=Date.now(),n})}normalizeFullState(e){return e.full_state??e}async refresh(){return this.cachedState=null,this.getConversationInfo()}async updateStateFromEvent(e){await this.lock.acquire(async()=>{if(e.key===o){this.cachedState===null&&(this.cachedState={});let t=e.value?.full_state??e.value;Object.assign(this.cachedState,t)}else this.cachedState===null&&(this.cachedState={}),this.cachedState[e.key]=e.value;this.cachedAt=Date.now()})}createStateUpdateCallback(e){return t=>{t.kind===`ConversationStateUpdateEvent`&&this.updateStateFromEvent(t).catch(t=>{e&&e(t instanceof Error?t:Error(`Error updating state from event: ${t}`))})}}get events(){return this._events}get id(){return this.conversationId}async getExecutionStatus(){let e=await this.getConversationInfo(),t=e.execution_status??e.agent_status;if(t==null)throw Error(`execution_status missing in conversation info: ${JSON.stringify(e)}`);return t}async getAgentStatus(){return this.getExecutionStatus()}async setAgentStatus(e){throw Error(`Setting execution_status on RemoteState has no effect. Remote execution status is managed server-side. Attempted to set: ${e}`)}async getConfirmationPolicy(){let e=await this.getConversationInfo(),t=e.confirmation_policy;if(t==null)throw Error(`confirmation_policy missing in conversation info: ${JSON.stringify(e)}`);return t}async getActivatedKnowledgeSkills(){return(await this.getConversationInfo()).activated_knowledge_skills||[]}async getAgent(){let e=await this.getConversationInfo(),t=e.agent;if(t==null)throw Error(`agent missing in conversation info: ${JSON.stringify(e)}`);return t}async getWorkspace(){let e=await this.getConversationInfo(),t=e.workspace;if(t==null)throw Error(`workspace missing in conversation info: ${JSON.stringify(e)}`);return t}async getPersistenceDir(){let e=await this.getConversationInfo(),t=e.persistence_dir;if(t==null)throw Error(`persistence_dir missing in conversation info: ${JSON.stringify(e)}`);return t}async modelDump(){return await this.getConversationInfo()}async modelDumpJson(){let e=await this.modelDump();return JSON.stringify(e)}};s.CACHE_TTL_MS=2e3;var c=class{constructor(){this.locked=!1,this.queue=[]}async acquire(e){return new Promise((t,n)=>{let r=async()=>{try{t(await e())}catch(e){n(e)}finally{this.locked=!1;let e=this.queue.shift();e&&e()}};this.locked?this.queue.push(r):(this.locked=!0,r())})}},l=class{constructor(e){this.host=e.host.replace(/\/$/,``),this.workingDir=e.workingDir,this.apiKey=e.apiKey,this.client=new r({baseUrl:this.host,apiKey:this.apiKey,timeout:6e4}),this.bash=new n({host:this.host,...this.apiKey?{apiKey:this.apiKey}:{}})}async startWorkspaceSession(e){return await this.client.post(`/api/auth/workspace-session`,void 0,{credentials:`include`}),`${this.host}/api/conversations/${e}/workspace/`}async deleteWorkspaceSession(){await this.client.delete(`/api/auth/workspace-session`,{credentials:`include`,acceptableStatusCodes:new Set([204])})}async executeCommand(e,t,n=30){let r={command:e,timeout:Math.floor(n)};t&&(r.cwd=t);let i=(await this.client.post(`/api/bash/execute_bash_command`,r,{timeout:(n+10)*1e3})).data;return{command:e,exit_code:i.exit_code??0,stdout:i.stdout||``,stderr:i.stderr||``,timeout_occurred:!1}}async fileUpload(e,t,n){let r=new FormData,i,a;e instanceof File?(i=e,a=n||e.name):e instanceof Blob?(i=e,a=n||`blob-file`):(i=new Blob([e],{type:`text/plain`}),a=n||`text-file.txt`),r.append(`file`,i,a);let o=(await this.client.request({method:`POST`,url:`/api/file/upload`,params:{path:t},data:r,timeout:6e4})).data;return{success:o.success??!0,source_path:a,destination_path:t,file_size:o.file_size,error:o.error}}async fileDownload(e){let t=await this.client.get(`/api/file/download`,{params:{path:e},timeout:6e4}),n,r;if(typeof t.data==`string`)n=t.data,r=new Blob([t.data]).size;else if(t.data instanceof ArrayBuffer)n=new Blob([t.data]),r=t.data.byteLength;else if(t.data instanceof Blob)n=t.data,r=t.data.size;else{let e=JSON.stringify(t.data);n=e,r=new Blob([e]).size}return{success:!0,source_path:e,content:n,file_size:r}}async gitChanges(e,t={}){let n={path:e};t.ref!==void 0&&(n.ref=t.ref);try{return(await this.client.get(`/api/git/changes`,{params:n})).data}catch(e){throw Error(`Failed to get git changes: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async gitDiff(e,t={}){let n={path:e};t.ref!==void 0&&(n.ref=t.ref);try{return(await this.client.get(`/api/git/diff`,{params:n})).data}catch(e){throw Error(`Failed to get git diff: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async uploadText(e,t,n){return this.fileUpload(e,t,n)}async uploadFileObject(e,t){return this.fileUpload(e,t)}async downloadAsText(e){let t=await this.fileDownload(e);if(!t.success)throw Error(t.error||`Download failed`);return typeof t.content==`string`?t.content:t.content instanceof Blob?await t.content.text():``}async downloadAsBlob(e){let t=await this.fileDownload(e);if(!t.success)throw Error(t.error||`Download failed`);return t.content instanceof Blob?t.content:typeof t.content==`string`?new Blob([t.content],{type:`text/plain`}):new Blob}async downloadAndSave(e,t){let n=await this.downloadAsBlob(e),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=t||e.split(`/`).pop()||`download`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)}close(){this.bash.close(),this.client.close()}},u={execute_command:`Execute a bash command in the terminal within a persistent shell session.
|
|
2
2
|
|
|
3
3
|
### Command Execution
|
|
4
4
|
* One command at a time: You can only execute one bash command at a time. If you need to run multiple commands sequentially, use \`&&\` or \`;\` to chain them together.
|
package/build/assets/{verification-settings-B4DL3Tez.js → verification-settings-Vr5cN4md.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{yt as e}from"./vendor-styling-Bcgpimp9.js";import{U as t}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~f9xdmd0z-DLMP7bZx.js";import{t as n}from"./sdk-section-page-
|
|
1
|
+
import{yt as e}from"./vendor-styling-Bcgpimp9.js";import{U as t}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~f9xdmd0z-DLMP7bZx.js";import{t as n}from"./sdk-section-page-D0K1dBQY.js";var r=e(),i=new Set([`verification.confirmation_mode`,`verification.security_analyzer`]);function a({scope:e=`personal`,renderTopContent:t,testId:a=`verification-settings-screen`}){return(0,r.jsx)(n,{scope:e,settingsSources:[{settingsSource:`conversation_settings`,sectionKeys:[`verification`]},{settingsSource:`agent_settings`,sectionKeys:[`verification`],excludeKeys:i}],header:t?()=>t():void 0,testId:a})}var o=t(a);export{o as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{E as e}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-CYPMCkX1.js";var t=e(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);export{t};
|
package/build/favicon-16x16.png
CHANGED
|
Binary file
|
package/build/favicon-32x32.png
CHANGED
|
Binary file
|
package/build/favicon.ico
CHANGED
|
Binary file
|
package/build/index.html
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>OpenHands</title><meta name="description" content="Let's Start Building!"/><link rel="icon" type="image/svg+xml" href="/favicon.svg"/><link rel="modulepreload" href="/assets/manifest-
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>OpenHands</title><meta name="description" content="Let's Start Building!"/><link rel="icon" type="image/svg+xml" href="/favicon.svg"/><link rel="modulepreload" href="/assets/manifest-1cf33a7b.js"/><link rel="modulepreload" href="/assets/entry.client-BO2KQj0y.js"/><link rel="modulepreload" href="/assets/rolldown-runtime-Cyuzqnbw.js"/><link rel="modulepreload" href="/assets/vendor-styling-Bcgpimp9.js"/><link rel="modulepreload" href="/assets/active-backend-context-mY7Gff5c.js"/><link rel="modulepreload" href="/assets/vendor~entry.client-Di4qO77Y.js"/><link rel="modulepreload" href="/assets/providers-DuSn9s2i.js"/><link rel="modulepreload" href="/assets/vendor~entry.client-BfviqoVc.js"/><link rel="modulepreload" href="/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~g4xrpilz-CYPMCkX1.js"/><link rel="modulepreload" href="/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~f9xdmd0z-DLMP7bZx.js"/><link rel="modulepreload" href="/assets/utils-DsWhWn2F.js"/><link rel="modulepreload" href="/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~f1hl7voa-BrmgjeOw.js"/><link rel="modulepreload" href="/assets/agent-server-ui-style-scope-DdG0ZAHu.js"/><link rel="modulepreload" href="/assets/root-DOLLQteU.js"/><link rel="modulepreload" href="/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hakxo2tj-ClV0p9g3.js"/><link rel="modulepreload" href="/assets/useQuery-B38jBavx.js"/><link rel="modulepreload" href="/assets/use-config-C959QcRC.js"/><link rel="modulepreload" href="/assets/use-onboarding-completion-CJU4MNAY.js"/><link rel="modulepreload" href="/assets/brand-button-BUlDL-mz.js"/><link rel="modulepreload" href="/assets/base-modal-DkVyzFMt.js"/><link rel="modulepreload" href="/assets/loading-spinner-DRFyh6Iy.js"/><link rel="modulepreload" href="/assets/modal-backdrop-X-vKo61e.js"/><link rel="modulepreload" href="/assets/modal-body-C3bGicn4.js"/><link rel="modulepreload" href="/assets/navigation-context-BOGzIng3.js"/><link rel="modulepreload" href="/assets/use-save-settings--C6LZXfI.js"/><link rel="modulepreload" href="/assets/use-settings-DIAo5KFk.js"/><link rel="modulepreload" href="/assets/color-themes-DTj5Ylbr.js"/><link rel="modulepreload" href="/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~bi2r7bko-VFnwct3q.js"/><link rel="modulepreload" href="/assets/useQueries-B3T1a7qt.js"/><link rel="modulepreload" href="/assets/organization-service.api-CQ73CB-S.js"/><link rel="modulepreload" href="/assets/proxy-BiyDhMBd.js"/><link rel="modulepreload" href="/assets/form-control-classes-CtVAktAy.js"/><link rel="modulepreload" href="/assets/modal-classes-DFFO6BMU.js"/><link rel="modulepreload" href="/assets/useMutation-DHLpZ6J0.js"/><link rel="modulepreload" href="/assets/use-tracking-COqZLobY.js"/><link rel="modulepreload" href="/assets/settings-service.api-CTJRrvMu.js"/><link rel="modulepreload" href="/assets/settings-Chfn5xTD.js"/><link rel="stylesheet" href="/assets/root-B5JXKp1P.css"/></head><body data-agent-server-ui="" class="m-0"><div data-agent-server-ui="" style="--oh-color-logo:#cfb755;--oh-color-base:var(--cool-grey-950);--oh-color-base-secondary:var(--cool-grey-925);--oh-color-danger:#e76a5e;--oh-color-success:#a5e75e;--oh-color-basic:var(--cool-grey-400);--oh-color-tertiary:var(--cool-grey-800);--oh-color-tertiary-light:var(--cool-grey-300);--oh-color-content:var(--cool-grey-100);--oh-color-content-2:var(--cool-grey-50);--oh-background:var(--cool-grey-950);--oh-foreground:var(--cool-grey-100);--oh-surface:var(--cool-grey-925);--oh-surface-foreground:var(--cool-grey-100);--oh-surface-raised:var(--cool-grey-900);--oh-surface-deep:var(--cool-grey-975);--oh-overlay:var(--cool-grey-925);--oh-overlay-foreground:var(--cool-grey-100);--oh-muted:var(--cool-grey-400);--oh-text-secondary:var(--cool-grey-300);--oh-text-tertiary:var(--cool-grey-200);--oh-text-dim:var(--cool-grey-500);--oh-text-subtle:var(--cool-grey-600);--oh-interactive-hover:var(--cool-grey-700);--oh-interactive-hover-low:var(--cool-grey-900);--oh-interactive-active:var(--cool-grey-800);--oh-interactive-selected:var(--cool-grey-600);--oh-scrollbar:color-mix(in srgb, var(--cool-grey-400) 30%, transparent);--oh-scrollbar-hover:color-mix(in srgb, var(--cool-grey-400) 50%, transparent);--oh-default:var(--cool-grey-800);--oh-default-foreground:var(--cool-grey-100);--oh-accent-foreground:var(--cool-grey-950);--oh-success:#a5e75e;--oh-success-foreground:var(--cool-grey-950);--oh-warning-foreground:var(--cool-grey-950);--oh-danger:#e76a5e;--oh-danger-foreground:var(--cool-grey-50);--oh-segment:var(--cool-grey-925);--oh-segment-foreground:var(--cool-grey-100);--oh-border-width:1px;--oh-field-border-width:1px;--oh-border:var(--cool-grey-700);--oh-border-input:var(--cool-grey-600);--oh-border-subtle:var(--cool-grey-800);--oh-separator:rgba(113, 120, 136, 0.5);--oh-focus:#ffffff;--oh-status-success:#1FBD53;--oh-status-error:#FF684E;--oh-link:var(--cool-grey-100);--oh-radius:8px;--oh-field-radius:8px;--oh-surface-shadow:none;--oh-overlay-shadow:none;--oh-field-shadow:none;--oh-bg-dark:var(--cool-grey-950);--oh-bg-light:var(--cool-grey-900);--oh-bg-input:var(--cool-grey-800);--oh-bg-workspace:var(--cool-grey-925);--oh-text-editor-base:var(--cool-grey-400);--oh-text-editor-active:var(--cool-grey-300);--oh-bg-editor-sidebar:var(--cool-grey-925);--oh-bg-editor-active:var(--cool-grey-900);--oh-border-editor-sidebar:var(--cool-grey-800);--oh-bg-neutral-muted:color-mix(in srgb, var(--cool-grey-300) 20%, transparent)"><div class="dark min-h-screen text-foreground" data-theme="dark"><script>
|
|
2
2
|
console.log(
|
|
3
3
|
"💿 Hey developer 👋. You can provide a way better UX than this " +
|
|
4
4
|
"when your app is loading JS modules and/or running `clientLoader` " +
|
|
5
5
|
"functions. Check out https://reactrouter.com/start/framework/route-module#hydratefallback " +
|
|
6
6
|
"for more information."
|
|
7
7
|
);
|
|
8
|
-
</script><div data-rht-toaster="" style="position:fixed;z-index:9999;top:16px;left:16px;right:16px;bottom:16px;pointer-events:none"></div><div id="modal-portal-exit"></div></div></div><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"v8_passThroughRequests":false,"v8_trailingSlashAwareDataRequests":false,"unstable_previewServerPrerendering":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":true};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());</script><script type="module" async="">import "/assets/manifest-
|
|
9
|
-
import * as route0 from "/assets/root-
|
|
8
|
+
</script><div data-rht-toaster="" style="position:fixed;z-index:9999;top:16px;left:16px;right:16px;bottom:16px;pointer-events:none"></div><div id="modal-portal-exit"></div></div></div><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"v8_passThroughRequests":false,"v8_trailingSlashAwareDataRequests":false,"unstable_previewServerPrerendering":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":true};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());</script><script type="module" async="">import "/assets/manifest-1cf33a7b.js";
|
|
9
|
+
import * as route0 from "/assets/root-DOLLQteU.js";
|
|
10
10
|
|
|
11
11
|
window.__reactRouterRouteModules = {"root":route0};
|
|
12
12
|
|
|
13
|
-
import("/assets/entry.client-
|
|
13
|
+
import("/assets/entry.client-BO2KQj0y.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$--><script>window.__reactRouterContext.streamController.close();</script><!--/$--><!--/$--></body></html>
|
|
@@ -893,6 +893,8 @@
|
|
|
893
893
|
"MCP$INSTALLED_BADGE": "مثبت",
|
|
894
894
|
"MCP$TOGGLE_ADD_SERVER": "تثبيت الخادم",
|
|
895
895
|
"MCP$TOGGLE_REMOVE_SERVER": "إزالة الخادم",
|
|
896
|
+
"MCP$TOGGLE_ENABLE_SERVER": "تفعيل الخادم",
|
|
897
|
+
"MCP$TOGGLE_DISABLE_SERVER": "تعطيل الخادم",
|
|
896
898
|
"MCP$INSTALL_BUTTON": "تثبيت",
|
|
897
899
|
"MCP$VIEW_DOCS": "عرض الوثائق →",
|
|
898
900
|
"MCP$INSTALL_SUCCESS": "تم حفظ خادم MCP.",
|
|
@@ -893,6 +893,8 @@
|
|
|
893
893
|
"MCP$INSTALLED_BADGE": "Instal·lat",
|
|
894
894
|
"MCP$TOGGLE_ADD_SERVER": "Instal·la el servidor",
|
|
895
895
|
"MCP$TOGGLE_REMOVE_SERVER": "Elimina el servidor",
|
|
896
|
+
"MCP$TOGGLE_ENABLE_SERVER": "Activa el servidor",
|
|
897
|
+
"MCP$TOGGLE_DISABLE_SERVER": "Desactiva el servidor",
|
|
896
898
|
"MCP$INSTALL_BUTTON": "Instal·la",
|
|
897
899
|
"MCP$VIEW_DOCS": "Veure la documentació →",
|
|
898
900
|
"MCP$INSTALL_SUCCESS": "Servidor MCP desat.",
|
|
@@ -893,6 +893,8 @@
|
|
|
893
893
|
"MCP$INSTALLED_BADGE": "Installiert",
|
|
894
894
|
"MCP$TOGGLE_ADD_SERVER": "Server installieren",
|
|
895
895
|
"MCP$TOGGLE_REMOVE_SERVER": "Server entfernen",
|
|
896
|
+
"MCP$TOGGLE_ENABLE_SERVER": "Server aktivieren",
|
|
897
|
+
"MCP$TOGGLE_DISABLE_SERVER": "Server deaktivieren",
|
|
896
898
|
"MCP$INSTALL_BUTTON": "Installieren",
|
|
897
899
|
"MCP$VIEW_DOCS": "Dokumentation ansehen →",
|
|
898
900
|
"MCP$INSTALL_SUCCESS": "MCP-Server gespeichert.",
|
|
@@ -893,6 +893,8 @@
|
|
|
893
893
|
"MCP$INSTALLED_BADGE": "Installed",
|
|
894
894
|
"MCP$TOGGLE_ADD_SERVER": "Install server",
|
|
895
895
|
"MCP$TOGGLE_REMOVE_SERVER": "Remove server",
|
|
896
|
+
"MCP$TOGGLE_ENABLE_SERVER": "Enable server",
|
|
897
|
+
"MCP$TOGGLE_DISABLE_SERVER": "Disable server",
|
|
896
898
|
"MCP$INSTALL_BUTTON": "Install",
|
|
897
899
|
"MCP$VIEW_DOCS": "View documentation →",
|
|
898
900
|
"MCP$INSTALL_SUCCESS": "MCP server saved.",
|
|
@@ -893,6 +893,8 @@
|
|
|
893
893
|
"MCP$INSTALLED_BADGE": "Instalado",
|
|
894
894
|
"MCP$TOGGLE_ADD_SERVER": "Instalar servidor",
|
|
895
895
|
"MCP$TOGGLE_REMOVE_SERVER": "Eliminar servidor",
|
|
896
|
+
"MCP$TOGGLE_ENABLE_SERVER": "Activar servidor",
|
|
897
|
+
"MCP$TOGGLE_DISABLE_SERVER": "Desactivar servidor",
|
|
896
898
|
"MCP$INSTALL_BUTTON": "Instalar",
|
|
897
899
|
"MCP$VIEW_DOCS": "Ver documentación →",
|
|
898
900
|
"MCP$INSTALL_SUCCESS": "Servidor MCP guardado.",
|
|
@@ -893,6 +893,8 @@
|
|
|
893
893
|
"MCP$INSTALLED_BADGE": "Installé",
|
|
894
894
|
"MCP$TOGGLE_ADD_SERVER": "Installer le serveur",
|
|
895
895
|
"MCP$TOGGLE_REMOVE_SERVER": "Supprimer le serveur",
|
|
896
|
+
"MCP$TOGGLE_ENABLE_SERVER": "Activer le serveur",
|
|
897
|
+
"MCP$TOGGLE_DISABLE_SERVER": "Désactiver le serveur",
|
|
896
898
|
"MCP$INSTALL_BUTTON": "Installer",
|
|
897
899
|
"MCP$VIEW_DOCS": "Voir la documentation →",
|
|
898
900
|
"MCP$INSTALL_SUCCESS": "Serveur MCP enregistré.",
|
|
@@ -893,6 +893,8 @@
|
|
|
893
893
|
"MCP$INSTALLED_BADGE": "Installato",
|
|
894
894
|
"MCP$TOGGLE_ADD_SERVER": "Installa server",
|
|
895
895
|
"MCP$TOGGLE_REMOVE_SERVER": "Rimuovi server",
|
|
896
|
+
"MCP$TOGGLE_ENABLE_SERVER": "Abilita server",
|
|
897
|
+
"MCP$TOGGLE_DISABLE_SERVER": "Disabilita server",
|
|
896
898
|
"MCP$INSTALL_BUTTON": "Installa",
|
|
897
899
|
"MCP$VIEW_DOCS": "Visualizza la documentazione →",
|
|
898
900
|
"MCP$INSTALL_SUCCESS": "Server MCP salvato.",
|
|
@@ -893,6 +893,8 @@
|
|
|
893
893
|
"MCP$INSTALLED_BADGE": "インストール済み",
|
|
894
894
|
"MCP$TOGGLE_ADD_SERVER": "サーバーをインストール",
|
|
895
895
|
"MCP$TOGGLE_REMOVE_SERVER": "サーバーを削除",
|
|
896
|
+
"MCP$TOGGLE_ENABLE_SERVER": "サーバーを有効化",
|
|
897
|
+
"MCP$TOGGLE_DISABLE_SERVER": "サーバーを無効化",
|
|
896
898
|
"MCP$INSTALL_BUTTON": "インストール",
|
|
897
899
|
"MCP$VIEW_DOCS": "ドキュメントを表示 →",
|
|
898
900
|
"MCP$INSTALL_SUCCESS": "MCP サーバーを保存しました。",
|
|
@@ -893,6 +893,8 @@
|
|
|
893
893
|
"MCP$INSTALLED_BADGE": "설치됨",
|
|
894
894
|
"MCP$TOGGLE_ADD_SERVER": "서버 설치",
|
|
895
895
|
"MCP$TOGGLE_REMOVE_SERVER": "서버 제거",
|
|
896
|
+
"MCP$TOGGLE_ENABLE_SERVER": "서버 사용",
|
|
897
|
+
"MCP$TOGGLE_DISABLE_SERVER": "서버 사용 안 함",
|
|
896
898
|
"MCP$INSTALL_BUTTON": "설치",
|
|
897
899
|
"MCP$VIEW_DOCS": "문서 보기 →",
|
|
898
900
|
"MCP$INSTALL_SUCCESS": "MCP 서버가 저장되었습니다.",
|
|
@@ -893,6 +893,8 @@
|
|
|
893
893
|
"MCP$INSTALLED_BADGE": "Installert",
|
|
894
894
|
"MCP$TOGGLE_ADD_SERVER": "Installer server",
|
|
895
895
|
"MCP$TOGGLE_REMOVE_SERVER": "Fjern server",
|
|
896
|
+
"MCP$TOGGLE_ENABLE_SERVER": "Aktiver server",
|
|
897
|
+
"MCP$TOGGLE_DISABLE_SERVER": "Deaktiver server",
|
|
896
898
|
"MCP$INSTALL_BUTTON": "Installer",
|
|
897
899
|
"MCP$VIEW_DOCS": "Vis dokumentasjon →",
|
|
898
900
|
"MCP$INSTALL_SUCCESS": "MCP-server lagret.",
|