mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-29 21:07:40 +01:00
## Thinking Path > - Paperclip lets people manage AI agents and govern their access to outside services. > - Apps connections keep provider credentials in the instance vault and mediate every action through grants, policies, and audit. > - Agents currently have no Apps connection for reading or managing 1Password items with an operator-supplied service-account token. > - 1Password supports this through its official SDK; its documentation MCP server does not expose vault operations. > - This pull request adds a one-field service-account connection and registers eight reviewed SDK actions through the existing native-provider catalog. > - Operators can select vault permissions in 1Password and agent/action access in Paperclip without installing a CLI or handing durable credentials to agents. ## Linked Issues or Issue Description Related: #16144 adds 1Password as Paperclip's secret-storage backend. This PR adds the separate Apps/tool-access flow with a per-connection credential; it does not change secret providers or use a server-wide ambient token. **Subsystem affected** Apps catalog, native tool-provider registry, and shared connection setup. **Problem or motivation** People need to paste their own `OP_SERVICE_ACCOUNT_TOKEN`, find official service-account setup instructions, and authorize agents to use the selected vaults through ordinary Paperclip governance. **Proposed solution** Add `1password/service-account`, with a password field labeled **Paste your 1Password Service Account token** and a link to [1Password's creation instructions](https://www.1password.dev/service-accounts/get-started#create-a-service-account). Use the pinned official `@1password/sdk` 0.5.0 for vault/item listing, item and secret-reference reads, and item create/update/archive/delete. **Alternatives considered** A remote MCP card would not provide vault access. A local CLI or a third-party MCP package adds installation and credential surfaces that the official SDK avoids. ## What Changed - Added the source and generated catalog definition, permission review, official light/dark artwork, documentation, and capability-map references. - Added a provider-owned SDK bridge with strict schemas, account-domain validation, contract hashes, fixed errors, bounded output, and disposable workers with cancellation/deadlines. - Registered the provider through master's native-provider catalog; existing setup, health, discovery, gateway, policy, and audit owners remain in place. - Labeled the single password field **Paste your 1Password Service Account token**. The shared formatter preserves explicit credential prompts; ordinary key labels retain their existing presentation. - Added credential-ownership, gateway read/write, policy/revocation, worker, setup UI, and interactive Storybook coverage. ## Verification - Final review follow-up: added two deterministic worker-entry tests for nested exact-token redaction and oversized-output rejection. Removing each guard caused exactly its regression test to fail. The focused provider suite passed **15 tests**, and the official server typecheck passed after rebuilding stale workspace SDK artifacts. Current head `569cb7f9bd57db791fb13a6034ce69bf50878cb1` passed the full [CI run](https://github.com/paperclipai/paperclip/actions/runs/40016166260), including typecheck, build, unit/integration tests, and all eight browser shards. The required `ci / verify` and `ci / e2e` gates passed. [Greptile](https://github.com/paperclipai/paperclip/pull/17249#issuecomment-6353731805) and [Paperclip Review](https://github.com/paperclipai/paperclip/pull/17249#issuecomment-6372165895) each rated this exact head **5/5**, with no open findings. Paperclip Review completed with a neutral check because its scoped reviewer could not inspect CI; the full CI result was verified separately. Other neutral checks and intentionally skipped Storybook jobs contain no actionable findings. - CI recovery on the same commit: the first attempt lost six jobs. Five logged simultaneous runner shutdowns at 18:49 UTC on 2026-10-23; the sixth stopped logging before a test result and its root cause was not established. No assertion failure appeared in the retrieved logs. All six jobs and the aggregate gates passed one failed-job retry. [CI run](https://github.com/paperclipai/paperclip/actions/runs/40005754936). - Copy follow-up: the catalog, provider, and setup UI suites passed **275 tests**. The governed gateway lifecycle passed **3 tests** (one live-only test skipped), including create, update, archive, and delete. UI token gates and map checks passed. The branch was rebased onto `9c442cf48e` to resolve additive catalog conflicts while retaining the Vercel and Supabase entries. The existing live write proof below remains applicable; this follow-up changes presentation only. - Five affected suites, including the existing Daytona consumer, passed **290 tests** (one opt-in live test skipped in fixture mode). Full `pnpm -r typecheck` and `pnpm build` passed. The local broad-suite attempt could not complete because PostgreSQL semaphore exhaustion prevented a competing integration suite from starting; the complete affected-file retry passed after disposable-process cleanup. The prior commit `f208a8aff6dc28859cc3f343497e18d85f124579` passed the complete CI matrix. All CI build, typecheck, test, and browser gates also passed on the earlier commit `9e2f3d3140368a08da43b004b2e8d3a0f4c0fa4d`. The separate Paperclip Review reported a worker-result regression-test gap on that head; the follow-up above addresses it. Its review thread is resolved, and both fresh current-head reviews are clean as recorded above. - Token gates, module boundaries, brand validation, map checks, and Storybook catalog checks passed. - Direct SDK create/archive/delete and rejected-call coverage passed (13 provider tests); the Storybook Permissions/Test play completed successfully in Chromium. Server and UI typechecks passed after those fixes. Greptile passed prior commit `9e2f3d3140368a08da43b004b2e8d3a0f4c0fa4d` at **5/5**. Both reviewers also passed the worker-test follow-up at **5/5** as recorded above. - Live 1Password proof on 2026-10-22: connect, eight-action discovery, vault listing through an actual run-scoped gateway, refresh, reconnect preserving identity, another read, removal, and denial through the retained session passed. Credential absence was asserted in responses/audit; an exact-token scan of inspected logs and changed files passed. - Real browser: Connectors → 1Password → token entry → personal access limited to one disposable agent → completion → Permissions → Test `onepassword_list_vaults` succeeded. The disposable connection was removed afterward. - Compiled-worker smoke initially exposed inherited Node launch flags. Workers now use explicit empty `execArgv`; the compiled worker then authenticated successfully and listed one vault. - Live write proof on **2026-10-23**: the replacement Keychain token passed all eight actions through the actual run-scoped gateway for both personal and shared credentials. The test created, listed, read, updated, resolved a secret from, archived, and deleted two synthetic items. Both were absent from subsequent item lists. Refresh/reconnect, identity preservation, removal, retained-session denial, and credential absence passed. The live suite passed **3 tests** (one fixture-only test skipped) in 116.65 seconds. The expanded fixture suite passed **3 tests** (one live-only test skipped); the 13 provider tests and server typecheck passed. An exact-token scan passed over 64 source/log files. - Failure history: the original token denied creation on 2026-10-22 and created no item. The first 2026-10-23 attempt stopped before provider calls because host PostgreSQL semaphore limits prevented test-database startup. A temporary ten-connection test profile allowed the complete retry to pass without changing shared services or host limits. A new delete-result assertion also exposed an outdated fixture response (`success` instead of `deleted`); the fixture was corrected and the complete fixture suite passed. Official contract sources: [service accounts](https://www.1password.dev/service-accounts/get-started), [SDKs](https://www.1password.dev/sdks), [item management](https://www.1password.dev/sdks/manage-items), [official JavaScript SDK](https://github.com/1Password/onepassword-sdk-js). ## Risks - Authorized item/secret reads intentionally return secret values to the agent and ordinary tool-result history. Select trusted agents and use restricted service-account vaults; the connection token itself is redacted. - New connections retain existing Paperclip action defaults, including Allowed writes/destructive actions for selected agents. 1Password still enforces the token's permissions. - Service-account access cannot be changed in place. Create a replacement account and reconnect to change vault permissions; read-only keys can connect but cannot write. - SDK authentication happens per action in a disposable worker. Calls have a 30-second maximum; cancellation stops local work, while a mutation already accepted by 1Password can still finish. Writes are never automatically retried. - Additive dependency and catalog change; no database migration. Disable/remove the connection to withdraw access, or remove the provider from catalog visibility for rollback. ## Model Used OpenAI Codex, based on GPT-6, with code editing, shell/browser tools, and live provider verification. A more specific runtime model ID and context-window limit were not exposed in this session. ## Checklist - [x] I have included a thinking path that traces from project context to this change - [x] I have specified the model used (with version and capability details) - [x] I have checked ROADMAP.md and confirmed this PR does not duplicate planned core work - [x] I have searched GitHub for duplicate or related PRs and linked them above - [x] I have either (a) linked existing issues with `Fixes: #` / `Closes #` / `Refs #` OR (b) described the issue in-PR following the relevant issue template - [x] I have not referenced internal/instance-local Paperclip issues or links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip` URLs) - [x] My branch name describes the change (e.g. `docs/...`, `fix/...`) and contains no internal Paperclip ticket id or instance-derived details - [x] I have run tests locally and they pass - [x] I have added or updated tests where applicable - [x] I have updated relevant documentation to reflect my changes - [x] I have considered and documented any risks above - [x] All Paperclip CI gates are green - [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups - [x] I will address all Greptile and reviewer comments before requesting merge --------- Co-authored-by: Paperclip <noreply@paperclip.ing>
721 lines
18 KiB
JSON
721 lines
18 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"providers": [
|
|
{
|
|
"slug": "1password",
|
|
"provider": "1Password",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/1password.svg",
|
|
"darkAsset": "/brands/apps/1password-dark.svg"
|
|
},
|
|
{
|
|
"slug": "agentmail",
|
|
"provider": "AgentMail",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/agentmail.svg"
|
|
},
|
|
{
|
|
"slug": "airtable",
|
|
"provider": "Airtable",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/airtable.svg"
|
|
},
|
|
{
|
|
"slug": "anthropic",
|
|
"provider": "Anthropic",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/anthropic.svg",
|
|
"darkAsset": "/brands/apps/anthropic-dark.svg"
|
|
},
|
|
{
|
|
"slug": "arcade",
|
|
"provider": "Arcade",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/arcade.png"
|
|
},
|
|
{
|
|
"slug": "asana",
|
|
"provider": "Asana",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/asana.svg"
|
|
},
|
|
{
|
|
"slug": "bedrock",
|
|
"provider": "Amazon Bedrock",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/bedrock.svg"
|
|
},
|
|
{
|
|
"slug": "beehiiv",
|
|
"provider": "beehiiv",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/beehiiv.png"
|
|
},
|
|
{
|
|
"slug": "bitly",
|
|
"provider": "Bitly",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/bitly.svg"
|
|
},
|
|
{
|
|
"slug": "box",
|
|
"provider": "Box",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/box.svg"
|
|
},
|
|
{
|
|
"slug": "braintrust",
|
|
"provider": "Braintrust",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/braintrust.png",
|
|
"darkAsset": "/brands/apps/braintrust-dark.png"
|
|
},
|
|
{
|
|
"slug": "brex",
|
|
"provider": "Brex",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/brex.svg",
|
|
"darkAsset": "/brands/apps/brex-dark.svg"
|
|
},
|
|
{
|
|
"slug": "candid",
|
|
"provider": "Candid",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/candid.png"
|
|
},
|
|
{
|
|
"slug": "clickhouse",
|
|
"provider": "ClickHouse",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/clickhouse.svg",
|
|
"darkAsset": "/brands/apps/clickhouse-dark.svg"
|
|
},
|
|
{
|
|
"slug": "cloudflare",
|
|
"provider": "Cloudflare",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/cloudflare.svg"
|
|
},
|
|
{
|
|
"slug": "cloudinary",
|
|
"provider": "Cloudinary",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/cloudinary.svg",
|
|
"darkAsset": "/brands/apps/cloudinary-dark.svg"
|
|
},
|
|
{
|
|
"slug": "coda",
|
|
"provider": "Coda",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/coda.svg"
|
|
},
|
|
{
|
|
"slug": "composio",
|
|
"provider": "Composio",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/composio.svg",
|
|
"darkAsset": "/brands/apps/composio-dark.svg"
|
|
},
|
|
{
|
|
"slug": "context7",
|
|
"provider": "Context7",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/context7.svg",
|
|
"darkAsset": "/brands/apps/context7-dark.svg"
|
|
},
|
|
{
|
|
"slug": "discord",
|
|
"provider": "Discord",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/discord.svg",
|
|
"darkAsset": "/brands/apps/discord-dark.svg"
|
|
},
|
|
{
|
|
"slug": "ditto",
|
|
"provider": "Ditto",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/ditto.png"
|
|
},
|
|
{
|
|
"slug": "egnyte",
|
|
"provider": "Egnyte",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/egnyte.svg"
|
|
},
|
|
{
|
|
"slug": "embat",
|
|
"provider": "Embat",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/embat.svg"
|
|
},
|
|
{
|
|
"slug": "enterpret",
|
|
"provider": "Enterpret",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/enterpret.png"
|
|
},
|
|
{
|
|
"slug": "executor",
|
|
"provider": "Executor",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/executor.png"
|
|
},
|
|
{
|
|
"slug": "gauge",
|
|
"provider": "Gauge",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/gauge.png"
|
|
},
|
|
{
|
|
"slug": "github",
|
|
"provider": "GitHub",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/github.svg",
|
|
"darkAsset": "/brands/apps/github-dark.svg"
|
|
},
|
|
{
|
|
"slug": "github-code-review-bot",
|
|
"provider": "GitHub Code Review Bot",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/github.svg",
|
|
"darkAsset": "/brands/apps/github-dark.svg"
|
|
},
|
|
{
|
|
"slug": "gmail",
|
|
"provider": "Gmail",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/gmail.svg"
|
|
},
|
|
{
|
|
"slug": "google-sheets",
|
|
"provider": "Google Sheets",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-sheets.svg"
|
|
},
|
|
{
|
|
"slug": "google",
|
|
"provider": "Google",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google.svg"
|
|
},
|
|
{
|
|
"slug": "google-drive",
|
|
"provider": "Google Drive",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-drive.svg"
|
|
},
|
|
{
|
|
"slug": "google-docs",
|
|
"provider": "Google Docs",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-docs.svg"
|
|
},
|
|
{
|
|
"slug": "google-slides",
|
|
"provider": "Google Slides",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-slides.svg"
|
|
},
|
|
{
|
|
"slug": "google-calendar",
|
|
"provider": "Google Calendar",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-calendar.svg",
|
|
"aliases": [
|
|
"gcal"
|
|
]
|
|
},
|
|
{
|
|
"slug": "google-chat",
|
|
"provider": "Google Chat",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-chat.svg"
|
|
},
|
|
{
|
|
"slug": "google-people",
|
|
"provider": "Google People",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-people.svg",
|
|
"aliases": [
|
|
"google contacts"
|
|
]
|
|
},
|
|
{
|
|
"slug": "google-workspace-search",
|
|
"provider": "Google Workspace Search",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-workspace-search.svg",
|
|
"aliases": [
|
|
"workspace search"
|
|
]
|
|
},
|
|
{
|
|
"slug": "google-workspace",
|
|
"provider": "Google Workspace",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/google-people.svg",
|
|
"aliases": [
|
|
"google suite",
|
|
"g suite"
|
|
]
|
|
},
|
|
{
|
|
"slug": "hugging-face",
|
|
"provider": "Hugging Face",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/hugging-face.svg",
|
|
"aliases": [
|
|
"huggingface"
|
|
]
|
|
},
|
|
{
|
|
"slug": "jira",
|
|
"provider": "Jira",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/jira.svg"
|
|
},
|
|
{
|
|
"slug": "kernel",
|
|
"provider": "Kernel",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/kernel.svg"
|
|
},
|
|
{
|
|
"slug": "linear",
|
|
"provider": "Linear",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/linear.svg",
|
|
"darkAsset": "/brands/apps/linear-dark.svg"
|
|
},
|
|
{
|
|
"slug": "local-falcon",
|
|
"provider": "Local Falcon",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/local-falcon.png"
|
|
},
|
|
{
|
|
"slug": "make",
|
|
"provider": "Make",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/make.svg",
|
|
"darkAsset": "/brands/apps/make-dark.svg"
|
|
},
|
|
{
|
|
"slug": "manufact",
|
|
"provider": "Manufact",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/manufact.svg",
|
|
"darkAsset": "/brands/apps/manufact-dark.svg"
|
|
},
|
|
{
|
|
"slug": "mem0",
|
|
"provider": "Mem0",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/mem0.svg"
|
|
},
|
|
{
|
|
"slug": "miro",
|
|
"provider": "Miro",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/miro.svg"
|
|
},
|
|
{
|
|
"slug": "mixpanel",
|
|
"provider": "Mixpanel",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/mixpanel.svg",
|
|
"darkAsset": "/brands/apps/mixpanel-dark.svg"
|
|
},
|
|
{
|
|
"slug": "microsoft-teams",
|
|
"provider": "Microsoft Teams",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/microsoft-teams.svg",
|
|
"aliases": [
|
|
"teams"
|
|
]
|
|
},
|
|
{
|
|
"slug": "netlify",
|
|
"provider": "Netlify",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/netlify.svg",
|
|
"darkAsset": "/brands/apps/netlify-dark.svg"
|
|
},
|
|
{
|
|
"slug": "neon",
|
|
"provider": "Neon",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/neon.png"
|
|
},
|
|
{
|
|
"slug": "notion",
|
|
"provider": "Notion",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/notion.svg"
|
|
},
|
|
{
|
|
"slug": "oreilly",
|
|
"provider": "O'Reilly",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/oreilly.svg"
|
|
},
|
|
{
|
|
"slug": "pagerduty",
|
|
"provider": "PagerDuty",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/pagerduty.svg"
|
|
},
|
|
{
|
|
"slug": "planetscale",
|
|
"provider": "PlanetScale",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/planetscale.svg",
|
|
"darkAsset": "/brands/apps/planetscale-dark.svg"
|
|
},
|
|
{
|
|
"slug": "posthog",
|
|
"provider": "PostHog",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/posthog.svg",
|
|
"darkAsset": "/brands/apps/posthog-dark.svg"
|
|
},
|
|
{
|
|
"slug": "postman",
|
|
"provider": "Postman",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/postman.svg"
|
|
},
|
|
{
|
|
"slug": "razorpay",
|
|
"provider": "Razorpay",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/razorpay.svg",
|
|
"darkAsset": "/brands/apps/razorpay-dark.svg"
|
|
},
|
|
{
|
|
"slug": "resend",
|
|
"provider": "Resend",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/resend.svg",
|
|
"darkAsset": "/brands/apps/resend-dark.svg"
|
|
},
|
|
{
|
|
"slug": "sanity",
|
|
"provider": "Sanity",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/sanity.svg",
|
|
"darkAsset": "/brands/apps/sanity-dark.svg"
|
|
},
|
|
{
|
|
"slug": "sentry",
|
|
"provider": "Sentry",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/sentry.svg",
|
|
"darkAsset": "/brands/apps/sentry-dark.svg"
|
|
},
|
|
{
|
|
"slug": "shopify",
|
|
"provider": "Shopify",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/shopify.svg"
|
|
},
|
|
{
|
|
"slug": "similarweb",
|
|
"provider": "Similarweb",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/similarweb.svg",
|
|
"darkAsset": "/brands/apps/similarweb-dark.svg"
|
|
},
|
|
{
|
|
"slug": "slack",
|
|
"provider": "Slack",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/slack.svg"
|
|
},
|
|
{
|
|
"slug": "stripe",
|
|
"provider": "Stripe",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/stripe.svg"
|
|
},
|
|
{
|
|
"slug": "supabase",
|
|
"provider": "Supabase",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/supabase.svg"
|
|
},
|
|
{
|
|
"slug": "superagent",
|
|
"provider": "Superagent",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/superagent.png"
|
|
},
|
|
{
|
|
"slug": "telem",
|
|
"provider": "Telem.AI",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/telem.svg",
|
|
"darkAsset": "/brands/apps/telem-dark.svg"
|
|
},
|
|
{
|
|
"slug": "telegram",
|
|
"provider": "Telegram",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/telegram.svg"
|
|
},
|
|
{
|
|
"slug": "ticket-tailor",
|
|
"provider": "Ticket Tailor",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/ticket-tailor.svg",
|
|
"darkAsset": "/brands/apps/ticket-tailor-dark.svg"
|
|
},
|
|
{
|
|
"slug": "ticktick",
|
|
"provider": "TickTick",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/ticktick.svg"
|
|
},
|
|
{
|
|
"slug": "todoist",
|
|
"provider": "Todoist",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/todoist.svg"
|
|
},
|
|
{
|
|
"slug": "vercel",
|
|
"provider": "Vercel",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/vercel.svg",
|
|
"darkAsset": "/brands/apps/vercel-dark.svg"
|
|
},
|
|
{
|
|
"slug": "webflow",
|
|
"provider": "Webflow",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/webflow.svg"
|
|
},
|
|
{
|
|
"slug": "wix",
|
|
"provider": "Wix",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/wix.svg",
|
|
"darkAsset": "/brands/apps/wix-dark.svg"
|
|
},
|
|
{
|
|
"slug": "xero",
|
|
"provider": "Xero",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/xero.svg"
|
|
},
|
|
{
|
|
"slug": "youcom",
|
|
"provider": "You.com",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/youcom.svg",
|
|
"darkAsset": "/brands/apps/youcom-dark.svg"
|
|
},
|
|
{
|
|
"slug": "zapier",
|
|
"provider": "Zapier",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/zapier.svg"
|
|
},
|
|
{
|
|
"slug": "openai",
|
|
"provider": "OpenAI",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/openai.svg",
|
|
"darkAsset": "/brands/apps/openai-dark.svg"
|
|
},
|
|
{
|
|
"slug": "openrouter",
|
|
"provider": "OpenRouter",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/openrouter.svg",
|
|
"darkAsset": "/brands/apps/openrouter-dark.svg"
|
|
},
|
|
{
|
|
"slug": "xai",
|
|
"provider": "Grok",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/xai.svg",
|
|
"darkAsset": "/brands/apps/xai-dark.svg"
|
|
},
|
|
{
|
|
"slug": "imessage-photon",
|
|
"provider": "iMessage Photon",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/imessage-photon.png"
|
|
},
|
|
{
|
|
"slug": "jam-dev",
|
|
"provider": "Jam.dev",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/jam-dev.svg",
|
|
"darkAsset": "/brands/apps/jam-dev-dark.svg",
|
|
"aliases": [
|
|
"jam"
|
|
]
|
|
},
|
|
{
|
|
"slug": "railway",
|
|
"provider": "Railway",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/railway.svg",
|
|
"darkAsset": "/brands/apps/railway-dark.svg"
|
|
},
|
|
{
|
|
"slug": "fireflies",
|
|
"provider": "Fireflies",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/fireflies.svg"
|
|
},
|
|
{
|
|
"slug": "cognee",
|
|
"provider": "Cognee",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/cognee.png"
|
|
},
|
|
{
|
|
"slug": "honcho",
|
|
"provider": "Honcho",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/honcho.svg"
|
|
},
|
|
{
|
|
"slug": "supermemory",
|
|
"provider": "Supermemory",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/supermemory.png"
|
|
},
|
|
{
|
|
"slug": "zep",
|
|
"provider": "Zep",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/zep.png"
|
|
},
|
|
{
|
|
"slug": "browser-use-cloud",
|
|
"provider": "Browser Use Cloud",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/browser-use.svg",
|
|
"sourceUrl": "https://browser-use.com/logo-primary.svg",
|
|
"retrievedAt": "2026-09-29"
|
|
},
|
|
{
|
|
"slug": "chat-completions-api",
|
|
"provider": "Chat Completions API",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/api-key-generic.svg"
|
|
},
|
|
{
|
|
"slug": "local",
|
|
"provider": "Local endpoint",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/api-key-generic.svg"
|
|
},
|
|
{
|
|
"slug": "messages-api",
|
|
"provider": "Messages API",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/api-key-generic.svg"
|
|
},
|
|
{
|
|
"slug": "responses-api",
|
|
"provider": "Responses API",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/api-key-generic.svg"
|
|
},
|
|
{
|
|
"slug": "speko",
|
|
"provider": "Speko",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/speko.svg"
|
|
},
|
|
{
|
|
"slug": "calendly",
|
|
"provider": "Calendly",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/calendly.png"
|
|
},
|
|
{
|
|
"slug": "exa",
|
|
"provider": "Exa",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/exa.svg"
|
|
},
|
|
{
|
|
"slug": "firecrawl",
|
|
"provider": "Firecrawl",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/firecrawl.svg"
|
|
},
|
|
{
|
|
"slug": "gsc-wizard",
|
|
"provider": "GSC Wizard",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/gsc-wizard.png"
|
|
},
|
|
{
|
|
"slug": "parallel-search",
|
|
"provider": "Parallel Search",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/parallel.svg",
|
|
"darkAsset": "/brands/apps/parallel-dark.svg"
|
|
},
|
|
{
|
|
"slug": "tavily",
|
|
"provider": "Tavily",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/tavily.png"
|
|
},
|
|
{
|
|
"slug": "windsor-ai",
|
|
"provider": "Windsor.ai",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/windsor-ai.png"
|
|
},
|
|
{
|
|
"slug": "clickup",
|
|
"provider": "ClickUp",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/clickup.png"
|
|
},
|
|
{
|
|
"slug": "klaviyo",
|
|
"provider": "Klaviyo",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/klaviyo.png"
|
|
},
|
|
{
|
|
"slug": "monday",
|
|
"provider": "monday.com",
|
|
"catalogVisible": false,
|
|
"localAsset": "/brands/apps/monday.png",
|
|
"darkAsset": "/brands/apps/monday-dark.png"
|
|
},
|
|
{
|
|
"slug": "daytona",
|
|
"provider": "Daytona",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/daytona.svg",
|
|
"darkAsset": "/brands/apps/daytona-dark.svg"
|
|
},
|
|
{
|
|
"slug": "paperclip-notebook",
|
|
"provider": "Paperclip Notebook",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/paperclip-notebook.svg",
|
|
"darkAsset": "/brands/apps/paperclip-notebook-dark.svg"
|
|
},
|
|
{
|
|
"slug": "unikraft",
|
|
"provider": "Unikraft",
|
|
"catalogVisible": true,
|
|
"localAsset": "/brands/apps/unikraft.svg"
|
|
}
|
|
]
|
|
}
|