Skip to main content

api-reference

Memoria REST API endpoints, request/response formats, auth, rate limits. Use when calling or implementing API endpoints.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
matrixorigin/Memoria
آخر نشاط في المصدر
١٤ أغسطس ٢٠٢٦ في ٠٩:٥٧
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٥٩٧
التفرعات
٧٧

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
api-reference
description
Memoria REST API endpoints, request/response formats, auth, rate limits. Use when calling or implementing API endpoints.
## Memory CRUD ### List: `GET /v1/memories?limit=50&cursor=...&memory_type=semantic` Response: `{ "items": [...], "next_cursor": "..." }` ### Store: `POST /v1/memories` ```json { "content": "...", "memory_type": "semantic", "session_id": null } ``` Returns `201` with `MemoryResponse`. Types: `semantic` (default), `profile`, `procedural`, `working`, `tool_result` ### Batch Store: `POST /v1/memories/batch` ```json { "memories": [{ "content": "..." }, { "content": "...", "memory_type": "profile" }] } ``` ### Retrieve: `POST /v1/memories/retrieve` Hybrid vector + fulltext search, ranked by relevance. ```json { "query": "...", "top_k": 10, "memory_types": ["semantic"], "session_id": null, "explain": false } ``` `explain`: `false` | `true` (timing) | `"verbose"` (detailed) | `"analyze"` (full diagnostics) ### Search: `POST /v1/memories/search` ```json { "query": "...", "top_k": 10, "explain": false } ``` Same as retrieve but without session prioritization. ### Full-text Search: `POST /v1/memories/fulltext-search` Pure MatrixOne lexical full-text search with optional exact SQL pre-filters. It does not generate embeddings or run vector, graph, hybrid, temporal, or confidence scoring and is intentionally not exposed as an MCP tool. ```json { "query": "MatrixOne database", "extra_metadata_filter": {"scene": "incident", "rank": 2}, "subject_id": "subject-123", "memory_types": ["semantic"], "session_id": "session-123", "trust_tier": "T2", "branch": "main", "limit": 20 } ``` All supplied filters use `AND`. `session_id` is strict: unscoped memories with `session_id: null` are not included. This differs from retrieve/search session scoping, which can include unscoped memories. Metadata equality preserves JSON type families: number `2` may equal `2.0`, while string `"2"` does not equal number `2`. Query length is limited to 4096 UTF-8 bytes and `limit` to 1–100. Returns a plain memory array ordered by MatrixOne full-text score and then `memory_id`; each result exposes the score as `retrieval_score`. ### Correct by ID: `PUT /v1/memories/{id}/correct` ```json { "new_content": "...", "reason": "..." } ``` ### Correct by Query: `POST /v1/memories/correct` ```json { "query": "...", "new_content": "...", "reason": "..." } ``` Finds best match via semantic search, corrects it. Response includes `matched_memory_id`. ### Delete: `DELETE /v1/memories/{id}?reason=...` ### Bulk Purge: `POST /v1/memories/purge` ```json { "memory_ids": ["id1"], "memory_types": ["working"], "before": "2026-01-01T00:00:00", "reason": "..." } ``` All fields optional. Auto-creates safety snapshot. Response: `{ "purged": N, "snapshot_name": "..." }` ### Observe: `POST /v1/observe` ```json { "messages": [{ "role": "user", "content": "..." }] } ``` ### Profile: `GET /v1/profiles/me` ## Snapshots | Endpoint | Description | |----------|-------------| | `POST /v1/snapshots` | Create: `{ "name": "...", "description": "..." }` | | `GET /v1/snapshots` | List all | | `GET /v1/snapshots/{name}?detail=brief&limit=50&offset=0` | Detail (`brief`/`normal`/`full`) | | `DELETE /v1/snapshots/{name}` | Delete | | `GET /v1/snapshots/{name}/diff?limit=50` | Diff vs current state | | `POST /v1/snapshots/{name}/rollback` | Restore to snapshot | ## Branches | Endpoint | Description | |----------|-------------| | `POST /v1/branches` | Create: `{ "name": "..." }` | | `GET /v1/branches` | List all | | `POST /v1/branches/{name}/checkout` | Switch to branch | | `GET /v1/branches/{name}/diff` | Preview changes vs main | | `POST /v1/branches/{name}/merge` | Merge into main: `{ "strategy": "append" }` | | `DELETE /v1/branches/{name}` | Delete | ## Governance | Endpoint | Cooldown | Description | |----------|----------|-------------| | `POST /v1/governance?force=false` | 1 hour | Quarantine low-confidence, cleanup stale | | `POST /v1/consolidate?force=false` | 30 min | Detect contradictions, fix orphans | | `POST /v1/reflect?force=false` | 2 hours | Synthesize insights (needs LLM) | | `POST /v1/extract-entities` | — | Extract entities, build graph (needs LLM) | | `POST /v1/extract-entities/link` | — | Manually link entities to memories | | `GET /v1/entities` | — | List user's entities | LLM-free alternatives: `POST /v1/reflect/candidates`, `POST /v1/extract-entities/candidates` — return raw data for the calling agent to process. ## Feedback & Adaptive Retrieval Feedback signals improve retrieval ranking over time. The system learns which memories are useful/irrelevant for each user. ### How It Works 1. User retrieves memories via `memory_retrieve` or `memory_search` 2. Agent uses memories to answer questions 3. Agent calls `memory_feedback` with signal based on outcome 4. System adjusts `feedback_weight` parameter (auto-tuned daily by governance) 5. Future retrievals rank memories higher/lower based on accumulated feedback **Quantified Impact**: With default `feedback_weight=0.1`, a memory with 3 `useful` signals scores ~1.3x higher; one with 2 `wrong` signals scores ~0.9x lower. At `feedback_weight=0.3`, these become ~1.9x and ~0.7x respectively. ### Record Feedback: `POST /v1/memories/{id}/feedback` ```json { "signal": "useful", "context": "helped answer the question" } ``` Signals: `useful`, `irrelevant`, `outdated`, `wrong` Returns `201` with `{ "feedback_id": "..." }` **Errors**: - `404`: Memory not found - `422`: Invalid signal value ### Get Stats: `GET /v1/feedback/stats` Returns aggregated feedback counts: ```json { "useful": 42, "irrelevant": 5, "outdated": 3, "wrong": 1 } ``` ### Get by Tier: `GET /v1/feedback/by-tier` Returns feedback breakdown by trust tier (T1-T4). ### Tune Parameters: `POST /v1/retrieval-params/tune` Manually adjust retrieval scoring weights: ```json { "feedback_weight": 0.15 } ``` `feedback_weight`: 0.01–0.5 (default 0.1). Higher = feedback has more impact on ranking. Auto-tuning: `POST /v1/retrieval-params/tune` with empty body triggers automatic tuning based on accumulated feedback. **Errors**: - `422`: `feedback_weight` out of range - `200` with `"message"`: Not enough feedback (requires ≥10 signals) ### Get Parameters: `GET /v1/retrieval-params` Returns current retrieval parameters for the user. ### Related Tools | Tool | Relationship | |------|-------------| | `memory_retrieve` / `memory_search` | Feedback affects their ranking results | | `memory_correct` | Use instead of `wrong` feedback when content needs fixing | | `memory_purge` | Use instead of `outdated` feedback when memory should be deleted | | `memory_governance` | Auto-tunes `feedback_weight` daily based on feedback patterns | ## Episodic Memory ### Generate Summary: `POST /v1/sessions/{session_id}/summary` ```json { "mode": "full", "sync": true, "generate_embedding": true } ``` Modes: `full` (topic/action/outcome) | `lightweight` (3-5 bullets, max 3/session) Requires LLM (`LLM_API_KEY`). Returns 503 without it. ### Poll Task: `GET /v1/tasks/{task_id}` Response: `{ "task_id": "...", "status": "completed|processing|failed", "result": {...} }` ## Auth | Endpoint | Auth | Description | |----------|------|-------------| | `POST /auth/keys` | Master | Create API key: `{ "user_id": "...", "name": "..." }` | | `GET /auth/keys` | Bearer | List my keys | | `GET /auth/keys/{id}` | Bearer | Get key detail | | `PUT /auth/keys/{id}/rotate` | Bearer | Rotate (revoke old, issue new) | | `DELETE /auth/keys/{id}` | Bearer | Revoke | ## Admin (Master key required) | Endpoint | Description | |----------|-------------| | `GET /admin/stats` | System stats | | `GET /admin/users?cursor=...&limit=100` | List users | | `GET /admin/users/{id}/stats` | User stats | | `GET /admin/users/{id}/keys` | User's API keys | | `DELETE /admin/users/{id}/keys` | Revoke all user keys | | `DELETE /admin/users/{id}` | Deactivate user | | `POST /admin/governance/{id}/trigger?op=governance` | Trigger governance (`governance`/`consolidate`/`reflect`) | ## Plugin Admin (Master key required) | Endpoint | Description | |----------|-------------| | `GET/POST /admin/plugins/signers` | List/add trusted signers | | `POST /admin/plugins` | Publish plugin (base64 files) | | `POST /admin/plugins/:key/:ver/review` | Review: `{ "status": "active" }` | | `POST /admin/plugins/:key/:ver/score` | Score: `{ "score": 4.5 }` | | `GET/POST /admin/plugins/domains/:d/bindings` | List/create binding rules |
عرض على GitHub
ملف SKILL.md هذا كبير جدا، لذلك يعرض SkillsMP القسم الاول فقط هنا. عرض على GitHub