add() request should be queued at all.
If a request is blocked, MemoryOS still returns HTTP 200. Check the response body: status and blocked_reason explain what happened.
Gate layers
Example blocked response
What is not a gate block
A request can pass the quality gate and still produce no permanent memory. That is handled by the extraction quality loop:
For example, this should usually pass the gate but not become a memory:
How to keep block rates low
- Send coherent conversation turns, not single-word fragments.
- Do not send the same fact repeatedly on every turn.
- Use
Idempotency-Keyfor application retries. - Watch
blocked_reason,budget_remaining_pct, andprocessing_statusonadd()responses. - Check job status when you need to know whether extraction stored, buffered, or ignored a signal.
Dashboard visibility
Tenant Dashboard -> Quality Log shows gate blocks and extraction quality signals in one place:- block layer counts
- pending weak signals
- reinforced signals
- retrieval feedback events
- correction jobs