On this page you will learn how to delete one record or every record taken from one document, what the server returns, and why you should not pass both parameters at once.
The running example: docs/deploy.md was rewritten, and the team wants to remove every fact saved from its old version.
Purpose
Section titled “Purpose”forget performs a soft delete: the record gets a deletion timestamp, no longer shows up in search, and its knowledge-graph links are removed. There are two modes:
- by
memory_id: one record; - by
source_id: every active record from that source in the workspace (cascade).
Parameters
Section titled “Parameters”| Parameter | Type | Default | Description |
|---|---|---|---|
memory_id | string or null | null | ID of the record to delete. |
workspace | string | "default" | Workspace that holds the record. |
source_id | string or null | null | Source whose records should all be deleted. |
At least one of memory_id and source_id is required.
Response
Section titled “Response”Delete by memory_id:
| Field | Description |
|---|---|
id | Record ID from the request. |
forgotten | true if the record was found and deleted; false if it does not exist, is already deleted, or is not visible to you. |
workspace, tenant_id, api_version | Service fields. |
at | Operation time, ISO 8601. |
Delete by source_id:
| Field | Description |
|---|---|
source_id | Source from the request. |
forgotten_count | Number of records deleted (may be 0). |
workspace, tenant_id, api_version | Service fields. |
at | Operation time, ISO 8601. |
Example
Section titled “Example”Delete every fact from the old version of the document:
{ "source_id": "docs/deploy.md", "workspace": "default"}{ "api_version": "1.0", "source_id": "docs/deploy.md", "tenant_id": "t-3f9a", "workspace": "default", "forgotten_count": 3, "at": "2026-10-05T10:02:41.118204+00:00"}Delete one record:
{ "memory_id": "4d428a41-e7b0-4f81-a886-f40c6f6c766c" }{ "api_version": "1.0", "id": "4d428a41-e7b0-4f81-a886-f40c6f6c766c", "tenant_id": "t-3f9a", "workspace": "default", "forgotten": true, "at": "2026-10-05T10:03:05.540911+00:00"}Errors
Section titled “Errors”| Text | Cause |
|---|---|
Either memory_id or source_id must be provided | Neither memory_id nor source_id was passed. |
workspace '…' was deleted and cannot be reused | The workspace was deleted. |
403 Forbidden: workspace access denied for project | The workspace belongs to another project. |
MCP rate limit exceeded, project call limit exceeded | Too many calls per minute. |
[MMW Notice]: … | No subscription, grace period (deleting is not allowed, read-only) or suspended account. |
A record that does not exist is not an error: you get forgotten: false or forgotten_count: 0.
- Only what you can see. In an organization,
forgettouches only records you can read under the visibility rules. Other people’s drafts are not deleted even if they share thesource_id. - Only the key’s project. Records of other projects are out of reach.
- Soft delete. A record cannot be restored over MCP. For full deletion of account data, see Data and deletion.
remembernever deletes anything on its own: removing outdated facts takes an explicitforget.
Next steps
Section titled “Next steps” validate_memory Find stale records first, then decide what to delete.
Source and freshness When to update and when to delete.
Data and deletion Account deletion and retention periods.