- Add docs/integrations/zapier.mdx and n8n.mdx, register both in docs.json
(Developer Tools) and docs/llms.txt
- Align n8n CD toolchain (pnpm 9 / Node 20) with the checks workflow so the
published artifact is built on the toolchain CI validated
- Add Mem0.node.json codex and copy it into dist via gulp for nodes-panel
discoverability
- Align search default limit to 50 across Zapier and n8n
Zapier:
- Bound the poll budget under Zapier's step timeout and default Wait for
Completion off; timeout message notes the add likely still succeeded
- Add offline unit tests (mocked z.request) and run them in CI
- Expose a Page input on Get Memories
- Encode memory_id in the delete path
- Update E2E to test the default no-wait path (add then search-retry)
n8n:
- Clarify the Infer description (controls extraction, not waiting)
- Add an App ID field and require at least one entity id before add
- Pass itemIndex into pollEvent errors
- Unwrap event results so wait-path output matches search and get many
- Add MIT LICENSE to zapier-mem0 (package.json declared MIT but shipped no
file; every peer commits one) + keywords/author/homepage for parity.
- Document the n8n and Zapier checks workflows in the AGENTS.md CI table.
- Title-case the ci-gate job display names (n8n Node, Zapier App) to match
the other integration jobs.
Match the repo's per-integration CI/CD convention (vercel-ai / pi-agent
pattern):
- n8n-nodes-mem0-checks.yml (lint + build + dist verify) and
n8n-nodes-mem0-cd.yml (npm publish --provenance via OIDC, dispatched by
the release router on tag n8n-nodes-mem0-v*).
- zapier-mem0-checks.yml (zapier validate) and zapier-mem0-cd.yml (manual
zapier push; requires ZAPIER_DEPLOY_KEY). Zapier deploys to Zapier's
platform, not npm, so it is not in the release router.
- Wire both packages into ci-gate.yml (path filters + call jobs + gate).
- Register the n8n tag prefix in release.yml and document it + the Zapier
manual-deploy in AGENTS.md.
- Skip the Zapier E2E suite when MEM0_API_KEY is absent so CI is green
offline (it still runs locally with a key).
- Switch both packages from npm to pnpm (pnpm-lock.yaml) to match the
repo convention (openclaw / pi-agent-plugin / vercel-ai-sdk); gitignore
package-lock.json.
- Replace the placeholder n8n node icon with the real Mem0 mark (same
asset used by integrations/mem0-plugin).
- Zapier: revert boolean/integer field defaults to strings — Zapier's
schema requires string defaults (zapier validate now passes with 0
errors). Runtime coercion (String(x)!=='false', Number()) is unchanged.
n8n: throw on FAILED memory events (was silently returned), poll on any
non-terminal status (PENDING or RUNNING), use top_k (not limit) for
search, coerce search/getAll responses to arrays, guard invalid-JSON
metadata, reject empty updates, mark user_id required; lint clean.
Zapier: coerce boolean fields (String(x) !== 'false') + boolean defaults
so "Wait"/"Infer = No" are honored, throw on HTTP >= 400 (was silent
empty/fake-success), throw on FAILED events, use top_k, numeric coercion
with clamping, mark user_id required.
Zapier Platform CLI app (zapier-mem0) with Add Memory / Delete Memory
creates and Search Memories / Get Memories searches against the Mem0 v3
API. Custom API-key auth (Authorization: Token), base-URL + auth
injected via beforeRequest middleware, non-2xx surfaced as errors.
Add Memory polls GET /v1/event/{id}/ for async extraction. Includes an
E2E test suite via createAppTester.
Programmatic n8n node (n8n-nodes-mem0) with Add/Search/Get Many/Get/
Update/Delete memory operations against the Mem0 v3 API, plus API-key
credentials and usableAsTool support for the AI Agent node.
Add uses POST /v3/memories/add/ and polls GET /v1/event/{id}/ until the
async extraction resolves. No runtime dependencies (n8n verification
requirement); calls the REST API directly. MIT licensed per-package.