{"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},"transport":"http-json","workspace_call_url_template":"https://memorylayer.run/api/workspaces/{slug}/mcp","workspace_tools_url_template":"https://memorylayer.run/api/workspaces/{slug}/mcp/tools","auth":["Authorization: Bearer <workspace-api-key>","X-API-Key: <workspace-api-key>"],"tool_groups":[{"name":"Evidence","tools":[{"name":"evidence_put","summary":"Store an immutable caller-supplied check observation. Does not execute a check or certify its outcome; explicit forgetting is preserved on retries.","args":{"project_id":"string","session_id":"string","assumption_id":"string","evidence_id":"string","outcome":"unknown | supported | contradicted","observed_at":"number","expires_at":"number","observation":"object","provenance":"object","source_refs":"array, optional"},"inputSchema":{"type":"object","properties":{"project_id":{"type":"string","minLength":1,"maxLength":4096,"description":"Exact canonical absolute project directory; never a project name or prose match."},"session_id":{"type":"string","minLength":1,"maxLength":200},"assumption_id":{"type":"string","minLength":1,"maxLength":200},"evidence_id":{"type":"string","minLength":1,"maxLength":200},"outcome":{"type":"string","enum":["unknown","supported","contradicted"]},"observed_at":{"type":"number","description":"Caller-reported Unix observation timestamp."},"expires_at":{"type":"number","description":"Unix expiry, after observed_at and within 365 days of it."},"observation":{"type":"object","description":"Bounded JSON observation, at most 4096 encoded bytes. Omit transcripts/secrets."},"provenance":{"type":"object","description":"Caller-supplied provenance, at most 2048 encoded bytes; producer and check_type are required strings."},"source_refs":{"type":"array","maxItems":8,"items":{"type":"string","maxLength":256},"description":"memory:<id> checks local source lifecycle; other references are opaque, never fetched."}},"required":["project_id","session_id","assumption_id","evidence_id","outcome","observed_at","expires_at","observation","provenance"],"additionalProperties":false}},{"name":"evidence_get","summary":"Read one scoped check observation without reinforcing it. Missing/forgotten/inactive sources are unknown; expired evidence is stale.","args":{"project_id":"string","id":"string"},"inputSchema":{"type":"object","properties":{"project_id":{"type":"string","minLength":1,"maxLength":4096,"description":"Exact canonical absolute project directory; never a project name or prose match."},"id":{"type":"string","minLength":1,"maxLength":200}},"required":["project_id","id"],"additionalProperties":false}},{"name":"evidence_list","summary":"List scoped caller-supplied observations; exclude forgotten/inactive records. Check each returned state before relying on its reported outcome.","args":{"project_id":"string","session_id":"string, optional","assumption_id":"string, optional","limit":"integer, optional"},"inputSchema":{"type":"object","properties":{"project_id":{"type":"string","minLength":1,"maxLength":4096,"description":"Exact canonical absolute project directory; never a project name or prose match."},"session_id":{"type":"string","minLength":1,"maxLength":200},"assumption_id":{"type":"string","minLength":1,"maxLength":200},"limit":{"type":"integer","minimum":1,"maximum":50,"default":20}},"required":["project_id"],"additionalProperties":false}}]},{"name":"Dormant review","tools":[{"name":"dormant_review","summary":"Explicitly review metadata-only dormant shadow evaluations; never inject into ordinary recall","args":{"limit":"integer, optional"},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":20,"minimum":1,"maximum":100}},"additionalProperties":false}},{"name":"dormant_inspect","summary":"Explicitly inspect one dormant shadow candidate without reinforcing it; rechecks active/non-forgotten eligibility","args":{"event_id":"string"},"inputSchema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":200}},"required":["event_id"],"additionalProperties":false}},{"name":"dormant_feedback","summary":"Record explicit feedback for an inspected dormant candidate. Useful means actually used; silence is never usefulness. Does not change memory importance or access fields.","args":{"event_id":"string","category":"useful | irrelevant | dismissed"},"inputSchema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":200},"category":{"type":"string","enum":["useful","irrelevant","dismissed"]}},"required":["event_id","category"],"additionalProperties":false}}]},{"name":"Runtime health","tools":[{"name":"status","summary":"Return workspace-level memory counts and graph stats.","args":{}},{"name":"health","summary":"Check memory indexes, cache state, and workspace runtime health.","args":{}},{"name":"memory_map","summary":"Build a high-level map of layers, entities, and recent memory activity.","args":{}},{"name":"quality_metrics","summary":"Return storage quality, curation, and retrieval quality metrics.","args":{}},{"name":"count_by","summary":"Count memories by layer, source type, entity, or month.","args":{"group_by":"layer | source_type | entity | month"}},{"name":"access_patterns","summary":"Show which memories and entities are recalled most often.","args":{"limit":"integer, optional"}},{"name":"reranker_status","summary":"Report whether the deep retrieval reranker is trained and available.","args":{}}]},{"name":"Retrieval","tools":[{"name":"recall","summary":"Run the main Engram retrieval flow against the workspace.","args":{"query":"string","top_k":"integer, optional","mode":"facts_only | facts_plus_rules | full_context, optional"}},{"name":"recall_context","summary":"Return a compact context block for prompt injection.","args":{"query":"string","max_tokens":"integer, optional"}},{"name":"recall_hints","summary":"Return short memory hints that trigger recognition without flooding context.","args":{"query":"string","top_k":"integer, optional","hint_length":"integer, optional"}},{"name":"recall_recent","summary":"Load the most recent memories for the workspace.","args":{"limit":"integer, optional"}},{"name":"recall_by_type","summary":"Retrieve memories filtered by fact, procedure, or narrative type.","args":{"memory_type":"fact | procedure | narrative","limit":"integer, optional"}},{"name":"recall_layer","summary":"Retrieve memories from one memory layer.","args":{"layer":"working | episodic | semantic | procedural","limit":"integer, optional"}},{"name":"recall_timeline","summary":"Retrieve memories from a date range.","args":{"start":"YYYY-MM or YYYY-MM-DD","end":"YYYY-MM or YYYY-MM-DD, optional"}},{"name":"recall_related","summary":"Traverse related memory context from an entity.","args":{"name":"string","max_hops":"integer, optional"}},{"name":"recall_explain","summary":"Return retrieval results with scoring and query expansion details.","args":{"query":"string","top_k":"integer, optional","mode":"facts_only | facts_plus_rules | full_context, optional"}},{"name":"compress","summary":"Return a compressed summary of retrieved memories for a query.","args":{"query":"string","max_tokens":"integer, optional"}}]},{"name":"Entity graph","tools":[{"name":"recall_entity","summary":"Return facts, relationships, and timeline for a named entity.","args":{"name":"string"}},{"name":"search_entities","summary":"Fuzzy-search entity names for lookup and disambiguation.","args":{"query":"string","limit":"integer, optional"}},{"name":"entity_graph","summary":"Return a JSON subgraph for a named entity.","args":{"name":"string"}},{"name":"entity_timeline","summary":"Return one entity's memories ordered by date.","args":{"name":"string"}},{"name":"backlinks","summary":"Find memories that reference or link to a memory.","args":{"memory_id":"string"}},{"name":"find_similar","summary":"Find memories semantically similar to a memory.","args":{"memory_id":"string","top_k":"integer, optional"}},{"name":"update_entity","summary":"Add an alias or metadata to an entity.","args":{"name":"string","alias":"string, optional","metadata":"object, optional"}},{"name":"merge_entities","summary":"Merge one entity into another.","args":{"source_name":"string","target_name":"string"}},{"name":"link_memories","summary":"Manually link two memories through their entities.","args":{"memory_id_1":"string","memory_id_2":"string","relation":"string, optional"}},{"name":"detect_communities","summary":"Detect entity communities and optionally generate summaries.","args":{"min_size":"integer, optional","generate_summaries":"boolean, optional"}}]},{"name":"Memory writes","tools":[{"name":"remember","summary":"Store a new memory in the workspace.","args":{"content":"string","layer":"string, optional","memory_type":"fact | procedure | narrative, optional"}},{"name":"remember_decision","summary":"Store an explicit decision and rationale.","args":{"decision":"string","rationale":"string, optional","importance":"number, optional"}},{"name":"remember_error","summary":"Store an error pattern with prevention guidance.","args":{"error":"string","prevention":"string, optional","importance":"number, optional"}},{"name":"remember_interaction","summary":"Store a durable question-and-answer exchange.","args":{"question":"string","answer":"string","importance":"number, optional"}},{"name":"remember_negative","summary":"Store explicit negative knowledge about what does not exist or should not be done.","args":{"content":"string","scope":"string, optional","context":"string, optional","importance":"number, optional"}},{"name":"remember_project","summary":"Update project-level state for the workspace.","args":{"name":"string","status":"string, optional","location":"string, optional","notes":"string, optional"}},{"name":"diary_read","summary":"Read the current session diary.","args":{}},{"name":"diary_write","summary":"Append a concise entry to the current session diary.","args":{"entry":"string"}}]},{"name":"Continuity","tools":[{"name":"focus_brief","summary":"Generate a brief about the most relevant memory context for a task.","args":{"query":"string","top_k":"integer, optional"}},{"name":"layers","summary":"Return L0-L3 graduated context for system prompt injection.","args":{"query":"string, optional","max_tokens":"integer, optional"}},{"name":"get_skills","summary":"Select the most relevant procedural skills for a task.","args":{"query":"string","max_skills":"integer, optional","format":"boolean, optional"}},{"name":"session_checkpoint","summary":"Persist a checkpoint note plus recent state for resumable agent sessions.","args":{"note":"string, optional","limit":"integer, optional"}},{"name":"session_handoff","summary":"Build or save a structured handoff snapshot for another agent/session.","args":{"save":"boolean, optional","limit":"integer, optional","session_id":"string, optional"}},{"name":"resume_context","summary":"Load the latest handoff snapshot and related recent activity.","args":{"session_id":"string, optional","limit":"integer, optional"}},{"name":"session_summary","summary":"Summarize the current session from diary and recent events.","args":{}}]},{"name":"Curation","tools":[{"name":"annotate","summary":"Attach an operator note to a memory without changing its content.","args":{"memory_id":"string","note":"string"}},{"name":"edit_memory","summary":"Edit a memory's content and re-embed it.","args":{"memory_id":"string","new_content":"string"}},{"name":"invalidate","summary":"Mark a memory as no longer true.","args":{"memory_id":"string","reason":"string, optional"}},{"name":"update_status","summary":"Move a memory through active, challenged, invalidated, merged, or superseded states.","args":{"memory_id":"string","new_status":"active | challenged | invalidated | merged | superseded","reason":"string, optional"}},{"name":"status_history","summary":"Return lifecycle history for a memory.","args":{"memory_id":"string"}},{"name":"tag","summary":"Add or remove tags on a memory.","args":{"memory_id":"string","add":"array, optional","remove":"array, optional"}},{"name":"pin","summary":"Pin a memory so retention jobs keep it.","args":{"memory_id":"string"}},{"name":"unpin","summary":"Remove a pin from a memory.","args":{"memory_id":"string"}},{"name":"forget","summary":"Soft-delete a memory from the workspace.","args":{"memory_id":"string"}},{"name":"promote","summary":"Promote a memory to a higher layer.","args":{"memory_id":"string","target_layer":"working | episodic | semantic | procedural"}},{"name":"demote","summary":"Demote a memory to a lower layer.","args":{"memory_id":"string","target_layer":"working | episodic | semantic | procedural"}},{"name":"batch_tag","summary":"Add tags to memories matching a search query.","args":{"query":"string","tags":"array","top_k":"integer, optional"}},{"name":"dedup","summary":"Find and merge near-duplicate memories by similarity.","args":{"threshold":"number, optional","max_merges":"integer, optional"}},{"name":"consolidate","summary":"Run a dream cycle to cluster, summarize, and generate peer cards.","args":{}},{"name":"extract_patterns","summary":"Extract reusable procedural patterns from recent activity.","args":{"hours":"integer, optional","dry_run":"boolean, optional","novelty_threshold":"number, optional"}},{"name":"export","summary":"Export workspace memories as markdown or JSON.","args":{"format":"markdown | json, optional","layer":"string, optional","limit":"integer, optional"}}]}],"tools":[{"name":"status","summary":"Return workspace-level memory counts and graph stats.","args":{}},{"name":"health","summary":"Check memory indexes, cache state, and workspace runtime health.","args":{}},{"name":"memory_map","summary":"Build a high-level map of layers, entities, and recent memory activity.","args":{}},{"name":"quality_metrics","summary":"Return storage quality, curation, and retrieval quality metrics.","args":{}},{"name":"count_by","summary":"Count memories by layer, source type, entity, or month.","args":{"group_by":"layer | source_type | entity | month"}},{"name":"access_patterns","summary":"Show which memories and entities are recalled most often.","args":{"limit":"integer, optional"}},{"name":"reranker_status","summary":"Report whether the deep retrieval reranker is trained and available.","args":{}},{"name":"recall","summary":"Run the main Engram retrieval flow against the workspace.","args":{"query":"string","top_k":"integer, optional","mode":"facts_only | facts_plus_rules | full_context, optional"}},{"name":"recall_context","summary":"Return a compact context block for prompt injection.","args":{"query":"string","max_tokens":"integer, optional"}},{"name":"recall_hints","summary":"Return short memory hints that trigger recognition without flooding context.","args":{"query":"string","top_k":"integer, optional","hint_length":"integer, optional"}},{"name":"recall_recent","summary":"Load the most recent memories for the workspace.","args":{"limit":"integer, optional"}},{"name":"recall_entity","summary":"Return facts, relationships, and timeline for a named entity.","args":{"name":"string"}},{"name":"recall_by_type","summary":"Retrieve memories filtered by fact, procedure, or narrative type.","args":{"memory_type":"fact | procedure | narrative","limit":"integer, optional"}},{"name":"recall_layer","summary":"Retrieve memories from one memory layer.","args":{"layer":"working | episodic | semantic | procedural","limit":"integer, optional"}},{"name":"recall_timeline","summary":"Retrieve memories from a date range.","args":{"start":"YYYY-MM or YYYY-MM-DD","end":"YYYY-MM or YYYY-MM-DD, optional"}},{"name":"recall_related","summary":"Traverse related memory context from an entity.","args":{"name":"string","max_hops":"integer, optional"}},{"name":"recall_explain","summary":"Return retrieval results with scoring and query expansion details.","args":{"query":"string","top_k":"integer, optional","mode":"facts_only | facts_plus_rules | full_context, optional"}},{"name":"search_entities","summary":"Fuzzy-search entity names for lookup and disambiguation.","args":{"query":"string","limit":"integer, optional"}},{"name":"entity_graph","summary":"Return a JSON subgraph for a named entity.","args":{"name":"string"}},{"name":"entity_timeline","summary":"Return one entity's memories ordered by date.","args":{"name":"string"}},{"name":"backlinks","summary":"Find memories that reference or link to a memory.","args":{"memory_id":"string"}},{"name":"find_similar","summary":"Find memories semantically similar to a memory.","args":{"memory_id":"string","top_k":"integer, optional"}},{"name":"focus_brief","summary":"Generate a brief about the most relevant memory context for a task.","args":{"query":"string","top_k":"integer, optional"}},{"name":"layers","summary":"Return L0-L3 graduated context for system prompt injection.","args":{"query":"string, optional","max_tokens":"integer, optional"}},{"name":"get_skills","summary":"Select the most relevant procedural skills for a task.","args":{"query":"string","max_skills":"integer, optional","format":"boolean, optional"}},{"name":"remember","summary":"Store a new memory in the workspace.","args":{"content":"string","layer":"string, optional","memory_type":"fact | procedure | narrative, optional"}},{"name":"remember_decision","summary":"Store an explicit decision and rationale.","args":{"decision":"string","rationale":"string, optional","importance":"number, optional"}},{"name":"remember_error","summary":"Store an error pattern with prevention guidance.","args":{"error":"string","prevention":"string, optional","importance":"number, optional"}},{"name":"remember_interaction","summary":"Store a durable question-and-answer exchange.","args":{"question":"string","answer":"string","importance":"number, optional"}},{"name":"remember_negative","summary":"Store explicit negative knowledge about what does not exist or should not be done.","args":{"content":"string","scope":"string, optional","context":"string, optional","importance":"number, optional"}},{"name":"remember_project","summary":"Update project-level state for the workspace.","args":{"name":"string","status":"string, optional","location":"string, optional","notes":"string, optional"}},{"name":"diary_read","summary":"Read the current session diary.","args":{}},{"name":"diary_write","summary":"Append a concise entry to the current session diary.","args":{"entry":"string"}},{"name":"session_checkpoint","summary":"Persist a checkpoint note plus recent state for resumable agent sessions.","args":{"note":"string, optional","limit":"integer, optional"}},{"name":"session_handoff","summary":"Build or save a structured handoff snapshot for another agent/session.","args":{"save":"boolean, optional","limit":"integer, optional","session_id":"string, optional"}},{"name":"resume_context","summary":"Load the latest handoff snapshot and related recent activity.","args":{"session_id":"string, optional","limit":"integer, optional"}},{"name":"hotspots","summary":"Identify dense or high-interest areas in the memory graph.","args":{"hours":"integer, optional","limit":"integer, optional"}},{"name":"compare_queries","summary":"Compare how two queries retrieve and overlap.","args":{"query_a":"string","query_b":"string","top_k":"integer, optional"}},{"name":"export","summary":"Export workspace memories as markdown or JSON.","args":{"format":"markdown | json, optional","layer":"string, optional","limit":"integer, optional"}},{"name":"compress","summary":"Return a compressed summary of retrieved memories for a query.","args":{"query":"string","max_tokens":"integer, optional"}},{"name":"annotate","summary":"Attach an operator note to a memory without changing its content.","args":{"memory_id":"string","note":"string"}},{"name":"edit_memory","summary":"Edit a memory's content and re-embed it.","args":{"memory_id":"string","new_content":"string"}},{"name":"invalidate","summary":"Mark a memory as no longer true.","args":{"memory_id":"string","reason":"string, optional"}},{"name":"update_status","summary":"Move a memory through active, challenged, invalidated, merged, or superseded states.","args":{"memory_id":"string","new_status":"active | challenged | invalidated | merged | superseded","reason":"string, optional"}},{"name":"status_history","summary":"Return lifecycle history for a memory.","args":{"memory_id":"string"}},{"name":"tag","summary":"Add or remove tags on a memory.","args":{"memory_id":"string","add":"array, optional","remove":"array, optional"}},{"name":"pin","summary":"Pin a memory so retention jobs keep it.","args":{"memory_id":"string"}},{"name":"forget","summary":"Soft-delete a memory from the workspace.","args":{"memory_id":"string"}},{"name":"promote","summary":"Promote a memory to a higher layer.","args":{"memory_id":"string","target_layer":"working | episodic | semantic | procedural"}},{"name":"demote","summary":"Demote a memory to a lower layer.","args":{"memory_id":"string","target_layer":"working | episodic | semantic | procedural"}},{"name":"unpin","summary":"Remove a pin from a memory.","args":{"memory_id":"string"}},{"name":"link_memories","summary":"Manually link two memories through their entities.","args":{"memory_id_1":"string","memory_id_2":"string","relation":"string, optional"}},{"name":"update_entity","summary":"Add an alias or metadata to an entity.","args":{"name":"string","alias":"string, optional","metadata":"object, optional"}},{"name":"merge_entities","summary":"Merge one entity into another.","args":{"source_name":"string","target_name":"string"}},{"name":"batch_tag","summary":"Add tags to memories matching a search query.","args":{"query":"string","tags":"array","top_k":"integer, optional"}},{"name":"dedup","summary":"Find and merge near-duplicate memories by similarity.","args":{"threshold":"number, optional","max_merges":"integer, optional"}},{"name":"detect_communities","summary":"Detect entity communities and optionally generate summaries.","args":{"min_size":"integer, optional","generate_summaries":"boolean, optional"}},{"name":"consolidate","summary":"Run a dream cycle to cluster, summarize, and generate peer cards.","args":{}},{"name":"extract_patterns","summary":"Extract reusable procedural patterns from recent activity.","args":{"hours":"integer, optional","dry_run":"boolean, optional","novelty_threshold":"number, optional"}},{"name":"session_summary","summary":"Summarize the current session from diary and recent events.","args":{}},{"name":"evidence_put","summary":"Store an immutable caller-supplied check observation. Does not execute a check or certify its outcome; explicit forgetting is preserved on retries.","args":{"project_id":"string","session_id":"string","assumption_id":"string","evidence_id":"string","outcome":"unknown | supported | contradicted","observed_at":"number","expires_at":"number","observation":"object","provenance":"object","source_refs":"array, optional"},"inputSchema":{"type":"object","properties":{"project_id":{"type":"string","minLength":1,"maxLength":4096,"description":"Exact canonical absolute project directory; never a project name or prose match."},"session_id":{"type":"string","minLength":1,"maxLength":200},"assumption_id":{"type":"string","minLength":1,"maxLength":200},"evidence_id":{"type":"string","minLength":1,"maxLength":200},"outcome":{"type":"string","enum":["unknown","supported","contradicted"]},"observed_at":{"type":"number","description":"Caller-reported Unix observation timestamp."},"expires_at":{"type":"number","description":"Unix expiry, after observed_at and within 365 days of it."},"observation":{"type":"object","description":"Bounded JSON observation, at most 4096 encoded bytes. Omit transcripts/secrets."},"provenance":{"type":"object","description":"Caller-supplied provenance, at most 2048 encoded bytes; producer and check_type are required strings."},"source_refs":{"type":"array","maxItems":8,"items":{"type":"string","maxLength":256},"description":"memory:<id> checks local source lifecycle; other references are opaque, never fetched."}},"required":["project_id","session_id","assumption_id","evidence_id","outcome","observed_at","expires_at","observation","provenance"],"additionalProperties":false}},{"name":"evidence_get","summary":"Read one scoped check observation without reinforcing it. Missing/forgotten/inactive sources are unknown; expired evidence is stale.","args":{"project_id":"string","id":"string"},"inputSchema":{"type":"object","properties":{"project_id":{"type":"string","minLength":1,"maxLength":4096,"description":"Exact canonical absolute project directory; never a project name or prose match."},"id":{"type":"string","minLength":1,"maxLength":200}},"required":["project_id","id"],"additionalProperties":false}},{"name":"evidence_list","summary":"List scoped caller-supplied observations; exclude forgotten/inactive records. Check each returned state before relying on its reported outcome.","args":{"project_id":"string","session_id":"string, optional","assumption_id":"string, optional","limit":"integer, optional"},"inputSchema":{"type":"object","properties":{"project_id":{"type":"string","minLength":1,"maxLength":4096,"description":"Exact canonical absolute project directory; never a project name or prose match."},"session_id":{"type":"string","minLength":1,"maxLength":200},"assumption_id":{"type":"string","minLength":1,"maxLength":200},"limit":{"type":"integer","minimum":1,"maximum":50,"default":20}},"required":["project_id"],"additionalProperties":false}},{"name":"dormant_review","summary":"Explicitly review metadata-only dormant shadow evaluations; never inject into ordinary recall","args":{"limit":"integer, optional"},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":20,"minimum":1,"maximum":100}},"additionalProperties":false}},{"name":"dormant_inspect","summary":"Explicitly inspect one dormant shadow candidate without reinforcing it; rechecks active/non-forgotten eligibility","args":{"event_id":"string"},"inputSchema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":200}},"required":["event_id"],"additionalProperties":false}},{"name":"dormant_feedback","summary":"Record explicit feedback for an inspected dormant candidate. Useful means actually used; silence is never usefulness. Does not change memory importance or access fields.","args":{"event_id":"string","category":"useful | irrelevant | dismissed"},"inputSchema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":200},"category":{"type":"string","enum":["useful","irrelevant","dismissed"]}},"required":["event_id","category"],"additionalProperties":false}},{"name":"mythic_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":"mythic_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":"mythic_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":"mythic_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":"mythic_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":"mythic_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":"mythic_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":"mythic_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":"mythic_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":"mythic_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":"mythic_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":"mythic_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":"mythic_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":"mythic_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":"mythic_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":"mythic_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":"mythic_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}}]}