{"openapi":"3.1.0","info":{"title":"Memory Store REST API","version":"v1"},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}},"paths":{"/v1/openapi.json":{"get":{"summary":"Read this OpenAPI document.","security":[],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/checkins":{"post":{"summary":"Create or resume thread context.","security":[{"bearerAuth":["mcp:exec:checkin"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/records":{"post":{"summary":"Record memory content.","security":[{"bearerAuth":["mcp:exec:record"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/recalls":{"post":{"summary":"Recall memories.","security":[{"bearerAuth":["mcp:exec:recall"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/report-issue":{"post":{"summary":"Report runtime feedback.","security":[{"bearerAuth":["mcp:exec:report-issue"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/workflows/{workflow_id}":{"get":{"summary":"Read workflow status.","security":[{"bearerAuth":["mcp:lowlevel:read"]},{"bearerAuth":["mcp:exec:record"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/episodes":{"get":{"summary":"List or search episodes.","security":[{"bearerAuth":["mcp:lowlevel:read"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"post":{"summary":"Create an episode.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/episodes/{episode_id}":{"get":{"summary":"Read an episode.","security":[{"bearerAuth":["mcp:lowlevel:read"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"patch":{"summary":"Update an episode.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"delete":{"summary":"Delete an episode.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/entities":{"get":{"summary":"List or search entities.","security":[{"bearerAuth":["mcp:lowlevel:read"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"post":{"summary":"Create an entity.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/entities/{entity_id}":{"get":{"summary":"Read an entity.","security":[{"bearerAuth":["mcp:lowlevel:read"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"patch":{"summary":"Update an entity.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"delete":{"summary":"Delete an entity.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/entities/{entity_id}/subgraph":{"get":{"summary":"Export an entity subgraph.","security":[{"bearerAuth":["mcp:lowlevel:read"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/threads":{"get":{"summary":"List threads.","security":[{"bearerAuth":["mcp:lowlevel:read"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"post":{"summary":"Create a thread.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/threads/{thread_id}":{"get":{"summary":"Read a thread.","security":[{"bearerAuth":["mcp:lowlevel:read"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"patch":{"summary":"Relabel a thread.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"delete":{"summary":"Archive a thread.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/threads/{thread_id}/export":{"get":{"summary":"Export a thread.","security":[{"bearerAuth":["mcp:lowlevel:read"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/orgs":{"get":{"summary":"List orgs the caller belongs to.","security":[{"bearerAuth":["mcp:store.manage"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"post":{"summary":"Create an org + its org-brain store.","security":[{"bearerAuth":["mcp:store.manage"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/orgs/{org_id}/members":{"get":{"summary":"List members of an org.","security":[{"bearerAuth":["mcp:store.manage"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"post":{"summary":"Add a member to an org (owner/admin).","security":[{"bearerAuth":["mcp:store.manage"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/orgs/{org_id}/members/{user_id}":{"patch":{"summary":"Change a member's role (owner).","security":[{"bearerAuth":["mcp:store.manage"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"delete":{"summary":"Remove a member from an org (owner/admin, or self).","security":[{"bearerAuth":["mcp:store.manage"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/orgs/{org_id}/invites":{"get":{"summary":"List an org's open invites (owner/admin).","security":[{"bearerAuth":["mcp:store.manage"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"post":{"summary":"Create an email or code invite to an org (owner/admin).","security":[{"bearerAuth":["mcp:store.manage"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/orgs/{org_id}/invites/{invite_id}":{"delete":{"summary":"Revoke an open org invite (owner/admin).","security":[{"bearerAuth":["mcp:store.manage"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/orgs/invites/redeem":{"post":{"summary":"Redeem a shareable org invite code (any signed-in user).","security":[{"bearerAuth":["mcp:store.manage"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/orgs/invites/mine":{"get":{"summary":"List the caller's pending org invites.","security":[{"bearerAuth":["mcp:store.manage"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/orgs/invites/mine/{invite_id}/accept":{"post":{"summary":"Accept one of the caller's pending org invites.","security":[{"bearerAuth":["mcp:store.manage"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/orgs/invites/mine/{invite_id}/decline":{"post":{"summary":"Decline one of the caller's pending org invites.","security":[{"bearerAuth":["mcp:store.manage"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/concepts":{"get":{"summary":"Search PrimeNet concepts.","security":[{"bearerAuth":["mcp:lowlevel:read"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/concepts/{concept_id}":{"get":{"summary":"Read a PrimeNet concept.","security":[{"bearerAuth":["mcp:lowlevel:read"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/relations":{"get":{"summary":"List relations.","security":[{"bearerAuth":["mcp:lowlevel:read"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"post":{"summary":"Create a relation.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/associations":{"get":{"summary":"List associations.","security":[{"bearerAuth":["mcp:lowlevel:read"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"post":{"summary":"Create an association.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/ingest-sessions":{"get":{"summary":"List ingest sessions.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"post":{"summary":"Open an ingest session.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/ingest-sessions/{session_id}":{"get":{"summary":"Diff an ingest session.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/ingest-sessions/{session_id}/commit":{"post":{"summary":"Commit an ingest session.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/ingest-sessions/{session_id}/abort":{"post":{"summary":"Abort an ingest session.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/ingest-sessions/{session_id}/episodes":{"post":{"summary":"Stage an episode.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/ingest-sessions/{session_id}/episodes/{episode_id}":{"patch":{"summary":"Stage an episode update.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"delete":{"summary":"Stage an episode delete.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/ingest-sessions/{session_id}/entities":{"post":{"summary":"Stage an entity.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/ingest-sessions/{session_id}/entities/{entity_id}":{"patch":{"summary":"Stage an entity update.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}},"delete":{"summary":"Stage an entity delete.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/ingest-sessions/{session_id}/relations":{"post":{"summary":"Stage a relation.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/ingest-sessions/{session_id}/associations":{"post":{"summary":"Stage an association.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/ingest-sessions/{session_id}/thread-mutations":{"post":{"summary":"Stage a thread mutation.","security":[{"bearerAuth":["mcp:lowlevel:write"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/receipts":{"get":{"summary":"List receipts.","security":[{"bearerAuth":["mcp:lowlevel:debug"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/receipts/{receipt_id}":{"get":{"summary":"Read a receipt.","security":[{"bearerAuth":["mcp:lowlevel:debug"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/receipts/{receipt_id}/staged-item":{"get":{"summary":"Read the staged item for a receipt.","security":[{"bearerAuth":["mcp:lowlevel:debug"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/reconciliation":{"get":{"summary":"Read reconciliation status.","security":[{"bearerAuth":["mcp:lowlevel:debug"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}},"/v1/reconciliation/{workflow_id}":{"get":{"summary":"Read reconciliation status by workflow.","security":[{"bearerAuth":["mcp:lowlevel:debug"]}],"responses":{"200":{"description":"Success"},"401":{"description":"Missing or invalid bearer token"},"403":{"description":"Insufficient scope or disabled account"}}}}}}