Files
PaperClipAI/ui/public/brands/apps/manifest.json
DottaandPaperclip 18dac1e1ef feat(connections): add experimental memory providers and remote MCP access (#13942)
## Thinking Path

> - Paperclip manages AI agents and their work.
> - Connections give agents governed access to external tools.
> - Agents need durable memory across tasks and execution environments.
> - Mem0, Zep, Supermemory, Cognee, and Honcho provide hosted memory
tools.
> - This pull request adds their setup flows behind an experimental
toggle.
> - It also delivers assigned MCP tools through the native remote Codex
runner.
> - Operators can connect a provider once and use the same governed
tools locally or in Daytona.

## Linked Issues or Issue Description

**Problem or motivation**

The Apps catalog lacks a complete set of memory providers. Remote native
Codex agents also need access to assigned managed MCP tools without
receiving provider credentials.

**Proposed solution**

Add five memory connectors behind the disabled-by-default Experimental
memory connectors setting. Use the existing connection setup and
permissions UI. Default their tools to Allowed. Preserve company
boundaries, operator permission changes, provider scopes, and audit
attribution.

**Alternatives considered**

Direct provider credentials in each sandbox would duplicate setup and
bypass the managed gateway. The remote runner instead uses its existing
protocol channel to call the gateway on the server.

**Roadmap alignment**

This maintainer-requested experiment supports the Memory / Knowledge and
Connected Apps roadmap areas. It adds provider connections without
introducing a separate memory UI. Related connector authoring
documentation is tracked in #13692; no duplicate memory-provider
implementation was found.

## What Changed

- Add provider definitions, official branding, and the experimental
setting for all five providers.
- Use OAuth for Zep and Supermemory, API credentials for Mem0 and
Honcho, and a bundled Cloud API bridge for Cognee with no runtime
downloads or subprocesses.
- Default memory tools to Allowed and classify destructive actions
explicitly.
- Fix personal remote credential resolution and propagate provider tool
errors.
- Relay assigned managed MCP tools to remote native Codex through the
runner protocol. Recheck current authority for each call and rotate
stale tool contracts.
- Add 21 Storybook states and complete OAuth walkthrough fixtures.
- Document provider research, sanitized tool inventory, and live local
and Daytona proof.

## Verification

- Passed workspace typecheck: `pnpm -r typecheck`.
- Passed production build: `pnpm build`.
- Full local `pnpm test:run`: 13,273 passed, with failures from
process/readiness timeouts under parallel load. Reran all 16 affected
suites with one worker: 456 passed, leaving two macOS `/var` versus
`/private/var` path assertions. Both passed with `TMPDIR=/private/tmp`.
No test failures remain unverified. Latest-head remote CI passes all 54
checks (two optional Storybook jobs skipped). Greptile is 5/5 with no
unresolved findings.
- Latest Cognee gateway regression: 71 passed, including public
deployment without a runtime host and immediate recovery after a
provider error. Bundled bridge tests: 25 passed.
- Browser setup and real agent tasks exercised all five providers. Mem0,
Cognee, Zep, and Honcho have successful store/retrieve proof.
- Supermemory now has scoped read/write consent. Local storage and real
Daytona write, document read, and semantic recall passed; indexing
completion was verified before claiming success.
- All five providers were exercised through a real Daytona sandbox and
its native runner MCP relay. Provider credentials remained on the
server. The final bundled Cognee bridge also passed a fresh Daytona
store/recall run. All disposable sandboxes were removed and verified
absent after testing.
- Storybook is rebuilt and contains the experimental toggle, catalog,
setup, permissions, and error states. The Zep and Supermemory access
steps advance correctly.

## Risks

- Provider OAuth scopes and plan limits remain independent of Paperclip
tool permissions. An Allowed tool can still be rejected by the provider.
- Providers can queue memory indexing; save acceptance does not prove
that semantic recall is ready.
- Remote tool contracts must stay synchronized with current connection
authority. Regression tests cover revocation and stale contracts.
- This change has no database migration. Existing connections remain
usable when the experimental catalog toggle is disabled.

## Model Used

OpenAI Codex, GPT-6 Astra (`gpt-6-astra`), with reasoning, repository
edits, code execution, and browser automation. The exact context window
size is not exposed in this session. Live acceptance agents used
`gpt-5.6-sol`.

## 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>
2026-09-24 15:54:38 -05:00

521 lines
13 KiB
JSON

{
"schemaVersion": 1,
"providers": [
{
"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": "beehiiv",
"provider": "beehiiv",
"catalogVisible": false,
"localAsset": "/brands/apps/beehiiv.png"
},
{
"slug": "bitly",
"provider": "Bitly",
"catalogVisible": false,
"localAsset": "/brands/apps/bitly.svg"
},
{
"slug": "box",
"provider": "Box",
"catalogVisible": true,
"localAsset": "/brands/apps/box.svg"
},
{
"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": false,
"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": "egnyte",
"provider": "Egnyte",
"catalogVisible": false,
"localAsset": "/brands/apps/egnyte.svg"
},
{
"slug": "embat",
"provider": "Embat",
"catalogVisible": false,
"localAsset": "/brands/apps/embat.svg"
},
{
"slug": "executor",
"provider": "Executor",
"catalogVisible": true,
"localAsset": "/brands/apps/executor.png"
},
{
"slug": "github",
"provider": "GitHub",
"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-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": "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": false,
"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": "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": "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": false,
"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"
}
]
}