# VaultCrux Memory Core (remote · api.vaultcrux.com)

VaultCrux Memory Core — 32 tools: knowledge, decisions, constraints, signals, coverage

- Trust score: 61/100 (medium)
- Change this week: +7
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `api.vaultcrux.com`: 61/100 (this document), [markdown](https://verifymcp.io/servers/cuecrux-vaultcrux-memory-core/memory-core-mcp.md), [page](https://verifymcp.io/servers/cuecrux-vaultcrux-memory-core/memory-core-mcp)

## Channel facts

- Endpoint: `https://api.vaultcrux.com/memory-core/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `0.2.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 75 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 43/100
  - AI-judged instruction clarity (poor).
  - Tool/resource definitions use about 7279 tokens (~97/item across 75 items; 75 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 78/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 23% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http cuecrux-vaultcrux-memory-core https://api.vaultcrux.com/memory-core/mcp
```

### Codex

```toml
[mcp_servers.cuecrux-vaultcrux-memory-core]
url = "https://api.vaultcrux.com/memory-core/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cuecrux-vaultcrux-memory-core": {
      "type": "remote",
      "url": "https://api.vaultcrux.com/memory-core/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cuecrux-vaultcrux-memory-core --url https://api.vaultcrux.com/memory-core/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  cuecrux-vaultcrux-memory-core:
    url: "https://api.vaultcrux.com/memory-core/mcp"
```

### Other

```json
{
  "mcpServers": {
    "cuecrux-vaultcrux-memory-core": {
      "type": "http",
      "url": "https://api.vaultcrux.com/memory-core/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 61, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 60, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 59, +3)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 56, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 55, +1)

- [functional] Server version: v0.3.4+sha.2db2250f556f → v0.3.4+sha.2591acf0119c

### 2026-07-27 (score 54, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 53)

First indexed and scored.

## MCP tools (75)

### `query_memory` (~208 tokens)

Query Memory

Search the user's conversation memory. Returns ranked results with content, source timestamps, and confidence scores. For KNOWLEDGE UPDATE questions ('current', 'now', 'most recent'): make two calls — one with scoring_profile='balanced' and one with scoring_profile='recency' — then use the value from the most recent source_timestamp. For COUNTING questions ('how many', 'total'): results may not be exhaustive — search with varied terms and enumerate explicitly before counting. If all results score below 0.3, reformulate with synonyms or specific entity names from the question.

Input parameters:

- `agent_id` (string)
- `confidence_threshold` (number)
- `date_from` (string)
- `date_range` (object)
- `date_to` (string)
- `format` (string)
- `limit` (integer)
- `query` (string, required)
- `question_date` (string)
- `scoring_profile` (string)
- `topic` (string)

Output parameters:

- `results` (array)

### `list_topics` (~27 tokens)

List Topics

List VaultCrux Memory Core topic groups with freshness metadata.

Input parameters:

- `limit` (integer)

Output parameters:

- `items` (array)

### `get_versioned_snapshot` (~50 tokens)

Get Versioned Snapshot

Get the latest versioned snapshot for a VaultCrux Memory Core topic at an optional timestamp.

Input parameters:

- `limit` (integer)
- `timestamp` (string)
- `topic` (string, required)

Output parameters:

- `at`
- `items` (array)
- `topic` (string)

### `get_audit_trail` (~42 tokens)

Get Audit Trail

Read VaultCrux Memory Core import audit history and linked receipt hashes for a topic.

Input parameters:

- `limit` (integer)
- `topic` (string, required)

Output parameters:

- `items` (array)
- `topic` (string)

### `check_claim` (~82 tokens)

Check Claim

Verify a proposed answer against memory before committing to it. Pass your candidate answer as claim_text. Returns supporting and contradicting evidence with confidence scores. Use as a pre-answer gate: if contradicting evidence exists or support is weak, investigate further before answering.

Input parameters:

- `agent_id` (string)
- `claim_text` (string, required)
- `limit` (integer)

Output parameters:

- `confidence` (number)
- `matches` (array)
- `verdict` (string)

### `memory_claim_check` (~173 tokens)

Memory Claim Check (paid)

agent-ux-04 paid-tier source-linked claim check. Same upstream API as check_claim, plus three additional gates: (1) token_budget is REQUIRED — caps total response size by per-match token estimate (QC.2); (2) reserved-prefix topics (__agent::*, __ops::*, __bootstrap__::*) are stripped from matches (T.1); (3) per-match audit_links carry an offline-verify CLI hint (`corecruxctl receipts verify <id>`) so the host IDE can render a one-click verify badge per supporting / contradicting memory. Gated by FEATURE_MEMORY_CLAIM_CHECK=1 (default off).

Input parameters:

- `agent_id` (string)
- `claim_text` (string, required)
- `token_budget` (integer, required)
- `top_k` (integer)

Output parameters:

- `confidence` (number)
- `matches` (array)
- `verdict` (string)

### `get_freshness_report` (~75 tokens)

Get Freshness Report

Check how recent the stored knowledge is across topics. Returns staleness indicators per topic. Use this when answering time-sensitive questions to verify your evidence isn't outdated. Topics with stale data may have been superseded by newer conversations not yet retrieved.

Input parameters:

- `limit` (integer)
- `stale_after_days` (integer)

Output parameters:

- `items` (array)

### `memory_freshness_report` (~81 tokens)

Memory Freshness Report (paid alias)

Aligned with the Crux free-tier `memory_freshness` surface. Same backend as get_freshness_report with a token_budget knob (QC.2). Gated by FEATURE_MEMORY_FRESHNESS_REPORT=1.

Input parameters:

- `limit` (integer)
- `stale_after_days` (integer)
- `token_budget` (integer)

Output parameters:

- `items` (array)

### `get_contradictions` (~65 tokens)

Get Contradictions

Find conflicting information across the user's memory. Returns groups of artefacts that contradict each other on the same topic. Use after gathering evidence for an answer — if your evidence sources disagree, this reveals which version is correct (typically the most recent).

Input parameters:

- `limit` (integer)

Output parameters:

- `items` (array)

### `get_decision_context` (~40 tokens)

Get Decision Context

Retrieve agent session decisions from the CoreCrux Decision Plane, including decision IDs, outcomes, and cursor positions.

Input parameters:

- `session_id` (string, required)

### `get_causal_chain` (~39 tokens)

Get Causal Chain

Get the causal chain graph for a specific decision, showing how decisions, actions, and supersessions relate.

Input parameters:

- `decision_id` (string, required)

### `reconstruct_knowledge_state` (~103 tokens)

Reconstruct Knowledge State

Reconstruct what the system knew at a specific point in time. Returns both current and superseded artefacts as of that timestamp. Use for temporal reasoning: 'what was true in January?' vs 'what is true now?' Compare two calls at different timestamps to see what changed.

Input parameters:

- `at_timestamp` (string)
- `decision_id` (string, required)
- `include_confidence_landscape` (boolean)
- `include_superseded` (boolean)

### `get_correction_chain` (~87 tokens)

Get Correction Chain

Trace how a fact or decision evolved over time. When you find a value (e.g. 'Rachel moved to Chicago'), call this to check if a more recent session supersedes it. Returns the full version chain with timestamps. ALWAYS use for 'current', 'now', 'most recent' questions before answering with the first value you find.

Input parameters:

- `decision_id` (string, required)

### `get_decisions_on_stale_context` (~36 tokens)

Get Decisions on Stale Context

Find decisions in a session that may have been made on stale memory context.

Input parameters:

- `session_id` (string, required)

### `record_decision_context` (~68 tokens)

Record Decision Context

Record a decision context event in the CoreCrux Decision Plane. This is a mutation operation.

Input parameters:

- `agent_id` (string)
- `context` (object, required)
- `decision_id` (string, required)
- `occurred_at` (string)
- `session_id` (string, required)

### `get_pressure_status` (~27 tokens)

Get Pressure Status

Get Engine knowledge pressure status for the tenant — indicates whether knowledge bases are under update pressure.

### `get_active_alerts` (~34 tokens)

Get Active Alerts

Get active watch alerts across all watches for the tenant from the last 7 days.

Input parameters:

- `limit` (integer)

### `get_signals_feed` (~38 tokens)

Get Signals Feed

Get the signals feed for the tenant from the WebCrux platform.

Input parameters:

- `limit` (integer)
- `since` (string)

### `declare_constraint` (~104 tokens)

Declare Constraint

Declare an organisational constraint (boundary, relationship, policy, or context flag) that agents must respect. This is a mutation operation.

Input parameters:

- `assertion` (string, required)
- `assertion_structured` (object)
- `constraint_type` (string, required)
- `evidence` (object)
- `expires_at` (string)
- `review_interval_days` (integer)
- `scope` (object)
- `severity` (string)
- `team_id` (string)

### `update_constraint` (~101 tokens)

Update Constraint

Update an existing constraint. Content changes create a new version (append-only). Status-only changes update in place. This is a mutation operation.

Input parameters:

- `assertion` (string)
- `assertion_structured` (object)
- `constraint_id` (string, required)
- `evidence` (object)
- `expires_at`
- `review_interval_days`
- `scope` (object)
- `severity` (string)
- `status` (string)

### `get_constraints` (~53 tokens)

Get Constraints

List active organisational constraints, optionally filtered by type, status, or team.

Input parameters:

- `constraint_type` (string)
- `limit` (integer)
- `status` (string)
- `team_id` (string)

### `check_constraints` (~69 tokens)

Check Constraints

Check an action against all active constraints. Returns matched constraints, match types (structural/semantic), and a combined verdict (pass/warn/block).

Input parameters:

- `action_description` (string, required)
- `metadata` (object)
- `target_resources` (array)
- `team_id` (string)

### `verify_before_acting` (~149 tokens)

Verify Before Acting

Pre-action and pre-conclusion verification gate. Checks Shield policy, org constraints, watch alerts, knowledge pressure, and memory freshness. Returns a combined verdict: proceed, warn, require_approval, or block. Use before committing to an answer when the stakes are high or when your evidence is thin — it catches constraint conflicts and stale-context risks that query_memory alone won't surface.

Input parameters:

- `action_description` (string, required)
- `is_mutation` (boolean)
- `metadata` (object)
- `publisher_id` (string)
- `server_digest` (string)
- `target_resources` (array)
- `team_id` (string)
- `tool_name` (string, required)

### `suggest_constraint` (~117 tokens)

Suggest Constraint

Propose an organisational constraint discovered during work for human review. Agents can suggest boundaries, policies, or context flags they discover — humans decide whether to promote them to active constraints. Low barrier (1 credit); authority gate is on promotion, not suggestion.

Input parameters:

- `assertion` (string, required)
- `confidence` (number)
- `constraint_type` (string, required)
- `discovery_context` (string)
- `evidence` (object)
- `scope` (object)
- `session_id` (string)
- `severity` (string)

### `checkpoint_decision_state` (~100 tokens)

Checkpoint Decision State

Create a receipted snapshot of your current decision state during a long-running session. Records decisions made, assumptions in effect, and open questions. Enables resumption by the same or different agent from the last checkpoint rather than replaying from zero.

Input parameters:

- `assumptions_in_effect` (array)
- `decisions_so_far` (array)
- `open_questions` (array)
- `session_id` (string, required)
- `summary` (string, required)

### `get_checkpoints` (~58 tokens)

Get Checkpoints

Retrieve decision checkpoints for a session. Returns the linked list of checkpoints in reverse chronological order. Use this to resume work from a prior checkpoint after session failure or handoff.

Input parameters:

- `limit` (integer)
- `session_id` (string, required)

### `assess_coverage` (~107 tokens)

Assess Coverage

Question-scoped readiness check. Given a task description, returns what the system knows and doesn't know: artefact counts by domain, freshness stats, and knowledge gaps. Use BEFORE answering to decide if you should search more or commit. If coverage is thin on the question's topic, search with different terms before answering. Addresses 'do I have enough evidence to answer this?'

Input parameters:

- `action_types` (array)
- `domains` (array)
- `task_description` (string, required)

### `get_relevant_context` (~101 tokens)

Get Relevant Context

Task-scoped context briefing. Returns a prioritised context payload shaped by your task description, ranked by risk-if-missed. Constraints and alerts rank above general knowledge. Use at the START of reasoning about a question to get the system's best assessment of what's relevant. Complements query_memory: this gives breadth, query_memory gives depth.

Input parameters:

- `priority_signal` (string)
- `task_description` (string, required)
- `token_budget` (integer, required)

### `escalate_with_context` (~120 tokens)

Escalate With Context

Contextual escalation — packages your full reasoning state (evidence gathered, options considered, recommended action) and routes to a human for review. Preserves work so the human responds with full context, not from scratch. Use when you hit genuine uncertainty that the system cannot evaluate.

Input parameters:

- `evidence_gathered` (array)
- `options_considered` (array)
- `question` (string, required)
- `reasoning` (string, required)
- `recommended_action` (string, required)
- `session_id` (string)
- `urgency` (string)

### `get_platform_capabilities` (~82 tokens)

Get Platform Capabilities

Machine-queryable manifest of all available MemoryCrux tools, required trust tiers, and credit costs. Returns structured data for agent-to-service evaluation without reading documentation. Free (0 credits) at all tiers — discovery drives adoption.

Input parameters:

- `category` (string)
- `max_credit_cost` (integer)
- `min_trust_tier` (string)

### `admit_character_kernel_entry` (~109 tokens)

Admit Character Kernel Entry

Privileged curation tool for MemoryCrux v2.4 AgentCharacterKernel. Adds or supersedes an invariant expected behaviour tuple for an agent; operator-class API credentials are required by the API.

Input parameters:

- `agent_id` (string, required)
- `expected_behavior` (object, required)
- `expected_sufficiency_max`
- `expected_sufficiency_min`
- `rationale` (string, required)
- `situation_fingerprint` (string, required)
- `supersedes_id` (string)

### `get_character_kernel` (~40 tokens)

Get Character Kernel

Return active AgentCharacterKernel entries for an agent, including expected behaviour tuples and sufficiency bands used by drift checks.

Input parameters:

- `agent_id` (string, required)

### `assess_character_drift` (~67 tokens)

Assess Character Drift

Run the on-demand AgentCharacterKernel distribution-layer sweep for an agent and return emitted drift events for the requested window.

Input parameters:

- `agent_id` (string, required)
- `min_decision_count` (integer)
- `window_end` (string)
- `window_start` (string)

### `issue_passport` (~92 tokens)

Issue Passport

Issue an agent passport with identity, sponsor lineage, and a 5-tier reputation system. Stored as a BLAKE3-hashed fact. Tiers: unverified (0), basic (10+ receipts), established (100+), trusted (500+), elite (2000+). Required before sync operations. Idempotent: calling twice returns the existing passport.

Input parameters:

- `sponsor_id` (string)

### `get_passport` (~70 tokens)

Get Passport

Return the calling agent's passport with current reputation tier and receipt count. Recalculates receipt count on every call and auto-upgrades the tier when new thresholds are met (basic 10+, established 100+, trusted 500+, elite 2000+). Includes a hint for the next tier upgrade.

### `sync_pull` (~73 tokens)

Sync Pull

Pull enriched facts from a remote memory instance into the local fact store. Uses cursor-based pagination and resumes from the last pull cursor. Pulled facts carry a sync:source_receipt so they are never pushed back. Requires an agent passport with at least basic tier (10+ receipts).

Input parameters:

- `entity_prefix` (string)

### `sync_push` (~60 tokens)

Sync Push

Push local facts to a remote memory instance. Private facts and sensitive entity prefixes (finance:, health:, credentials:, etc.) are never pushed. Call without confirm=true for a preview. Requires established passport tier (100+ receipts).

Input parameters:

- `confirm` (boolean)

### `submit_skill` (~210 tokens)

Submit Skill

Submit a procedural workflow skill discovered during work. Pro+ private skills auto-approve; Starter skills enter a review queue. ATAM injection scanning runs automatically — quarantined skills cannot be promoted. Returns submission ID, approval status, and scan results.

Input parameters:

- `agent_role` (string): Role of the submitting agent
- `content` (string, required): Full procedural skill content (markdown)
- `discovery_context` (string): How/where the skill was discovered
- `run_id` (string): AgentCrux run ID
- `session_id` (string): Session ID for provenance tracking
- `skill_domains` (array): Knowledge domains this skill applies to
- `skill_tool_references` (array): Tool names this skill references
- `skill_trigger_description` (string): When this skill should be activated
- `supersedes_artifact_id` (integer): Artifact ID this skill replaces
- `target_visibility` (string): Visibility scope for the skill
- `title` (string, required): Short title summarising the skill

### `promote_skill` (~78 tokens)

Promote Skill

Promote a reviewed skill submission to Engine artifacts, making it retrievable via get_relevant_context. Only pending_review skills can be promoted. Returns the promoted artifact ID.

Input parameters:

- `review_notes` (string): Notes from the reviewer
- `submission_id` (string, required): ID of the skill submission to promote
- `visibility` (string): Override target visibility

### `dismiss_skill` (~64 tokens)

Dismiss Skill

Dismiss a pending or quarantined skill submission. The skill is marked as dismissed and will not be promoted.

Input parameters:

- `notes` (string): Additional notes
- `reason` (string, required): Reason for dismissal
- `submission_id` (string, required): ID of the skill submission to dismiss

### `retract_skill` (~81 tokens)

Retract Skill

Retract a previously promoted skill. Sets the Engine artifact's living status to 'retracted', removing it from future retrieval results. Use when a skill is found to be incorrect or outdated.

Input parameters:

- `notes` (string): Additional notes
- `reason` (string, required): Reason for retraction
- `submission_id` (string, required): ID of the skill submission to retract

### `session_debrief` (~130 tokens)

Session Debrief

Structured session-end reflection. Routes discoveries to appropriate capture tools (suggest_constraint, submit_skill, flag_for_review). Produces a receipted debrief record. Call before closing any session longer than 10 minutes.

Input parameters:

- `assumptions_invalidated` (array): Assumptions that were invalidated during the session
- `assumptions_validated` (array): Assumptions that were validated during the session
- `discoveries` (array): Discoveries made during the session
- `session_id` (string, required): Session ID for the debrief
- `suggested_actions` (array): Actions to route from session discoveries

### `get_domain_changelog` (~116 tokens)

Domain Changelog

Cross-artefact-type changelog for specified domains since a given timestamp. Returns constraints added/updated, knowledge changes, decisions recorded, and alerts raised/resolved. Use at session start to learn what changed in your domain since your last session.

Input parameters:

- `domains` (array, required): Domains to check for changes
- `include` (array): Optional filter for artefact types
- `limit` (integer): Maximum entries to return (default 500)
- `since` (string, required): Changelog start timestamp (max 90 days ago)

### `get_my_tasks` (~104 tokens)

My Tasks

Read-through to PlanCrux task graph. Returns tasks assigned to or relevant to the calling agent, filtered by status and priority. Includes stage progress, blockers, and linked MemoryCrux artefact counts.

Input parameters:

- `limit` (integer): Max tasks to return (default 10)
- `priority` (string): Filter by priority (critical, high, medium, low)
- `status` (string): Filter by task status (e.g. incomplete, in_progress, testing)

### `get_task_context` (~75 tokens)

Task Context

Full task context: task metadata, stages with status and weight, active blockers, linked artefacts (constraints, decisions, knowledge), recent log entries, and pinned master plan version. Assembles the full picture from PlanCrux and MemoryCrux.

Input parameters:

- `task_id` (string, required): PlanCrux task ID or title

### `log_progress` (~110 tokens)

Log Progress

Receipted write-through to PlanCrux's log endpoint. Appends a structured log entry to a task with optional evidence references and stage binding. Cannot change task or stage status (human-only), but records work done, findings, and blockers encountered.

Input parameters:

- `evidence` (array): Evidence references for the log entry
- `note` (string, required): What was done
- `stage_id` (string): Bind this log to a specific stage
- `task_id` (string, required): PlanCrux task ID

### `register_external_service` (~180 tokens)

Register External Service

Register an external service and store its credential via Vault Transit. Human-only (admin or owner role). The credential is encrypted immediately on receipt and never stored in plaintext. Returns the service registration record without the credential.

Input parameters:

- `allowed_methods` (array): Allowed HTTP methods (default: GET, POST)
- `allowed_paths` (array): Allowed path patterns (default: *)
- `auth_injection` (object): How to inject the credential into requests
- `auth_type` (string, required): Authentication type
- `base_url` (string, required): Service base URL (must be HTTPS)
- `credential_value` (string, required): The credential (encrypted immediately, never stored plaintext)
- `display_name` (string, required): Human-readable service name
- `rate_limit` (object): Rate limits for this service
- `service_id` (string, required): Tenant-unique identifier for the service

### `request_credentialed_call` (~151 tokens)

Credentialed External Call

Proxied external API call with server-side credential injection. VaultCrux retrieves the credential from Vault Transit, injects it per the service's auth template, makes the call, and returns the response. The credential never appears in your context window. Request and response are receipted and audit-logged.

Input parameters:

- `headers` (object): Additional headers (not auth)
- `method` (string, required): HTTP method
- `path` (string, required): Request path (e.g. /v1/chat/completions)
- `payload` (object): Request body for POST/PUT
- `service_id` (string, required): Registered service ID
- `session_id` (string): Session ID for audit trail

### `list_external_services` (~55 tokens)

List External Services

List registered external services available to the calling agent. Returns service IDs, display names, allowed methods/paths, and rate limit state. Does not return credentials or credential references.

Input parameters:

- `status` (string): Filter by service status

### `enumerate_memory_facts` (~301 tokens)

Enumerate Memory Facts

Deterministic fact-table extraction for aggregation questions and curated ESI lookups. Returns a structured row set (subject, predicate, object, date, session_id, confidence) instead of prose. Use this for 'how many', 'total', 'list all' questions — count the rows instead of hoping the LLM enumerates correctly. For curated ESI facts, pass `predicate` and optional `projectionVersionTag`; then `query` is optional and the server performs an exact predicate lookup without text search. Includes missing_dimensions to flag what might not have been found. Pass `mode: "aggregation"` (with `FEATURE_AGGREGATION_PREDICATE_EXPANSION=true` on the server) to enable: synonym expansion for pickup/return/acquire verbs, category-broadened counts from entity_categories, entity_type filters (expected_entity_types), and per-object dedup (dedup_by_object).

Input parameters:

- `as_of` (string)
- `category` (string)
- `dedup_by_object` (boolean)
- `dedup_by_subject_root` (boolean)
- `expand_synonyms` (boolean)
- `expected_entity_types` (array)
- `limit` (integer)
- `mode` (string)
- `predicate` (string)
- `predicates` (array)
- `projectionVersionTag` (string)
- `query` (string)
- `subject_match` (string)

### `build_timeline` (~96 tokens)

Build Timeline

Deterministic timeline constructor for temporal reasoning. Finds all dated events matching your query, normalizes dates, and returns them sorted chronologically. Use for 'what order', 'before/after', 'earliest/latest' questions. Returns unresolved events (found but no date) separately.

Input parameters:

- `anchor_event` (string)
- `as_of` (string)
- `query` (string, required)
- `relation` (string)

### `expand_hit_context` (~102 tokens)

Expand Hit Context

Session-neighborhood expansion around promising retrieval hits. When you find a relevant chunk but the specific fact (name, date, amount) is in a nearby turn, use this to fetch ±N turns from the same session. Recovers facts like 'my parents', '$6', or 'Disney+' that are near but not in the retrieved chunk.

Input parameters:

- `hit_ids` (array, required)
- `mode` (string)
- `radius_turns` (integer)

### `assess_answerability` (~100 tokens)

Assess Answerability

Sufficiency gate — can this question be answered with current evidence? Pass your query and optionally the fact rows you have gathered. Returns: answerable (yes/no), missing fields, contradictory fields, recommended next tool, and confidence. Use this BEFORE forcing a best-guess answer. If answerable=false, it is better to say 'insufficient evidence' than to guess wrong.

Input parameters:

- `candidate_rows` (array)
- `query` (string, required)

### `derive_from_facts` (~85 tokens)

Derive From Facts

Safe math and selection over a fact row set. Operations: sum, count, difference, max, min, latest, earliest. Pass the rows from enumerate_memory_facts and get a deterministic result with a computation trace. Removes arithmetic slop from totals, comparisons, and 'which is highest' questions.

Input parameters:

- `operation` (string, required)
- `rows` (array, required)

### `extract_facts_from_sessions` (~185 tokens)

Extract Facts From Sessions

Scan the tenant's seeded sessions with rule-based extractors (money, counts, dates, project-role, acquire, version-chain) and emit structured facts to the projection stream so they become queryable via enumerate_memory_facts. Use when enumerate_memory_facts returns insufficient rows for aggregation, version-chain, or money questions and you suspect the fact exists but was under-predicated at ingest. Idempotent — safe to re-run (duplicate fact_hashes skipped unless overwrite_existing=true). Profile 'comprehensive' runs all rule families; narrower profiles ('money', 'counts', 'dates', 'version_chains') target a single family. Returns facts_added + rules_matched + receipt_id. Gated by FACT_EXTRACTION_MODE on the server.

Input parameters:

- `extraction_profile` (string)
- `overwrite_existing` (boolean)
- `session_ids` (array)

### `compare_versions` (~190 tokens)

Compare Versions

Temporal-ordered view of all values recorded for an (entity, predicate) pair, with the most-recent-before-as_of flagged as current. Use this when the agent sees contradictory facts ('Rachel moved to Chicago' AND 'Rachel moved to the suburbs') and needs to know which is current. Example calls: {entity:'user', predicate:'mortgage_amount'} returns every mortgage figure you've recorded, current first. {entity:'user', predicate:'family_trip_destination'} resolves the latest family-trip destination across sessions. {entity:'user', predicate:'previous_occupation'} returns the user's earlier roles when they changed jobs. Returns current_value directly plus has_multiple_versions so the caller can signal uncertainty, and may also include a cached narrative summary when FEATURE_CAUSAL_NARRATIVES is enabled.

Input parameters:

- `as_of_current` (string)
- `entity` (string, required)
- `predicate` (string, required)

### `get_session_dossiers` (~152 tokens)

Get Session Dossiers

Retrieve pre-synthesized per-session memory dossiers (typed: experience | fact | preference; with When/Involving/To-purpose metadata). Use for multi-session or preference-style questions where stitching across conversations is the bottleneck — the dossier already summarises each session's key events. Two modes: mode='search' with a query (BM25-ish ranking over summary+purpose, optional type_filter), or mode='list' returns the tenant's most-recent dossiers chronologically. Tenants without FEATURE_SESSION_DOSSIERS enabled return an empty list (no error).

Input parameters:

- `limit` (integer)
- `mode` (string)
- `query` (string)
- `type_filter` (string)

### `investigate_question` (~188 tokens)

Investigate Question

Composite server-side investigation tool. Pass a question and the server automatically: (1) detects intent (aggregation/temporal/ordering/knowledge-update/recall), (2) queries the entity index for structured facts, (3) builds a timeline for temporal questions, (4) retrieves memory chunks with the right scoring profile, (5) expands context around sparse hits, (6) derives counts/sums for aggregation, (7) assesses answerability, and (8) returns a recommendation. Use this as your FIRST tool for any non-trivial question — it does the multi-step investigation that would otherwise take 4-6 individual tool calls. The response includes structured facts, timeline, retrieved chunks, derived results, answerability assessment, and a recommendation for how to answer.

Input parameters:

- `question` (string, required)
- `question_date` (string)
- `scoring_profile` (string)

### `submit_correction` (~77 tokens)

Submit Correction

Submit a correction for a knowledge item with evidence chain. The original item is never mutated — a versioned enrichment layer is created.

Input parameters:

- `corrected_content` (string, required)
- `correction_type` (string, required)
- `evidence` (array, required)
- `original_item_id` (string, required)
- `parent_receipt_id` (string)

### `get_enrichment_status` (~51 tokens)

Get Enrichment Status

Check the status of submitted corrections (pending, corroborated, merged, retracted, expired).

Input parameters:

- `correction_id` (string)
- `limit` (integer)
- `status` (string)

### `get_knowledge_gaps` (~55 tokens)

Get Knowledge Gaps

List gap receipts (coverage + enumeration) for the tenant, filterable by topic and recency.

Input parameters:

- `gap_subtype` (string)
- `limit` (integer)
- `since_days` (integer)

### `fill_gap` (~56 tokens)

Fill Knowledge Gap

Fill a previously reported gap with new knowledge. Gap must have been reported by a different tenant for cross-tenant credit.

Input parameters:

- `content` (string, required)
- `evidence` (array, required)
- `gap_receipt_id` (string, required)

### `declare_available_models` (~43 tokens)

Declare Available Models

Declare which models are available in this session for orchestration routing. Called once at session start.

Input parameters:

- `models` (array, required)
- `session_id` (string, required)

### `get_escalation_recommendation` (~71 tokens)

Get Escalation Recommendation

Get model routing recommendation for a query based on composite confidence and difficulty profile. Returns escalation advice: none, recommended, or required.

Input parameters:

- `current_model` (string)
- `query` (string, required)
- `query_confidence` (number)
- `session_id` (string)

### `get_incident_context` (~173 tokens)

Get Incident Context

What went wrong last time we touched this module? Returns past incidents, deploy failures, gotchas, and active constraints for a module or system. Use BEFORE modifying infrastructure code, deploy scripts, or any module with a history of fragility. Surfaces the kind of tribal knowledge that prevents repeat failures — Docker bind mount traps, Vault agent write patterns, stale dist/ artifacts, port conflicts, and similar operational landmines.

Input parameters:

- `code_paths` (array): Specific code paths to check for related incidents
- `days_back` (integer): How many days back to search (default 90)
- `limit` (integer): Max results to return (default 20)
- `module` (string, required): Module or system name (e.g. 'Engine', 'VaultCrux', 'docker', 'vault-agent')

### `get_architecture_rationale` (~170 tokens)

Get Architecture Rationale

Why is this module built this way? Aggregates all architectural decisions, active constraints, corrections, and skills for a domain into a coherent narrative. Use BEFORE refactoring or questioning a design choice — the answer is often 'it's that way because of compliance/performance/incident X'. Returns decisions sorted by recency, active constraints that still apply, and correction history showing what was tried and reverted.

Input parameters:

- `domain` (string, required): Domain or module to explain (e.g. 'retrieval', 'auth', 'billing', 'infra')
- `include` (array): Which artefact types to include (default: all)
- `limit` (integer): Max results per category (default 30)
- `since` (string): How far back to search (ISO datetime, default 180 days)

### `check_deploy_readiness` (~141 tokens)

Check Deploy Readiness

Is it safe to deploy these changes? Cross-references your changed modules against active constraints, recent incidents, knowledge freshness, and active alerts. Returns a composite verdict (ready/caution/block) with per-module breakdown and actionable recommendations. Use BEFORE deploying to catch constraint violations, recent regressions in the same area, stale knowledge that needs verification, and active alerts that might interact with your changes.

Input parameters:

- `changed_files` (array): Specific files changed (for constraint matching)
- `changed_modules` (array, required): Modules being deployed (e.g. ['Engine', 'VaultCrux'])
- `deploy_target` (string): Deploy target environment (default 'production')

### `get_operator_profile` (~62 tokens)

Get Operator Profile

Retrieve the human operator's working context: role, domain expertise, communication preferences, quality bar, trusted/distrusted sources. Returns the latest version of the profile. Defaults to the operator linked to the calling agent's passport.

Input parameters:

- `operator_id` (string)

### `update_operator_profile` (~107 tokens)

Update Operator Profile

Update the operator profile. Creates a new version with provenance receipt (does not mutate). Accepts partial updates — fields not provided are preserved from the previous version.

Input parameters:

- `communication_preferences` (object)
- `distrusted_sources` (array)
- `domain_expertise` (array)
- `experience_level` (string)
- `operator_id` (string)
- `quality_bar` (array)
- `role_description` (string)
- `trusted_sources` (array)

### `run_elicitation` (~94 tokens)

Run Elicitation

Start or resume a structured elicitation session for a specific knowledge layer. Layers: operating_rhythm, recurring_decisions, dependencies, friction, judgment_patterns, quality_standards, or 'full' for all layers. Returns the first question and session metadata. Use answer_elicitation to submit answers.

Input parameters:

- `layer` (string, required)
- `operator_id` (string)
- `resume_from` (string)

### `answer_elicitation` (~81 tokens)

Answer Elicitation

Submit an answer to an elicitation question. Triggers coverage re-assessment, follow-up question selection, and automatic output routing to appropriate record types (operating rhythms, constraints, decision context, operator profile). Returns the next question or session completion.

Input parameters:

- `answer` (required)
- `question_id` (string, required)
- `session_id` (string, required)

### `get_operating_rhythms` (~83 tokens)

Get Operating Rhythms

Retrieve operating rhythm records for an operator — temporal behavioural patterns capturing what the human actually does (not what their calendar says). Filterable by cadence (daily, weekly, monthly) and delegation status. Returns structured sequences with delegation readiness signals.

Input parameters:

- `cadence` (string)
- `delegation_status` (string)
- `operator_id` (string)

### `assess_delegation_readiness` (~102 tokens)

Assess Delegation Readiness

Multi-dimensional delegation readiness assessment. Checks operator profile completeness, operating rhythm coverage, constraint coverage, knowledge coverage, and decision framework coverage relative to the task. Returns overall readiness signal (ready/likely_ready/needs_work/not_ready), dimension-level gaps, and prioritised recommended actions. This is the pre-flight check for delegation, not for action (that's verify_before_acting).

Input parameters:

- `operator_id` (string)
- `task_description` (string, required)

### `provision_agent_context` (~107 tokens)

Provision Agent Context

Generate a structured, receipted context package for a new agent — the equivalent of soul.md + heartbeat.md + user.md but machine-queryable and backed by MemoryCrux records. Includes identity, operator context, active constraints, operating rhythms, knowledge briefing, and heartbeat schedule. Scope: minimal (identity + constraints), standard (all), comprehensive (standard + full knowledge).

Input parameters:

- `agent_role` (string, required)
- `operator_id` (string)
- `scope` (string)

### `decompose_expertise` (~106 tokens)

Decompose Expertise

Decompose a high-level task class (e.g. 'handle marketing', 'review contracts') into specific steps with knowledge requirements, judgment requirements, delegation difficulty (trivial/moderate/hard/expert_only), existing coverage, and elicitation signals. Identifies which steps can be immediately delegated, which need elicitation first, and which are genuinely expert-only.

Input parameters:

- `depth` (string)
- `operator_id` (string)
- `task_class` (string, required)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/cuecrux-vaultcrux-memory-core/memory-core-mcp#diagnostics

## Score history

- 2026-08-03: 61
- 2026-08-02: 60
- 2026-08-01: 60
- 2026-07-31: 59
- 2026-07-30: 56
- 2026-07-29: 55
- 2026-07-28: 55
- 2026-07-27: 54
- 2026-07-26: 53

## Links

- Remote endpoint: https://api.vaultcrux.com/memory-core/mcp
- Authorisation metadata: https://api.vaultcrux.com/.well-known/oauth-protected-resource/memory-core/mcp
- Repository: https://github.com/CueCrux/VaultCrux
- Changelog RSS feed: https://verifymcp.io/servers/cuecrux-vaultcrux-memory-core/memory-core-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/cuecrux-vaultcrux-memory-core/memory-core-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/cuecrux-vaultcrux-memory-core/memory-core-mcp
