error string. Some endpoints add code, details, or retry information; there is no universal requestId or error envelope. MCP tools may instead return text content with isError: true.
IDs, methods, and bodies
Memory and KB IDs are Convex IDs, not UUIDs. Copy IDs returned by the service. Recall uses POST; health supports GET and POST. HEAD is not a universal authenticated probe.{"error":"Rate limit exceeded."} with Retry-After, limit, remaining, and scope headers. Some routes use older responses; do not require identical error shapes across the API.
Content and provider errors
Update and supersede return HTTP 409 witherror: "redacted_content_write", plus fields and message, when a redaction placeholder would overwrite a secret-bearing stored field. Restore the intended content, or explicitly set allowRedactedContent: true if replacing it with the placeholder is deliberate.
Content screening checks prompt injection, exfiltration, role hijacking, invisible Unicode, and encoded payloads. It is not a general violence or copyright classifier. A blocked memory write returns HTTP 400 with {"error":"Memory blocked: <reason> [<threatId>]"}. For example:
degraded, degradation, and diagnostics where present.
KB stable keys support upserts; duplicate content is not universally an error. Chunk metadata and titles are optional. A usable import body is:
Named error codes
Not every endpoint returnscode. Read the HTTP status and error text as well.
Debugging checklist
- Confirm the HTTP method and URL in the endpoint map.
- Check the Bearer credential with an authenticated health request.
- Parse your JSON locally and verify required fields, types, and returned IDs.
- Reproduce with the smallest useful request in the same account and scope.
- Inspect status, response body, and Retry-After. Preserve a request ID when the endpoint supplies one; it is not universal.
- For an import interruption or write timeout, inspect saved state before retrying.