From de878a6cfbb5c1df5b3e82d189831d7037d39fb7 Mon Sep 17 00:00:00 2001 From: jackaldenryan Date: Tue, 18 Aug 2026 16:06:51 -0500 Subject: [PATCH] Document terms, privacy, usage, and logo for the Zep Memory plugin. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make Zep’s live Terms of Service and Privacy Policy visible in the READMEs, and add the logo plus usage/OAuth notes the Cursor listing would need later. Co-authored-by: Cursor --- .cursor-plugin/marketplace.json | 6 ++- AGENTS.md | 19 +++++++-- CHANGELOG.md | 3 ++ README.md | 62 +++++++++++++++++++++++++++-- plugins/zep-memory/README.md | 56 ++++++++++++++++++++++++++ plugins/zep-memory/assets/logo.png | Bin 0 -> 12026 bytes 6 files changed, 137 insertions(+), 9 deletions(-) create mode 100644 plugins/zep-memory/README.md create mode 100644 plugins/zep-memory/assets/logo.png diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index 85055d5..1b20dc3 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -12,7 +12,11 @@ { "name": "zep-memory", "source": "zep-memory", - "description": "Long-term memory for knowledge work via the Zep Memory MCP server.", + "description": "Use Zep as long-term memory for knowledge work. Bundles a skill plus the Zep Memory MCP server.", + "logo": "assets/logo.png", + "homepage": "https://help.getzep.com/memory-mcp-server", + "repository": "https://github.com/getzep/zep-memory-plugin", + "license": "Apache-2.0", "category": "productivity", "keywords": [ "zep", diff --git a/AGENTS.md b/AGENTS.md index 5731d9f..be94952 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -32,6 +32,14 @@ ChatGPT Work. `plugins/zep-memory/.cursor-plugin/` unless we need Cursor-only components (rules, agents, commands, hooks, or variables). Auth stays client-managed OAuth; do not put API keys or `${VAR}` headers in `mcp.json`. +- Keep `plugins/zep-memory/assets/logo.png` and reference it from + `.cursor-plugin/marketplace.json` (`logo`: `assets/logo.png`). Agent Plugins + `plugin.json` has no logo field. +- Keep Terms of Service and Privacy Policy links highly visible in + `README.md` and `plugins/zep-memory/README.md`, pointing at + https://www.getzep.com/legal/terms/ and + https://www.getzep.com/legal/privacy/. Do not invent a plugin-only legal + page; this plugin uses the Zep Memory API. - This repository hosts its own marketplace catalogs (`.claude-plugin/marketplace.json`, `.agents/plugins/marketplace.json`, and `.cursor-plugin/marketplace.json`). Plugin `source` entries must stay @@ -145,7 +153,10 @@ open Zep sign-in. - **Team marketplace:** import this GitHub repository. Cursor reads `.cursor-plugin/marketplace.json` and resolves `source` `zep-memory` under `pluginRoot` `plugins`. -- **Official Cursor Marketplace (later):** submit the repository at - [cursor.com/marketplace/publish](https://cursor.com/marketplace/publish). - Inclusion and updates are a Cursor review process, not "merge this repo and - it ships." +- **Official Cursor Marketplace:** submit this GitHub repository at + [cursor.com/marketplace/publish](https://cursor.com/marketplace/publish) + while signed into the Cursor account that should own the listing. Cursor + reviews identity, code, and every later update; request a re-index after + changes. Merging to GitHub does not publish or update the public listing. + The plugin must stay free, Apache-2.0, and public. Keep ToS/privacy links + visible in the READMEs. diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e90846..c2b0fa4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ All notable changes to the Zep Memory plugin. - Document Cursor as an Agent Plugins host (no extra per-plugin Cursor manifest). Add `.cursor-plugin/marketplace.json` so this repo can be imported as a Cursor team marketplace pointing at `plugins/zep-memory`. +- Prepare the public Cursor Marketplace listing: commit `assets/logo.png`, + document usage and OAuth configuration, and put Zep’s Terms of Service and + Privacy Policy links at the top of the repo and plugin READMEs. ## 0.2.10 — 2026-08-14 diff --git a/README.md b/README.md index ac7d9b9..2f0f474 100644 --- a/README.md +++ b/README.md @@ -10,14 +10,61 @@ Bundles: standalone graphs via LLM-mediated Memory MCP tool calls - The Zep Memory MCP server at `https://api.getzep.com/mcp` +## Terms and privacy + +**Read these before installing or using this plugin.** They are the terms of +service and privacy policy for this plugin. + +- **[Terms of Service](https://www.getzep.com/legal/terms/)** +- **[Privacy Policy](https://www.getzep.com/legal/privacy/)** + +The plugin files (skill, manifests, and MCP config) are also licensed under the +[Apache License 2.0](LICENSE). + +This plugin connects the host to Zep’s Memory MCP server. You sign in with +OAuth. After that, the assistant can search and add to your Zep memory — your +user graph, and standalone graphs when your project enables them. That API and +memory data is handled under the Privacy Policy above. + +## Usage + +Once installed and signed in, ask the assistant to recall or save durable +context. For example: + +- What do you remember about me? +- Search my Zep memory for relevant context on this topic. +- Save this to my Zep memory. + +The skill tells the assistant to prefer Zep over the host’s built-in memory, +to look up stored context before guessing, and to write durable facts +(preferences, corrections, procedures, decisions, feedback) without waiting to +be asked. + +Install and product docs: [Memory MCP server](https://help.getzep.com/memory-mcp-server). + +## Configuration + +No API keys, plugin variables, or other secrets belong in this repository. Auth +is client-managed OAuth against `https://api.getzep.com/mcp`. + +The first Memory MCP call should prompt for Zep sign-in (work email → identity +provider → project). You need a Zep account whose project has Memory MCP +enabled. + +## Support + +- Docs: [Memory MCP server](https://help.getzep.com/memory-mcp-server) +- Issues: [getzep/zep-memory-plugin](https://github.com/getzep/zep-memory-plugin/issues) + ## Product intent - Teach knowledge-work assistants to use Zep as durable memory - LLM-written memories via MCP tools are the v1 write path (hooks / auto-ingest of every message are out of scope) -- Internal rollout first via Claude Team / Enterprise, ChatGPT workspace - distribution, and Cursor local / team-marketplace install; public - marketplace later +- Internal rollout via Claude Team / Enterprise, ChatGPT workspace + distribution, and Cursor local / team-marketplace install; public Cursor + Marketplace listing is a separate Cursor review after submitting this + repository - Docs follow-up: install instructions on the Memory MCP docs page ## Packaging note @@ -63,9 +110,16 @@ should prompt for Zep OAuth (work email → IdP → project). You can also import this GitHub repository as a Cursor team marketplace; `.cursor-plugin/marketplace.json` points at the same plugin root. +To list on the public [Cursor Marketplace](https://cursor.com/marketplace), +submit this repository at +[cursor.com/marketplace/publish](https://cursor.com/marketplace/publish). +Cursor reviews the listing and every later update; merging to GitHub does not +publish by itself. + ## Releasing Keep portable, Claude, and ChatGPT Work manifest versions synchronized with `python3 scripts/plugin_manifests.py set `, validate, then open a PR. How that reaches users (Claude org marketplace, ChatGPT Work workspace share, -public directories later) is documented under **Releasing** in [`AGENTS.md`](AGENTS.md). +Cursor team marketplace, public Cursor Marketplace) is documented under +**Releasing** in [`AGENTS.md`](AGENTS.md). diff --git a/plugins/zep-memory/README.md b/plugins/zep-memory/README.md new file mode 100644 index 0000000..92990ef --- /dev/null +++ b/plugins/zep-memory/README.md @@ -0,0 +1,56 @@ +# Zep Memory + +Use Zep as long-term memory for knowledge work in **Cursor**, **Claude Desktop +Chat**, **Claude Cowork**, and **ChatGPT Work**. + +Bundles: + +- The `zep-memory` skill — how to use Zep for user memory, threads, and + standalone graphs via LLM-mediated Memory MCP tool calls +- The Zep Memory MCP server at `https://api.getzep.com/mcp` + +## Terms and privacy + +**Read these before installing or using this plugin.** They are the terms of +service and privacy policy for this plugin. + +- **[Terms of Service](https://www.getzep.com/legal/terms/)** +- **[Privacy Policy](https://www.getzep.com/legal/privacy/)** + +The plugin files (skill, manifests, and MCP config) are also licensed under the +[Apache License 2.0](../../LICENSE). + +This plugin connects Cursor (and other supported hosts) to Zep’s Memory MCP +server. You sign in with OAuth. After that, the assistant can search and add to +your Zep memory — your user graph, and standalone graphs when your project +enables them. That API and memory data is handled under the Privacy Policy +above. + +## Usage + +Once installed and signed in, ask the assistant to recall or save durable +context. For example: + +- What do you remember about me? +- Search my Zep memory for relevant context on this topic. +- Save this to my Zep memory. + +The skill tells the assistant to prefer Zep over the host’s built-in memory, +to look up stored context before guessing, and to write durable facts (preferences, +corrections, procedures, decisions, feedback) without waiting to be asked. + +Install and product docs: [Memory MCP server](https://help.getzep.com/memory-mcp-server). + +## Configuration + +No API keys, plugin variables, or other secrets belong in this package. Auth is +client-managed OAuth against `https://api.getzep.com/mcp`. + +The first Memory MCP call should prompt for Zep sign-in (work email → identity +provider → project). You need a Zep account whose project has Memory MCP +enabled. + +## Support + +- Docs: [Memory MCP server](https://help.getzep.com/memory-mcp-server) +- Issues: [getzep/zep-memory-plugin](https://github.com/getzep/zep-memory-plugin/issues) diff --git a/plugins/zep-memory/assets/logo.png b/plugins/zep-memory/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..decff76920b5733c8a09018733765942095bbd95 GIT binary patch literal 12026 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 I3KpUN2V(Up3IG5A literal 0 HcmV?d00001