공개 memory endpoint와 scope
아래 예시는 committed OpenAPI contract에 존재하는 /v1 path를 사용합니다. X-API-Key(또는 server가 허용하는 Bearer 형식)로 인증하며, read operation에는 read-capable token이, write에는 write-capable token이 필요합니다. 대부분의 memory endpoint에서 OpenAPI response schema를 의도적으로 untyped로 두므로, server가 현재 반환하는 documented implementation key는 별도로 표시합니다. GET /v1/memories는 현재 memories(array)와 total(number)을 가진 object를 반환하지만 이 property들은 OpenAPI에 선언되어 있지 않습니다.
- Create/capture: POST /v1/remember 및 POST /v1/memories (201).
- List: GET /v1/memories에서 limit, offset, path 사용 (200).
- Search: GET /v1/memories/search; GET /v1/recall은 같은 search operation (200).
- Assemble context: POST /v1/recall/context (200).
- Update: PATCH /v1/memories/{memory_id}; delete: DELETE /v1/memories/{memory_id}.
- 잊기: POST /v1/memories/{memory_id}/forget; 복원: POST /v1/memories/{memory_id}/restore; 알림 완료: POST /v1/reminders/{reminder_id}/complete.
Create request schema
POST /v1/remember는 MemoryRememberRequest를 받고, POST /v1/memories는 MemoryStoreRequest를 받습니다. 둘 다 content(string)와 path(string)을 필수로 요구합니다. OpenAPI schema의 optional field에는 metadata(object), source(string 또는 null), logic_path(string 또는 null), embedding(number array 또는 null), bucket(string, default public), memory_id, semantic_key, memory_type, version, status, superseded_by, embedding_provider, embedding_model, embedding_dimension, importance, confidence, expires_at, scope, team_id 및 provenance가 포함됩니다. MemoryRememberRequest는 dedupe(boolean, default true)를 추가로 선언하며, MemoryStoreRequest의 memory_type 기본값은 semantic, importance/confidence 기본값은 0.5/1.0입니다.
POST /v1/remember
X-API-Key: <your-assigned-api-key>
Content-Type: application/json
{
"content": "The actual text to remember.",
"path": "projects/memory-os/decisions",
"scope": "memory-os",
"source": "codex",
"metadata": { "kind": "decision" }
}Create response schema
OpenAPI 201 response content는 두 create operation 모두 untyped JSON object입니다. 현재 remember implementation은 {id: string, status: "remembered"}를 반환하고 store implementation은 생성된 memory identifier를 반환합니다. 이를 committed OpenAPI document가 선언한 것보다 강한 schema로 취급하지 말고 implementation behavior로 취급하세요.
{
"id": "<memory-id>",
"status": "remembered"
}Search와 recall
GET /v1/memories/search와 GET /v1/recall은 Search Memories operation을 공유하며 Cache-Control: no-store, private를 반환합니다. Filter는 retrieval 범위를 좁힐 수 있지만 token이 승인한 범위를 넓힐 수는 없습니다.
GET /v1/memories/search?query=current%20MCP%20decision&limit=5&scope=memory-os&explain=true
X-API-Key: <your-assigned-api-key>Search request parameter와 response
OpenAPI query parameter는 query(string, required), limit(integer, default 5), threshold(number 또는 null), path(string, default %), bucket(string, default %), scope(string 또는 null), team_id(string 또는 null), memory_type(string, default %), status(string, default active), explain(boolean, default false), prefer_working(boolean, default false) 및 candidate_count(integer 또는 null)입니다. OpenAPI는 200 response를 untyped JSON object로 두며, 현재 implementation은 results(array)와 coverage(number)를 반환하고 해당될 때 keyguard_decrypt_grant_ids를 추가할 수 있습니다.
- 현재 관찰된 response shape: { results: [...], coverage: number }.
- Spec는 search limit 또는 candidate_count의 maximum을 선언하지 않으므로 client는 보수적인 값을 사용하고 validation error를 처리해야 합니다.
Context request와 response schema
POST /v1/recall/context는 RecallContextRequest를 받습니다. query(string)는 required이고, path와 bucket의 기본값은 %, memory_type은 auto, status는 active, max_items는 8, max_tokens는 1500, prefer_working은 true, include_knowledge는 false이며 scope, team_id, threshold 및 limit는 nullable입니다. OpenAPI 200 response는 untyped object입니다. 일반적인 authenticated-owner implementation은 version, query, retrieval_plan, budget, items, context_text 및 answer_status를 가진 value-density-v2 context object를 반환하고, temporary-agent branch는 같은 core query/budget/items/context_text field를 가진 version 1.0을 반환합니다.
POST /v1/recall/context
X-API-Key: <your-assigned-api-key>
Content-Type: application/json
{
"query": "recent progress on memory-os",
"scope": "memory-os",
"memory_type": "auto",
"status": "active",
"max_items": 8,
"max_tokens": 1500,
"prefer_working": true
}Memory update와 forget schema
PATCH /v1/memories/{memory_id}는 MemoryUpdateRequest를 수락합니다. 모든 필드는 선택 사항이며 content, path, metadata, source, logic_path, embedding, bucket, semantic_key, memory_type, status, superseded_by, embedding_provider, embedding_model, embedding_dimension, importance, confidence, expires_at, scope, team_id, provenance, supersession_reason, merge_metadata(기본값 true), merge_provenance(기본값 true), detect_conflicts(기본값 true)가 선언됩니다. DELETE /v1/memories/{memory_id}는 query mode(기본값 soft_delete) 및 reason을 수락합니다. mode=hard_delete 및 mode=redact는 되돌릴 수 없으며, 호환성 규칙에 따라 memory:write가 수락되므로 쓰기 토큰이 영구 삭제를 트리거할 수 있습니다. POST /v1/memories/{memory_id}/forget은 mode(기본값 soft_delete), reason, replacement_content 및 metadata가 포함된 MemoryForgetRequest를 수락합니다. POST /v1/memories/{memory_id}/restore는 소프트 삭제된 레코드를 복원합니다. 이러한 수명 주기 작업의 200 응답은 공개 OpenAPI 스키마에 타입이 지정되어 있습니다.
POST /v1/memories/<memory-id>/forget
X-API-Key: <your-assigned-api-key>
Content-Type: application/json
{
"mode": "soft_delete",
"reason": "No longer needed"
}Pagination, error와 rate limit
OpenAPI에서 list pagination을 노출하는 것은 GET /v1/memories뿐이며 limit 기본값은 100, offset 기본값은 0이고 optional path filter가 있습니다. Search는 offset 대신 limit를 사용하고 context는 page cursor 대신 max_items/max_tokens를 사용합니다. 문서화된 validation error는 HTTPValidationError: {detail: [{loc: (string|integer)[], msg: string, type: string}]}입니다. Runtime authorization failure는 Authentication page의 shared error contract를 사용합니다. Runtime은 활성화된 60-second window 안에서 writes/lifecycle mutation에 180-per-minute memory_write policy를, search/recall/context와 memory read에 300-per-minute memory_search policy를 적용하며 quota는 configurable이고 OpenAPI에는 없습니다.
{
"version": "value-density-v2",
"query": "recent progress on memory-os",
"retrieval_plan": {},
"budget": {
"max_items": 8,
"max_tokens": 1500,
"used_items": 3,
"used_tokens": 412,
"skipped_items": 0,
"filtered_items": 0,
"structured_skipped_items": 0,
"budget_skipped_items": 0,
"truncated_items": 0,
"candidate_items": 3,
"selection_strategy": "top-primary-plus-stable-value-density",
"budget_tradeoff": false,
"token_scope": "context_text"
},
"items": [],
"context_text": "",
"answer_status": "no_confirmed_answer"
}출처: MCP tool surface