vaasxmcp is a remote MCP server -- persistent, outcome-grounded episodic memory for Claude and any other MCP client. Add it as a connector and Claude can recall relevant past episodes at the start of a task, and write new ones as it works, without you asking it to.
https://mcp.vaasx.com/mcp
Listed on the Official MCP Registry as io.github.VAAS-X/vaasxmcp.
Most agent memory is either a context window that resets every session, or a vector database that only ever tells you what's semantically similar. vaasxmcp is neither: it stores what happened as state → action → outcome episodes, so retrieval surfaces what actually worked, not just what looks close.
Go to vaasx.com/pricing and click "Get Your Free API Key" -- no card required, key issued instantly.
In Claude.ai: Settings → Connectors → Add custom connector. Paste https://mcp.vaasx.com/mcp, then authorize via OAuth -- enter the API key from step 1 when prompted to link the connector to your VAAS-X account.
Once connected, Claude can recall relevant past episodes at the start of a task and write new ones as it works, without you asking it to.
recallSearch past episodes, ranked toward what actually worked. Arguments: query (required), k (default 5), include_failures (default false), device_id (default: account default).
rememberRecord a distilled fact or decision. Arguments: text (required), outcome ("success" / "failure" / "neutral", default neutral, or "pending" to leave it unresolved -- see below), tags, context, device_id.
record_outcomeClose the loop on a memory once its outcome becomes known -- e.g. a tentative fix later confirmed working. Arguments: episode_id (required), result (required), delta, resolved, device_id, expected_prior_result (optional compare-and-swap guard -- see below).
get_memoryDirect lookup of one episode by id -- an exact fetch, not a search. Arguments: episode_id (required), device_id.
await_pendingLong-poll for pending work on a device -- blocks until an episode with an unresolved outcome appears, or the timeout elapses, whichever comes first. Call it in a loop from an otherwise-idle session to turn it into a live worker: act on whatever comes back, then close it with record_outcome. Arguments: device_id, timeout_s (default 25, capped), poll_interval_s (default 3), query, k (default 25).
Every episode has an outcome.result -- most of the time you already know it. Leave it unresolved instead and the same three tools become a queue: enqueue with remember, dispatch with await_pending, complete with record_outcome -- and completion is compare-and-swap, so two workers racing for the same item can't silently clobber each other.
remember(text, outcome="pending") writes the episode with outcome.result: "pending" instead of a known result -- work for someone (or something) else to pick up.
An otherwise-idle session calls await_pending() in a loop. As soon as a pending episode lands on that device, the call returns it instead of waiting out the full timeout.
record_outcome(episode_id, result, expected_prior_result="pending") only applies if the episode is still pending. If another session already closed it, this fails with 409 outcome_conflict and the real current value -- instead of silently overwriting it.
Live-verified, not just documented: closing an already-closed episode with the same guard returns {"error": true, "status_code": 409, "detail": {"error": "outcome_conflict", "expected_prior_result": "pending", "actual_result": "..."}} -- the real conflicting value, not a silent overwrite.
A plain vector search returns the nearest match. recall() defaults to success-weighted ranking, so a past episode you later marked as a failure doesn't outrank one that worked, even if it's a closer textual match -- the whole point when the recall is feeding a decision, not just a citation.
Each connected account gets a default memory store on first use. Pass a different device_id to any tool to keep separate stores -- per project, per client, per agent -- all under the same account. Enterprise-tier accounts can federate reads across multiple stores.
Backed by the same retrieval substrate behind the vaas-x SDK: 14ms mean retrieval across 1.18M-item benchmark, standard CPU instance, no GPU. 100% blind classification on NASA's CMAPSS FD001.
Get a free-tier key and connect in under a minute, or reach out with questions about Enterprise multi-store federation.