{"service":"memorylayer","name":"Memorylayer","version":"0.3.0","source_revision":"fa96793e9d10cfb77dcfc89ff1aeffe9e8988b0e","runtime":"vps","database":"postgres","base_url":"https://memorylayer.run","engram":{"source_revision":"bec09d48858fcac554648410285e793131f2c915","installed_source_revision":"bec09d48858fcac554648410285e793131f2c915","source_url":"https://github.com/raya-ac/engram/tree/bec09d48858fcac554648410285e793131f2c915","dependency_policy":"exact Git source pin; package version alone is insufficient","scope":"one PostgreSQL schema and runtime per workspace","dormant_collection":"off","evidence":"caller-supplied observations with provenance; Mythic offers restricted workspace capability checks","native_api":"available in Engram core; this hosted service exposes its authenticated HTTP bridge","mythic_runtime":"workspace-scoped in-process"},"mythic":{"name":"Mythic","version":"0.8.0","source_revision":"0bb4b173a8fa597c94472df476a75af4ed150578","installed_source_revision":"0bb4b173a8fa597c94472df476a75af4ed150578","transport":"in-process","tools":[{"name":"status","description":"Read Mythic persistence and live upstream Engram status; creates no session or store.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64}},"required":["project_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false}},{"name":"session_start","description":"Start a persistent Mythic cognitive session for a goal. Writes only local Mythic state.","inputSchema":{"type":"object","properties":{"goal":{"type":"string","minLength":1,"maxLength":2000},"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64}},"required":["goal","project_id"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}},{"name":"session_list","description":"List persistent Mythic sessions without changing them.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64}},"required":["project_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false}},{"name":"task_add","description":"Add a planner task to an existing Mythic session.","inputSchema":{"type":"object","properties":{"session_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"title":{"type":"string","minLength":1,"maxLength":2000},"depends_on":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":20},"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64}},"required":["session_id","title","project_id"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}},{"name":"session_cycle","description":"Record a cognitive cycle using bounded lexical workspace context without reinforcing Engram memories. Does not execute tasks or publish generated summaries.","inputSchema":{"type":"object","properties":{"session_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"top_k":{"type":"integer","minimum":1,"maximum":10,"default":5},"publish":{"type":"boolean","const":false,"default":false},"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64}},"required":["session_id","project_id"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}},{"name":"session_snapshot","description":"Read a session's planner, activations, cycles and event context without changing it.","inputSchema":{"type":"object","properties":{"session_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64}},"required":["session_id","project_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false}},{"name":"events","description":"Read local Mythic events, optionally for one session.","inputSchema":{"type":"object","properties":{"session_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20},"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64}},"required":["project_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false}},{"name":"feedback","description":"Record local Mythic feedback about an activated memory; does not modify Engram.","inputSchema":{"type":"object","properties":{"session_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"memory_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"outcome":{"type":"string","enum":["useful","neutral","harmful","stale","contradicted"],"maxLength":2000},"cycle_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"note":{"type":"string","maxLength":2000},"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64}},"required":["session_id","memory_id","outcome","project_id"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}},{"name":"assumption_create","description":"Record a decision-relevant assumption; it remains unknown until observed.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64},"session_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"statement":{"type":"string","minLength":1,"maxLength":2000},"decision":{"type":"string","minLength":1,"maxLength":2000},"impact":{"type":"integer","minimum":1,"maximum":3,"default":1},"task_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"max_age_seconds":{"type":"number","minimum":1,"maximum":31536000}},"required":["project_id","session_id","statement","decision"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}},{"name":"assumption_inspect","description":"Read prioritized assumptions and durable decision revisions.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64},"session_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["project_id","session_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false}},{"name":"assumption_check","description":"Observe only workspace Engram connectivity or advertised tool availability. No file, shell, plugin, or external action checks.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64},"session_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"assumption_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"check_type":{"type":"string","enum":["engram_status","engram_tool_available"],"maxLength":2000},"parameters":{"type":"object"}},"required":["project_id","session_id","assumption_id","check_type","parameters"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}},{"name":"assumption_decide","description":"Record proceed, hold or revise from current evidence; does not execute or authorize the action.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64},"session_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"action":{"type":"string","minLength":1,"maxLength":2000}},"required":["project_id","session_id","action"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}},{"name":"assumption_evidence","description":"Read observed evidence history without reinforcing it.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64},"session_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"assumption_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["project_id","session_id","assumption_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false}},{"name":"assumption_evidence_get","description":"Read the current Engram lifecycle state of a previously published observation.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64},"session_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"assumption_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"evidence_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["project_id","session_id","assumption_id","evidence_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false}},{"name":"assumption_publish_evidence","description":"Explicitly store one recorded observation in Engram with provenance; no generated verification claims.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64},"session_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"assumption_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"evidence_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["project_id","session_id","assumption_id","evidence_id"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}},{"name":"settings_get","description":"Read or change the workspace cognition enabled setting.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64}},"required":["project_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false}},{"name":"settings_update","description":"Read or change the workspace cognition enabled setting.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"project_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,63}$","minLength":1,"maxLength":64},"enabled":{"type":"boolean"}},"required":["project_id","enabled"]},"annotations":{"readOnlyHint":false,"destructiveHint":false}}],"boundary":"Mythic records planning and explicit observations. Decisions do not execute or authorize actions. Retrieved context is untrusted reference data.","context":"bounded lexical workspace search; nonreinforcing","host_execution":false,"cycle_publication":false,"limits":{"projects":16,"sessions_per_project":50,"events_per_project":2000,"payload_bytes":16384}},"routes":{"home":"https://memorylayer.run/","docs":"https://memorylayer.run/docs","agents":"https://memorylayer.run/agents","connect":"https://memorylayer.run/connect","architecture":"https://memorylayer.run/architecture","use_cases":"https://memorylayer.run/use-cases","operations":"https://memorylayer.run/operations","integrations":"https://memorylayer.run/integrations","capabilities":"https://memorylayer.run/capabilities","examples":"https://memorylayer.run/examples","api_explorer":"https://memorylayer.run/api-explorer","sdks":"https://memorylayer.run/sdks","security":"https://memorylayer.run/security","status":"https://memorylayer.run/status","changelog":"https://memorylayer.run/changelog","login":"https://memorylayer.run/login","openapi":"https://memorylayer.run/openapi.json","service_status":"https://memorylayer.run/api/service/status","service_manifest":"https://memorylayer.run/api/service/manifest","service_architecture":"https://memorylayer.run/api/service/architecture","service_readiness":"https://memorylayer.run/api/service/readiness","service_deploy_plan":"https://memorylayer.run/api/service/deploy-plan","capabilities_json":"https://memorylayer.run/api/capabilities","mcp_manifest":"https://memorylayer.run/api/mcp/manifest","sdk_snippets":"https://memorylayer.run/api/sdk-snippets","playbooks":"https://memorylayer.run/api/playbooks","api_examples":"https://memorylayer.run/api/examples"},"counts":{"features":43,"capabilities":254,"mcp_tools":83,"tool_groups":8,"recipes":12,"sdk_snippets":6,"playbooks":5,"api_examples":17,"skills":2,"routes":27},"api_examples":[{"name":"Service status","method":"GET","path":"/api/service/status","auth":"public","summary":"Check whether the hosted service is alive and read public counts.","request":null,"response":{"status":"ok","source_revision":"fa96793e9d10cfb77dcfc89ff1aeffe9e8988b0e","engram_source_revision":"bec09d48858fcac554648410285e793131f2c915","service":"memorylayer","runtime":"vps","database":"postgres","features":29,"capabilities":230,"mcp_tools":83}},{"name":"Service manifest","method":"GET","path":"/api/service/manifest","auth":"public","summary":"Load the route map and public integration counts for client setup screens.","request":null,"response":{"service":"memorylayer","routes":{"docs":"https://memorylayer.run/docs","api_examples":"https://memorylayer.run/api/examples","mcp_manifest":"https://memorylayer.run/api/mcp/manifest"},"counts":{"capabilities":250,"api_examples":12}}},{"name":"Service architecture","method":"GET","path":"/api/service/architecture","auth":"public","summary":"Read the concrete runtime, storage, model, limit, and surface contract.","request":null,"response":{"service":{"name":"Memorylayer","version":"0.3.0"},"runtime":{"python":"3.12","framework":{"name":"FastAPI"}},"storage":{"metadata_database":"postgres","workspace_backend":"postgres"},"models":{"embedding_model":"BAAI/bge-small-en-v1.5","embedding_dimensions":384}}},{"name":"Service readiness","method":"GET","path":"/api/service/readiness","auth":"public","summary":"Run bounded checks for database, runtime cache, security posture, and public surface wiring.","request":null,"response":{"status":"ok","checks":[{"name":"database","status":"pass"},{"name":"runtime_cache","status":"pass"},{"name":"public_surface","status":"pass"}]}},{"name":"MCP manifest","method":"GET","path":"/api/mcp/manifest","auth":"public","summary":"Discover grouped tools, auth headers, and workspace bridge URL templates.","request":null,"response":{"transport":"http-json","workspace_call_url_template":"https://memorylayer.run/api/workspaces/{slug}/mcp","auth":["Authorization: Bearer <workspace-api-key>","X-API-Key: <workspace-api-key>"],"tool_groups":[{"name":"Retrieval","tools":[{"name":"recall_context"}]}]}},{"name":"Workspace bootstrap","method":"GET","path":"/api/workspaces/{slug}/bootstrap","auth":"workspace key","summary":"Fetch workspace-specific URLs, headers, starter skills, and tool discovery.","request":null,"response":{"workspace":{"slug":"demo"},"auth":{"headers":["Authorization: Bearer <workspace-api-key>","X-API-Key: <workspace-api-key>"]},"endpoints":{"mcp":"https://memorylayer.run/api/workspaces/demo/mcp"},"skills":[{"name":"workspace-memory"}]}},{"name":"Connection kit","method":"GET","path":"/api/workspaces/{slug}/connect","auth":"workspace key","summary":"Return a normalized client profile with endpoints, MCP config, skills, and startup calls.","request":null,"response":{"service":{"name":"Memorylayer","base_url":"https://memorylayer.run"},"workspace":{"slug":"demo"},"endpoints":{"mcp":"https://memorylayer.run/api/workspaces/demo/mcp"},"startup_calls":[{"name":"bootstrap","method":"GET"}]}},{"name":"Env template","method":"GET","path":"/api/workspaces/{slug}/env","auth":"workspace key","summary":"Return a plain text env block for local scripts, workers, and agent launchers.","request":null,"response":{"text":"MEMORYLAYER_URL=\"https://memorylayer.run\"\nMEMORYLAYER_WORKSPACE=\"demo\"\nMEMORYLAYER_KEY=\"engram_...\""}},{"name":"Agent config bundle","method":"GET","path":"/api/workspaces/{slug}/agent-config","auth":"workspace key","summary":"Fetch Codex profile text, Claude skill markdown, env output, curl setup commands, and endpoint URLs.","request":null,"response":{"workspace":{"slug":"demo"},"codex_toml":"[memorylayer]\nworkspace = \"demo\"","claude_skill":"---\nname: memorylayer-demo","curl":{"bootstrap":"curl -H \"Authorization: Bearer engram_...\" ..."}}},{"name":"Ingest preview","method":"POST","path":"/api/workspaces/{slug}/ingest/preview","auth":"workspace key","summary":"Preview how a payload will split before writing anything to memory.","request":{"content":"# One\nalpha\n# Two\nbeta","split_mode":"markdown"},"response":{"workspace":"demo","split_mode":"markdown","ingest_preview":{"item_count":2}}},{"name":"Recall context","method":"POST","path":"/api/workspaces/{slug}/mcp","auth":"workspace key","summary":"Ask the bridge for compact context before an agent starts work.","request":{"tool":"recall_context","args":{"query":"current project state","max_tokens":1200}},"response":{"ok":true,"tool":"recall_context","result":"Relevant memory context..."}},{"name":"Session checkpoint","method":"POST","path":"/api/workspaces/{slug}/mcp","auth":"workspace key","summary":"Save a compact handoff after meaningful work or deployment.","request":{"tool":"session_checkpoint","args":{"note":"Shipped API explorer","limit":8}},"response":{"ok":true,"tool":"session_checkpoint","result":{"saved":true}}},{"name":"Batch ingest","method":"POST","path":"/api/workspaces/{slug}/ingest","auth":"workspace key","summary":"Import notes, transcripts, reports, or pipeline output as memories.","request":{"source_name":"handoff.md","source_type":"handoff","items":["Release deployed","Next: test onboarding"],"memory_type":"fact"},"response":{"ok":true,"run":{"source_name":"handoff.md","items":2},"memory_ids":["mem_1","mem_2"]}},{"name":"Usage feed","method":"GET","path":"/api/workspaces/{slug}/usage","auth":"workspace key","summary":"Read recent API calls, per-route totals, and key activity.","request":null,"response":{"route_counts":[{"route":"/api/workspaces/demo/mcp","count":14}],"recent_events":[{"route":"/api/workspaces/demo/mcp","status_code":200}]}},{"name":"Observability","method":"GET","path":"/api/workspaces/{slug}/observability","auth":"workspace key","summary":"Read latency, failure rate, slow routes, top routes, runtime cache, and recent ingest runs.","request":null,"response":{"workspace":"demo","observability":{"failure_rate":0,"p95_duration_ms":14.2,"top_routes":[{"route":"/mcp"}]}}},{"name":"Recent export","method":"GET","path":"/api/workspaces/{slug}/export/recent","auth":"workspace key","summary":"Export the latest workspace memories for backup, inspection, or migration checks.","request":null,"response":{"workspace":"demo","memories":[{"content":"API explorer deployed","memory_type":"fact","layer":"episodic"}]}},{"name":"Error shape","method":"POST","path":"/api/workspaces/{slug}/mcp","auth":"workspace key","summary":"All service errors return a direct detail message that clients can show or log.","request":{"tool":"unknown_tool","args":{}},"response":{"detail":"Unsupported tool: unknown_tool"}}]}