aci-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@aci-mcpValidate: 'the sky is green' against my stored facts."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ACI-VPU — Artificial Cognition Infrastructure · Virtual Processing Unit
A virtual processing unit for cognition. The way a GPU is a processing unit for graphics, ACI-VPU is one for memory and understanding — a layer any AI or program calls to remember, reconcile, and retrieve. It gives an AI private, persistent, provenance-aware memory, so a grounded fact beats a lie repeated five times, and repeated context, inference and cloud calls get reused instead of re-paid.
pip install aci-vpu
aci-demoRuns offline. No GPU, no API keys. Base install is just numpy + pypdf.
ACI-VPU is a memory and reasoning layer, not an LLM and not a replacement for one. It's the unit that makes an LLM remember, keep its facts straight, and cost less to run.
The 30-second proof
aci-demo stores one true fact from a trusted file, then the same lie five times from untrusted chats, and asks the memory to check both:
MEMORY HOLDS 1 grounded truth (15 March, from roadmap.pdf)
the SAME lie x5 (20 April, from unverified chats)
check the LIE (repeated 5x): CONTRADICTED <- caught, despite the repetition
check the TRUTH (grounded 1x): consistent <- the grounded fact standsThe lie was newer and five times more frequent — and ACI-VPU still refuses it, because it weighs claims by trust and provenance, not by loudness or recency. A small local model reading this memory answers "15 March" correctly, for free, offline — because the memory did the reconciling the model can't.
A plain vector database (and an LLM reading one) does the opposite: it tends to surface whatever is most recent or most repeated.
Related MCP server: Cortex
Why not just a vector DB / ordinary RAG?
Same embedder, measured side by side (benchmark/benchmark_vs_vectordb.py) — so the only thing being compared is the ACI-VPU layer, not the embeddings. Verified with both lexical and real sentence-transformer embeddings, same result:
Capability | Vector DB | ACI-VPU |
Semantic retrieval | ✓ | ✓ |
Returns the current value, suppresses a superseded one | — | ✓ |
Flags a low-trust rumor vs a verified fact | — | ✓ (conf 0.70 vs 0.20) |
Detects contradiction between claims | — | ✓ |
Provenance weighting (who said it, how much you trust them) | — | ✓ |
Deduplicates repeated content (5 copies → 1 stored) | — | ✓ (2.8 KB vs 13.8 KB) |
Explainable trace for every answer | — | ✓ |
The wins come from truth values (ψ), contradiction detection, truth-aware supersession, and dedup — not from a better embedder.
What ACI-VPU is NOT
not an LLM and not a replacement for one
not a vector database (it uses one for coarse recall, then reconciles on top)
not a perfect document-to-knowledge-graph extractor — auto-extraction is high-precision on cleanly-stated facts, ~50% on messy/OCR'd docs (see Limitations)
not lossless compression through embeddings — stored meaning is lossy; byte-exact restore comes from a separate compressed blob
not an autonomous agent — it's a memory and validation layer that agents call
Privacy — the default, not a setting
Your memory stays on your device. ACI-VPU is a local service; nothing leaves your machine unless you wire it to. On top of that: at-rest encryption (ACI_PASSPHRASE, stdlib cipher out of the box, AES with [secure]), a global pause for all capture, a consent ledger to block any source, one-click forget, an audit trail, and secret redaction — credentials, API keys and tokens are masked or skipped before they can ever be stored.
How it works
Everything is a monad: a unit of information carrying a graded truth value (ψ), provenance, entropy, and links to other monads. Six primitives operate on it (aci/aci.py):
Primitive | What it does |
| turn raw info into a structured monad (+ dedup + compression) |
| retrieve by meaning (semantic + truth + recency + graph neighbours) |
| link monads in the meaning field |
| check a statement vs memory → contradiction + confidence + explainable trace |
| storage/compression stats |
| decide where a task should run (local vs cloud) |
The truth algebra is a small canonical gate set (NOT = 1/ψ, AND, OR, XOR = contradiction distance, IMPLIES), internally consistent and test-enforced (see CANON_GATES.md). A refinement loop settles beliefs toward self-consistency (ψ → 1).
Observer-relative truth. recall and validate can rank by observer-effective truth — ψ × the observer's trust in the source — over only what an observer is allowed to see, keeping cross-source conflicts as competing claims rather than silently overwriting them. This is the mechanism that lets one shared knowledge base serve different roles differently. By default semantic similarity leads the ranking; strengthening trust so it re-orders results (a legal view vs a sales view of the same KB) is a configurable weighting.
What you get
The full engine, from pip install aci-vpu:
Persistent memory —
monadise, on-device SQLite store, dedup, encryption.Truth / provenance engine — contradiction detection, supersession, confidence, explainable traces.
Semantic retrieval — vectorized top-k + meaning-graph neighbours; lexical by default, add
[semantic]for embeddings.Optimization — reuse of context, inference and storage, from the same
monadiseop (see below).MCP + SDK — give it to any AI.
aci monadise "My accountant is Sarah Chen."
aci recall "accountant"
aci validate "Helios ships on 20 April." # -> contradiction + trace
aci stats # health + compression
aci forget <id> # right to be forgottenGive it to any AI (MCP)
aci-mcp is a zero-dependency MCP server (newline-delimited JSON-RPC over stdio) that exposes your ACI-VPU to any MCP-capable AI — Claude, Claude Code, Cursor. It needs no extra installs.
aci-mcp # the stdio server — point your AI client's config at this
aci-mcp-setup # one-shot: register ACI-VPU with Claude Desktop / Cursor
aci-doctor # health check: install + MCP import + protocol handshakeNine tools: aci_recall, aci_remember, aci_validate, aci_ingest, aci_post_work, aci_team_activity, aci_find_skills, aci_save_skill, aci_skill_outcome. The AI reads and writes your memory every session instead of starting blank, and states when it did (✦ via ACI-VPU), so you can see why an answer is trustworthy.
SDK / HTTP: Python from aci.client import ACIClient; JavaScript clients/aci.js; or plain HTTP/JSON against the local service (GET /openapi.json). Set ACI_API_KEY to gate it.
Optimization — real, but workload-dependent (read the qualifier)
Because storing a monad already deduplicates and compresses, the same engine cuts cost. benchmark/benchmark_optimization.py reports these on a redundant / known workload:
Lever | Reduction (on redundant/known workloads) |
Stored representation | ~98% |
Repeated inference (cached) | ~90% |
Context tokens (grounded build) | ~92% |
Compute gating (entropy-value) | ~80% |
Cloud calls (local routing) | ~60% |
Read this before quoting the numbers. These are best cases on repetitive / known data. On fully novel workloads the savings trend to ~0% — there's nothing to reuse. And stored monads are lossy (they keep meaning, not exact bytes). The honest claim is: ACI-VPU reduces repeated context, inference and storage on workloads that contain real redundancy — which most production AI workloads do — not "98% off everything."
Extensions (optional)
All on-device, all opt-in — thin layers over the same memory:
Browser capture — a Chromium extension folds the pages you actually read into the same searchable memory (
clients/browser-extension/).Device optimization — read-only device health + a duplicate-file finder with reclaimable-space report (
aci device,aci dupes).Memory Compressor — keep a losslessly LZMA-compressed, dedup'd copy of a folder's originals and a semantic index; delete the originals, restore byte-exact later (
aci archive/aci restore, SHA-256 verified).Shared skills — reusable declarative know-how stored as
SKILLmonads; confidence earned from outcomes, better versions supersede once proven. One AI writes a skill, another finds it (aci_find_skills/aci_save_skill/aci_skill_outcome).Always-on autonomy — point it at a folder once; it re-syncs itself and runs on login (
aci watch,aci autostart).Observation (off by default) — active-window / clipboard / OCR / email connectors, all consent-gated, pausable, encrypted, with secret redaction.
Extras: pip install "aci-vpu[semantic]" (embeddings), [nlp], [secure] (AES), [scale] (ANN index), or [full].
Limitations
Stated plainly, because they decide whether ACI-VPU fits your use:
Auto-extraction is best-effort. Turning raw prose or PDFs into clean subject-predicate-object facts is high-precision on cleanly-stated sentences but ~50% on messy/OCR'd documents. Contradiction and supersession are most reliable on facts you state or tag.
Stored monads are lossy. They preserve meaning, not exact bytes. Byte-exact recovery is only via the Memory Compressor's separate compressed blob.
Optimization savings are workload-dependent — they trend to ~0% on fully novel data.
Observer-partition is a configurable weighting, not strong by default.
Run from source
pip install -e ".[full]" # everything: semantic + ANN + AES
py -m unittest discover -s tests # validation tests
py benchmark/benchmark_vs_vectordb.py # ACI-VPU vs a real vector DB
ACI_EMBEDDER=st py benchmark/benchmark_vs_vectordb.py # same, with real embeddings
py benchmark/benchmark_optimization.py # the optimization numbers aboveLicense
Apache-2.0. ACI-VPU is the memory and reasoning layer — it makes any AI remember, keep its facts straight, and cost less to run; it doesn't make the model smarter on its own.
Available Tools
9 toolsaci_find_skillsA
Search the shared SKILL library by intent before doing a task, to reuse a procedure another AI (or the user) already worked out — e.g. 'how to draft an arbitration notice'. Returns skills ranked by EARNED confidence (ψ), with their steps and author. Prefer a high-confidence existing skill over improvising.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | max skills to return (default 5) | |
| intent | Yes | the goal / task, in natural language |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses that the tool searches, returns skills ranked by confidence, and includes steps and author, which is meaningful beyond the schema. It does not discuss empty-result behavior or potential side effects, but 'Search ... Returns' implies a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two purposeful sentences with no filler. It front-loads the core action, gives an example, and then states the output and a preference rule, so every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema, the description covers the trigger, use case, output content, and ranking behavior. It could be more complete with explicit sibling routing or empty-result behavior, but it is sufficient for an agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters with 100% coverage, so the baseline is 3. The description reinforces 'intent' with a natural-language example and explains the purpose of the search, but it adds little beyond the schema for 'k'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Search the shared SKILL library by intent'), a concrete use case, and a worked example ('how to draft an arbitration notice'). It also distinguishes the tool's output by 'ranked by EARNED confidence (ψ)', making its role clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this tool 'before doing a task' and to prefer a high-confidence existing skill over improvising, which gives clear when-to-use context. It does not name alternative sibling tools or state when not to use it, so it stops short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aci_ingestA
Index a FOLDER on the user's machine into their ACI memory, so its documents (PDF, Office, text, images, ...) become recallable in every future session and by every connected AI. Use when the user says things like 'remember everything in this folder', 'index my Cases folder', or 'learn my documents'. Incremental and on-device: only new/changed files are processed and re-running is cheap. Give an absolute FOLDER path (not a single file).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | absolute path to the FOLDER to index | |
| full_resync | No | re-index everything, not just changes (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It volunteers useful details: processing is incremental, on-device, and cheap to re-run. It does not mention permissions, reversibility, or potential long initial indexing time, but the disclosed behavior is genuinely informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences with no filler; each sentence contributes distinct value: primary action, usage triggers, behavioral characteristics, and a parameter constraint. It is compact and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter ingest tool with no annotations and no output schema, the description covers purpose, when to use it, key behavior, and parameter guidance. It omits output/return behavior, but that is a minor gap for an ingest operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a helpful clarification that the path must be an absolute FOLDER path and not a single file, but full_resync is left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Index), a clear resource (a FOLDER on the user's machine into their ACI memory), and the outcome (documents become recallable in future sessions). This clearly differentiates it from retrieval-focused siblings like aci_recall.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete trigger phrases ('remember everything in this folder', 'index my Cases folder', 'learn my documents') that tell an agent when to use it. It does not explicitly discuss when not to use it or name alternative tools, so it is slightly short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aci_post_workA
Record what you (an AI agent) just did on a shared project into the user's ACI commons, so other AIs and the user can see it. Use when collaborating with other agents on the same project — log decisions, findings, or completed steps. Every agent connected to ACI reads and writes this same shared work log.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | what you did / found / decided | |
| agent | No | your name, e.g. 'Claude Code' or 'Codex' | |
| project | No | project name (groups related work) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden—and it does well by disclosing that the log is shared, visible to the user and other AI agents, and that every ACI agent reads and writes the same log. It doesn't cover auth, retention, or error behavior, but the core write/visibility semantics are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: first states the action, second gives the usage context, third clarifies shared visibility. No filler or redundant restatement of the tool name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple write-only logging tool, the description covers purpose, trigger condition, content examples, and visibility. It omits response/error behavior, but that is not essential for an agent to select and invoke this tool correctly, especially with fully documented parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, and the schema already defines 'note', 'agent', and 'project' meaningfully. The description reinforces what belongs in 'note' (decisions, findings, completed steps) but adds no format or constraint details beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Record') and a clear resource ('shared work log' / 'ACI commons'), and states the outcome: other AIs and the user can see it. This distinguishes it from the memory/skill-oriented sibling tools by anchoring it to shared project work logging.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use it: 'when collaborating with other agents on the same project,' and gives examples of what to log (decisions, findings, completed steps). It does not name alternatives or exclusion conditions, but the collaboration context is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aci_recallA
Search the user's ACI cognition memory by meaning — their files, web pages, notes and facts from past sessions, ranked by semantic similarity, TRUST and recency. ALWAYS call this before answering anything that could depend on the user's own data, documents, decisions or history, instead of assuming you have no memory of them: it is both cheaper and more accurate than guessing or asking them to repeat themselves. Pass as_of to time-travel: recall what was TRUE on a past date. When you use what it returns, tell the user the answer was grounded via ACI-VPU.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | max results to return (default 5) | |
| as_of | No | OPTIONAL Time Machine: a past date (e.g. '2026-03-15' or '2026-03-15 17:00') to recall what was TRUE AT THAT TIME — the value valid then, not the current one. Use for 'what was the deadline as of March?' / 'what did we know on <date>?' | |
| query | Yes | what to recall, in natural language |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It makes clear this is a non-destructive search, describes ranking behavior, mentions time-travel semantics for as_of, and instructs the agent to disclose ACI-VPU grounding. It does not cover failure modes or permissions, but for a recall/search tool the key behavior is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences front-load the core purpose, then add the always-call rule, the as_of behavior, and the grounding instruction. There is no filler; every clause adds actionable information for the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter search tool with no output schema, the description is nearly complete: it states what is searched, how results are ranked, when to invoke, and how to report usage. It does not describe the return shape or edge cases, which would be useful, but an agent can select and invoke the tool correctly based on what is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all 3 parameters at 100% coverage, so the baseline is 3. The description adds meaningful value by framing as_of as 'time-travel' with concrete use cases and clarifying that query is a natural-language meaning search. It does not elaborate on k, but the schema already handles that adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation ('Search the user's ACI cognition memory by meaning'), defines the resource scope ('files, web pages, notes and facts from past sessions'), and specifies ranking semantics ('semantic similarity, TRUST and recency'). This clearly distinguishes it from sibling write/lookup tools like aci_remember or aci_ingest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use guidance: 'ALWAYS call this before answering anything that could depend on the user's own data, documents, decisions or history', and explains why it is preferable to guessing or asking. It also gives a concrete scenario for the as_of parameter, but it does not name alternatives or exclusion conditions, so it falls just short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aci_rememberA
Store a durable fact or piece of knowledge into the user's ACI memory so it is available to every future session and every other app/AI connected to ACI. Use for stable facts the user states about themselves, their work, or decisions — not for ephemeral chit-chat.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | the fact to remember | |
| source_type | No | origin tag (default AI) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It honestly discloses the key side effect: the memory is durable and shared across all future sessions and apps. It does not mention overwrite, deletion, or limits, but the core persistence behavior is clearly conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The main action and durability scope are front-loaded in the first sentence, and the usage boundary is in the second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter tool with no annotations and no output schema, the description supplies enough context for an agent to invoke it correctly: what to store, why it matters, and what not to store. Minor gaps like duplicate handling or memory limits are not critical for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds extra meaning for the content parameter by defining what qualifies as a stable fact ('about themselves, their work, or decisions'), going slightly beyond the schema's generic 'the fact to remember'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Store') and resource ('the user's ACI memory'), and clarifies the scope: durable facts available to every future session and other ACI-connected apps. This clearly distinguishes it from sibling tools like aci_recall and aci_save_skill.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool for stable facts about the user, their work, or decisions, and explicitly excludes ephemeral chit-chat. It does not name alternative sibling tools, but the use-case guidance is clear enough to route an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aci_save_skillA
Publish a reusable, DECLARATIVE skill (a procedure / how-to / prompt — NOT runnable code) into the shared library so other AIs can find and reuse it. Re-saving the same skill corroborates it; an improved version supersedes the old once it proves at least as reliable. Save skills you worked out that others would reuse.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | the steps / procedure / prompt | |
| name | Yes | short skill id, e.g. 'arb_notice' | |
| tags | No | optional tags | |
| author | No | your name, e.g. 'Claude Code' | |
| intent | Yes | what goal it serves (used for discovery) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of explaining side effects. It discloses that saving publishes to a shared library, re-saving corroborates, and improved versions supersede older ones only after proving reliable. It does not cover failure modes or exact visibility semantics, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three focused sentences: the first establishes the core purpose, the second covers versioning behavior, and the third gives selection guidance. There is slight redundancy between 'reusable' and 'reuse it,' but overall the description is compact and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a publish tool with no annotations and no output schema, the description covers the action, the type of content, side effects, and when to use it. It omits operational specifics such as how success is returned or how 'proves reliable' is determined, but nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds a little semantic color by clarifying that the 'body' is a procedure, how-to, or prompt and that skills are declarative, but it does not meaningfully enrich the meaning of name, intent, tags, or author beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Publish'), the object ('a reusable, DECLARATIVE skill'), and the destination ('shared library so other AIs can find and reuse it'). It also explicitly contrasts the resource with runnable code, which distinguishes this tool from other skill-related siblings like find, validate, and remember.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives practical selection guidance: save skills you worked out that others would reuse, and exclude runnable code from this tool. It also explains re-saving behavior and supersession. It does not explicitly name sibling alternatives, but the context is strong enough for an agent to know when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aci_skill_outcomeA
Report whether a skill from the library actually WORKED after you used it. Success raises its confidence; failure lowers it. This is how the shared library self-curates — good skills rise, bad ones decay. Call it after acting on a skill from aci_find_skills.
| Name | Required | Description | Default |
|---|---|---|---|
| success | Yes | did it work? | |
| skill_id | Yes | the id of the skill you used |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It goes beyond the schema by disclosing the side effects: 'Success raises its confidence; failure lowers it' and frames the tool as the library's self-curation mechanism. It doesn't mention return format or auth, but the key behavioral impact is clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, then the behavioral effect, then the timing. Every sentence earns its place with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter reporting tool, the description covers purpose, timing, and behavioral consequences. It lacks an explicit return-value statement, but that is not essential for invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already fully describes both parameters. The description adds the conceptual meaning of the 'success' boolean (raising or lowering confidence), but does not add format, constraints, or examples beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Report') with a clear resource ('whether a skill from the library actually WORKED') and explains its role in the library's self-curation. The purpose is unmistakable and is distinct from siblings like aci_save_skill or aci_find_skills.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit timing context: 'Call it after acting on a skill from aci_find_skills.' This is clear contextual guidance, though it does not explicitly list exclusions or compare itself to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aci_team_activityA
See what every AI (and the user) has done on a shared project — the cross-agent work log from the user's ACI commons. Call this when you start collaborating to catch up on what other agents already did, so you don't duplicate their work.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | filter to one project (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. 'See' and 'work log' strongly imply a read-only, non-mutating operation, and it discloses the data source ('the user's ACI commons'). It could be more explicit about side-effect-freedom, but the read-only intent is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core function and followed by the usage trigger. Every phrase adds value; there is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers what it does, where the data comes from, and when to call it. It does not describe the exact return shape, but 'log' and the catch-up purpose give enough context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'project' is fully described in the input schema as 'filter to one project (optional),' so the description adds no new parameter-level meaning. With 100% schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'See what every AI (and the user) has done on a shared project — the cross-agent work log.' This clearly differentiates it from siblings like aci_remember or aci_find_skills, which deal with memory and skills rather than team activity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given: 'Call this when you start collaborating to catch up on what other agents already did, so you don't duplicate their work.' This is a clear trigger context, though it does not mention when not to use it or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aci_validateA
Check a statement against the user's ACI memory for contradictions and confidence — trust-weighted, so a grounded fact overrides a lie repeated many times. Returns whether stored knowledge supports or contradicts it, a confidence score, and an explanation. ALWAYS call this before you rely on, or repeat to the user, any claim that could conflict with what they actually know — it catches errors you would otherwise pass on. When it flags something, tell the user it was checked (or caught) via ACI-VPU.
| Name | Required | Description | Default |
|---|---|---|---|
| statement | Yes | the statement to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden, and it does so well. It discloses the trust-weighted rule ('a grounded fact overrides a lie repeated many times'), the return shape (supports/contradicts, confidence score, explanation), and how to handle flagged results. This goes well beyond the schema and the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler: first the core function, then the return value, then the usage directive. Each sentence earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter validation tool with no output schema, the description is complete. It covers what the tool does, how it behaves, what it returns, when to use it, and what to do after a flag. Nothing essential for invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'statement' has a schema description ('the statement to check') that covers it 100%, so the schema already communicates the core meaning. The description reinforces that the statement is a claim that may conflict with stored knowledge, but it adds no new format, constraints, or examples beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb ('Check') and a clear resource ('the user's ACI memory'), then specifies the purpose: contradictions and confidence. It also conveys the trust-weighted behavior, which distinguishes it from sibling tools like aci_recall or aci_remember without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to call this tool: 'ALWAYS call this before you rely on, or repeat to the user, any claim that could conflict with what they actually know.' It also gives a concrete follow-up action — tell the user the claim was checked or caught via ACI-VPU — so the usage guidance is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Tools orgainize into three recognizable domains — personal memory (recall/remember/ingest/validate), shared skills (find/save/outcome), and collaboration (post/team_activity) — with clear read/write pairs. Two pairs (recall vs validate and remember vs ingest) could cause initial misselection, but their descriptions give distinct triggers: search-by-meaning vs claim-checking, and single-fact vs folder ingestion.
All tools share the aci_ prefix in snake_case, with most following a verb (recall, remember, ingest, validate) or verb+object pattern (find_skills, save_skill, post_work). aci_skill_outcome and aci_team_activity break the verb convention with noun-noun names, a minor deviation in an otherwise predictable scheme.
Nine tools cover three cohesive subdomains — memory (4), skills (3), and shared work log (2) — with each tool serving a distinct purpose and no apparent redundancy. This sits comfortably in the well-scoped 3-15 range for a server of this breadth.
Memory has write (remember/ingest), read (recall), and verification (validate) but no explicit forget/delete tool; agents can work around this via re-storing corrections. Skills have a full find/save/feedback lifecycle, and the work log has both write and read sides, so core workflows are well covered with only a minor gap.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Persistent, inspectable memory for AI agents with lineage, correction, and a hosted MCP endpoint.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Persistent, portable memory for AI assistants — your private memory graph, from any MCP client.
Governed personal world model and memory for your AI agent. Pair once, connect over MCP.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceLocal-first memory engine that synthesizes entity profiles at ingestion. Enables persistent, reasoning memory for AI agents via MCP tools like add, search, and profile.MIT
- AlicenseNot gradedqualityDmaintenanceLocal-first AI memory layer with hybrid retrieval and brain-inspired namespaces. Enables agents to save, search, and manage memories directly via MCP tools.5MIT
- AlicenseNot gradedqualityBmaintenanceProvides a local-first, source-cited memory layer for AI agents, with MCP tools to search, read, explain sources, and propose/apply memory updates.523Apache 2.0
- AlicenseCqualityAmaintenanceProvides AI agents with a human-inspired memory layer via MCP, enabling episodic and semantic memory recall, forgetting curves, consolidation, and contradiction detection. It integrates with MCP clients to offer local-first, dependency-free memory management.981MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DevadiptaDas/ACI-VPU'
If you have feedback or need assistance with the MCP directory API, please join our Discord server