About Vayl
Vayl is an MCP server published by ac12644 in the Agents category: reconciling memory for coding agents: switch a library or decision and your AI assistant actually forgets the old one — no stale suggestions. MCP server for Cursor & Claude Code.
The repository has 2 stars and 1 forks, with the last commit 4 days ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/ac12644/vaylThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (32)
attest(subject)Issue a **signed, third-party-verifiable attestation** of the current value — "as of now, X is the value", anchored to the tamper-evident audit head. Prove what was known, and when.
Parameters not published.
audit_log()The accountability trail — who did what, when; detail encrypted at rest; never wiped by erasure.
Parameters not published.
check_before_act(subject, …)**Safety gate before an irreversible action.** Returns SAFE, or BLOCKED with reasons — a disputed (FLAGGED) value, confidence below the bar, a stale fact, or one that just changed. Tune the policy (`min_confidence`, `max_staleness_days`, …).
Parameters not published.
confirm_change(memory_id, decided_by)Approve a proposed change, applying it. Records **who** decided.
Parameters not published.
create_principal(name, role, scopes)*(admin)* Create a user/agent and issue its API key (shown once). Roles: admin, member, agent, viewer, auditor. `scopes` confines it to named `user_id`s — **required for multi-tenant**.
Parameters not published.
delete(subject)**Permanently erase** a subject, history included — right-to-be-forgotten / GDPR. Unlike `forget`, nothing is retained; the erased values are also **redacted from decision snapshots** (re-signed, redaction audited). Issues a **signed erasure receipt**.
Parameters not published.
delete_all()Permanently erase **all** of a user's memory (account deletion / GDPR), with their decision snapshots redacted too. Issues a signed erasure receipt.
Parameters not published.
explain_decision(decision_id)Reconstruct a past decision: the action plus the beliefs held **at that moment**, with the signed receipt verified so you know the record wasn't altered.
Parameters not published.
export_memory()**DSAR-complete export** (GDPR Art. 15/20): statements (active + history) plus the subject's decision snapshots, audit entries, and receipts — machine-readable JSON.
Parameters not published.
export_public_key()Vayl's Ed25519 public key — anyone can verify receipts, attestations, and the audit chain **without the secret key or the database**.
Parameters not published.
Show all 32 tools
forget(text)Retract a fact (`"we dropped Sentry"`, `"Alice left"`) — retired but **kept in history** for audit. Guaranteed removal.
Parameters not published.
get_memory(memory_id)One memory's structured detail (value, status, scope, confidence, metadata). Ids are shown as `#id` by `list_memories`.
Parameters not published.
get_reconcile_policy()Show the space's reconciliation policy.
Parameters not published.
health()Diagnose setup — checks the database, embedder, LLM, and graph (if enabled) are reachable. Run this first if something isn't working.
Parameters not published.
history(subject)The change-log for a subject — every value it has held, oldest → newest, with status. The "what did we use first vs now" view additive stores can't give you.
Parameters not published.
license_status()Show the edition (Community or licensed), seats used vs. allowed, expiry, and unlocked features.
Parameters not published.
list_memories()Current active facts (each with its `#id`) plus a history block of what was superseded / retracted.
Parameters not published.
list_principals()*(admin)* List the deployment's principals and their roles (never shows keys).
Parameters not published.
pending_changes()Proposed changes to **confirm-required** slots that have not been applied — the human-approval queue. Shows old → new plus the sentence that triggered it.
Parameters not published.
purge_expired(days, …)Retention (Art. 5(1)(e)): hard-delete records older than N days; flags extend it to the audit log / decisions / receipts — the audit chain stays verifiable across purges via a **signed retention anchor**.
Parameters not published.
recall(question, explain=True)Answer from memory — current value, history, or multi-hop. Says **"I don't know"** rather than guessing. With `explain=True`, also returns the **provenance** — the exact facts used, each with who asserted it, its confidence, and what it superseded. `include_history=True` reaches retired facts for questions about the past; `critical_categories=…` forces named categories into the answer regardless of ranking.
Parameters not published.
recall_related(question)Deep / relational / multi-hop questions via the entity graph (`"who owns the company Bob works for?"`). Falls back to `recall` when the graph isn't enabled.
Parameters not published.
record_decision(action_summary, question)Log a decision bound to the **exact facts the agent consulted** — an immutable, signed snapshot of what it believed. Answers "why did the agent do X?" even after those facts later change.
Parameters not published.
reject_change(memory_id, decided_by)Discard a proposed change. The current value stands; the proposal is kept as history.
Parameters not published.
remember(text, source=…)Store fact(s). Automatically supersedes, retracts, or splits multiple facts in one message. `source` records who/what asserted it (belief provenance + source-aware reconciliation in a shared space).
Parameters not published.
revoke_principal(id, erase)*(admin)* Disable a principal — its API key stops working immediately. `erase=True` hard-deletes the record (Art. 17 for team members).
Parameters not published.
safe_recall(question, …)Like `recall`, but answers **only if every current fact behind the answer is safe to act on**; otherwise it withholds the answer and returns why. Use on the path to an action.
Parameters not published.
set_reconcile_policy(mode, authority)Configure how a **shared space** resolves conflicts between different contributors: `RECENCY` (newer wins), `AUTHORITY` (higher-ranked source wins; a lower one is flagged, not overwritten), or `REVIEW` (every cross-source conflict is flagged).
Parameters not published.
stats()On-device KPIs — per-tool call counts, avg latency, errors, and the distribution of reconciliation actions (SUPERSEDE / RETRACT / FLAG / SKIP …). Nothing leaves the machine.
Parameters not published.
update_memory(memory_id, new_value)Correct a memory by id — **audit-preserving**: the old value is retired to history, the new one becomes active.
Parameters not published.
verify_audit()Verify the **tamper-evident audit chain** end-to-end — reports INTACT, or the exact row where it breaks (edited / reordered / truncated).
Parameters not published.
verify_receipt(receipt_id)Verify a signed erasure receipt or attestation — recomputes the body and checks the Ed25519 signature. VALID / INVALID.
Parameters not published.
Ask AI
Ask AI about Vayl
Powered by Claude · Grounded in docs
Security checks
6 checks have not been run yet.