Skip to main content
Glama

Gnosys — One Brain. Zero Context Bloat.

Gnosys gives AI agents persistent memory that survives across sessions, projects, and machines.

The central brain is a single SQLite database at ~/.gnosys/gnosys.db with sub-10ms reads — no vector DBs, no black boxes, no external services. Federated search ranks results across project, user, and global scopes. It runs as a CLI and as a full MCP server that drops straight into Claude Code, Claude Desktop (Chat / Cowork / Code), Cursor, Codex, Gemini CLI, Antigravity, Grok Build, or any MCP client. When you want a human-readable view, gnosys export regenerates a full Obsidian vault on demand.

Install

Requires Node.js ^22.16.0 || >=24.0.0. FTS5 requires this floor. Node 23.x is unsupported. SQLite uses built-in node:sqlite. No native SQLite dependency or rebuild is needed when switching supported Node versions.

npm install -g gnosys
gnosys setup          # configures provider, API key, and your IDE/agent

Optional local embeddings. Gnosys auto-installs @huggingface/transformers. If it cannot install, use an external embedding API. SQLite does not need this package.

Related MCP server: Mem0 MCP Server

Quick start

gnosys setup ides                                        # wire MCP into your IDEs (once)
cd your-project
gnosys init                                              # register the project
gnosys add "We chose PostgreSQL over MySQL for JSON support"
gnosys recall "database selection"                       # what's relevant right now

That's the 60-second tour. Everything else lives on gnosys.ai.

What you get

  • Central brain — one ~/.gnosys/gnosys.db unifies every project (project / user / global scopes). Sub-10ms reads, SQLite as the sole source of truth.

  • Federated search — tier-boosted hybrid (FTS5 keyword + semantic) search across scopes, with recency and reinforcement.

  • MCP server — gnosys serve exposes 50+ memory tools to any MCP client. Sandbox-first runtime keeps context cost near zero.

  • Web Knowledge Base — gnosys web build turns any site into a searchable index for serverless chatbots, with optional build-time vectors for serverless-safe hybrid semantic search. Zero runtime deps.

  • Dream Mode — idle-time consolidation: confidence decay, summaries, relationship discovery. Never deletes — only suggests.

  • Multi-machine sync — share your brain across machines; conflict detection with skip-and-flag resolution.

  • Obsidian export — gnosys export regenerates a full vault with frontmatter, [[wikilinks]], and graph data.

MCP Tool Reference

All tools are exposed over stdio and HTTP transports. Many tools accept an optional projectRoot parameter to target a specific project store.

This package installs two binaries:

  • gnosys — the CLI. gnosys serve starts the MCP server (stdio by default, --transport http for the central-server topology). gnosys setup ides wires gnosys-mcp into your IDE/agent configs.

  • gnosys-mcp — a direct alias for the MCP stdio server entry, for MCP clients that prefer to spawn the server binary directly (e.g. npx -y gnosys-mcp). Equivalent to gnosys serve.

Tool

Tier

Description

gnosys_discover

standard

Discover relevant memories by describing what you're working on.

gnosys_read

core

Read a specific memory.

gnosys_search

standard

Search memories by keyword across all stores.

gnosys_list

standard

List memories across all stores, optionally filtered by category, tag, or store layer.

gnosys_add_structured

core

Preferred for LLM agents. Add a memory with structured fields you supply (title, category, tags, content) — makes no server-side LLM call.

gnosys_add

full

Add a memory from raw text; the server's LLM structures it. For non-agent callers (scripts, cron) — agents should use gnosys_add_structured.

gnosys_tags

standard

List all tags in the registry, grouped by category.

gnosys_tags_add

full

Add a new tag to the registry.

gnosys_reinforce

core

Signal whether a memory was useful.

gnosys_init

core

Initialize Gnosys in a project directory.

gnosys_migrate

full

Migrate a Gnosys store (.gnosys/) from one directory to another.

gnosys_update

core

Update an existing memory's frontmatter and/or content.

gnosys_stale

full

Find memories that haven't been modified or reviewed within a given number of days.

gnosys_commit_context

full

Pre-compaction memory sweep.

gnosys_history

full

View audit history for a memory.

gnosys_lens

standard

Filtered view of memories.

gnosys_timeline

standard

View memory creation and modification activity over time.

gnosys_stats

standard

Summary statistics across all memories — totals by category, status, author, authority, average confidence, and date ranges.

gnosys_links

standard

Show wikilinks for a specific memory — outgoing [[links]] and backlinks from other memories.

gnosys_graph

standard

Show the full cross-reference graph across all memories.

gnosys_bootstrap

full

Batch-import existing documents from a directory into the memory store.

gnosys_import

full

Bulk import structured data (CSV, JSON, JSONL) into Gnosys memories.

gnosys_hybrid_search

core

Main search: keyword, semantic, or hybrid ranking with snippets and IDs.

gnosys_semantic_search

standard

Search memories using semantic similarity only (no keyword matching).

gnosys_reindex

full

Rebuild all semantic embeddings from every memory file.

gnosys_ask

standard

Ask a natural-language question and get a synthesized answer with citations from the entire vault.

gnosys_maintain

full

Run vault maintenance: detect duplicate memories, apply confidence decay, consolidate similar memories.

gnosys_dearchive

full

Force-dearchive memories from archive.db back to active.

gnosys_reindex_graph

full

Build or rebuild the wikilink graph (.gnosys/graph.json).

gnosys_dream

full

Run a Dream Mode cycle — idle-time consolidation that decays confidence, generates category summaries, discovers relationships, and creates review suggestions.

gnosys_export

full

Export gnosys.db to Obsidian-compatible vault — atomic Markdown files with YAML frontmatter, [[wikilinks]], category summaries, and relationship graph.

gnosys_dashboard

core

Show the Gnosys system dashboard: memory counts, maintenance health, graph stats, LLM provider status.

gnosys_stores

full

Debug tool — lists all detected Gnosys stores across registered projects, MCP workspace roots, cwd, and environment variables.

gnosys_recall

core

Fast memory recall — inject relevant memories as context.

gnosys_audit

full

View the audit trail of all memory operations (reads, writes, reinforcements, dearchives, maintenance).

gnosys_preference_set

core

Set a user preference.

gnosys_preference_get

core

Get a user preference by key, or list all preferences.

gnosys_preference_delete

standard

Delete a user preference by key.

gnosys_sync

full

Get the current user preferences + project conventions formatted as a GNOSYS:START/GNOSYS:END block.

gnosys_federated_search

standard

Search across scopes with boosts, memory IDs, status labels, and replacements before history.

gnosys_detect_ambiguity

full

Check if a query matches memories in multiple projects.

gnosys_briefing

core

Generate a project briefing — a summary of memory state, categories, recent activity, and top tags.

gnosys_portfolio

full

Portfolio dashboard — shows all registered projects with memory counts, categories, status snapshots, roadmap items, and recent activity.

gnosys_remote_status

full

Check the status of remote sync (multi-machine).

gnosys_remote_push

full

Push local memory changes to the remote (NAS) database.

gnosys_remote_pull

full

Pull remote memory changes to the local database.

gnosys_remote_resolve

full

Resolve a sync conflict by choosing which version to keep.

gnosys_update_status

standard

Get the prompt/template for writing a dashboard-compatible status memory for this project.

gnosys_working_set

standard

Get the implicit working set — recently modified memories for the current project.

gnosys_ingest_file

standard

Ingest a file (PDF, DOCX, TXT, MD, images via vision LLM, audio/video via Whisper transcription) into Gnosys memory.

gnosys_attach

standard

Attach a small binary file (logo, diagram, screenshot, small PDF) inline to a memory (~10MB limit; syncs machine-to-machine).

gnosys_get_attachment

standard

Retrieve the binary attachment stored on a memory (base64 bytes, or write to disk via outputPath).

gnosys_trace

standard

Trace a codebase directory and store procedural "how" memories with call-chain relationships.

gnosys_reflect

core

Record a real-world outcome against related memories, adjusting their confidence and linking them.

gnosys_traverse

core

Walk relationship chains from a memory id (BFS, depth-limited), optionally filtered by direction or relationship types.

gnosys_toolset

core

Inspect the tool catalog or switch the active tier.

Toolset tiers

Tool descriptions and schemas consume agent context, so since v6.2.0 every session starts on the core tier and agents self-escalate in-session: calling gnosys_toolset without arguments lists what the higher tiers add, and gnosys_toolset {"set": "standard"|"full"} enables them at runtime (and "core" shrinks back). The switch emits notifications/tools/list_changed, so MCP clients pick up the new tools automatically.

Tier

Tools

Contents

core (default)

14

Main memory workflow, hybrid search, reflection, traversal, and tier switching

standard

33

Core plus specialist search, tracing, browsing, attachments, and ingestion

full

56

All tools, including freeform ingestion, maintenance, remote sync, and export

GNOSYS_MCP_TOOLSET=core|standard|full overrides the starting tier (unknown values warn on stderr and fall back to core). The starting toolset and escalation hint are announced in the MCP server instructions. See docs/mcp-toolsets.md.

Documentation

Full docs & guides

https://gnosys.ai

Complete CLI + MCP reference

https://gnosys.ai/guide.html

Changelog

CHANGELOG.md

Contributing

CONTRIBUTING.md

Security policy

SECURITY.md

Report a bug / request a feature

GitHub Issues

License

MIT © Proticom. See LICENSE.

Available Tools

14 tools
gnosys_add_structuredA

Save a structured memory without an LLM call, returning its ID, store label, and up to three active overlaps. Supply title, category, tags, and Markdown content; store defaults to project, author to ai, authority to observed, and confidence to 0.8 (also used for an explicit zero). supersedes links comma-separated predecessor IDs; cross-scope or cross-project links require allowCrossScope=true. Use gnosys_update instead to change an existing memory or unlink a predecessor with superseded_by="".

NameRequiredDescriptionDefault
tagsYesTags object, e.g. { domain: ['auth'], type: ['decision'] }
storeNoTarget store (default: project)
titleYesMemory title
authorNoAuthor: human, ai (default), or human+ai
contentYesMemory content as markdown
categoryYesOpen category name, e.g. decisions, architecture, requirements, concepts, roadmap, landscape, open-questions, or how
authorityNoAuthority: declared, observed (default), imported, or inferred
relevanceNoSpace-separated keyword cloud for discovery search
confidenceNoConfidence from 0 to 1 (omitted or zero uses 0.8), e.g. 0.9 for verified evidence
supersedesNoComma-separated IDs of memories this replaces
projectRootNoProject root path; routes the call to that project's store.
allowCrossScopeNoAllow supersession across scopes or projects (default false)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the safety profile (not read-only, not destructive, open-world, not idempotent). The description adds real context beyond that: the return payload (ID, store label, up to three active overlaps), the defaulting behavior for store/author/authority/confidence, and the notable quirk that an explicit zero confidence is treated as 0.8.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with the primary action and return shape front-loaded; no filler. The middle sentence packs defaults and link rules tightly enough that it reads slightly as a spec dump, but every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter mutation tool with no output schema, the description covers return values, defaults, and the supersession constraint well. Minor gap: relevance and projectRoot routing are left entirely to the schema, so the picture is near-complete rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented, but the description still adds value by restating the defaults and the non-obvious confidence-zero behavior, and by clarifying that supersedes is comma-separated and gated by allowCrossScope. It doesn't cover relevance or projectRoot routing, so it is not a full supplement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb + resource plus a distinguishing trait ('without an LLM call') and immediately states what is returned. It explicitly separates itself from gnosys_update, so an agent can route between the two without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit exclusion: use gnosys_update to change an existing memory or to unlink a predecessor via superseded_by="". It also states the precondition for cross-scope/cross-project supersession (allowCrossScope=true), so the branch conditions are spelled out rather than implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gnosys_briefingA
Read-onlyIdempotent

Summarize a project as Markdown with memory counts, categories, activity from the last seven days, top tags, and a summary. projectId takes precedence over projectRoot; otherwise detect from projectRoot or cwd. all=true returns summaries for all projects and ignores both selectors (default false). Use gnosys_dashboard instead for system health, graph statistics, and provider status as JSON.

NameRequiredDescriptionDefault
allNoGenerate briefings for ALL projects
projectIdNoProject ID (auto-detects from cwd if omitted)
projectRootNoProject root for auto-detection

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and a closed world, so safety is covered. The description adds value beyond that by disclosing the return format (Markdown, not JSON) and the precedence/default semantics. It doesn't explicitly say there are no side effects, but the read-only annotations make that clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, each carrying distinct payload: output contents first, then selector precedence and defaults, then the sibling disambiguation. No repeated or filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still names the return format and its components, and the selector/default rules cover the main invocation ambiguity. Nothing material is missing for a zero-required-param read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks: projectId precedence over projectRoot, cwd auto-detection, and that all=true silently ignores both selectors. That precedence rule is exactly the ambiguity an agent would otherwise trip on.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Summarize a project as Markdown') and enumerates the output contents (memory counts, categories, 7-day activity, top tags, summary). It also names the distinguishing sibling, gnosys_dashboard, so an agent can differentiate without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives selector precedence (projectId over projectRoot), fallback behavior (detect from projectRoot or cwd), and the all=true override that ignores both selectors with a stated default of false. It also routes the agent away to gnosys_dashboard for system health/graph stats/provider status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gnosys_dashboardA
Read-onlyIdempotent

Inspect local memory-system health as JSON with memory counts, maintenance health, graph statistics, and LLM provider status. projectRoot selects the project context; omission uses the detected context. Use gnosys_briefing instead for a project summary and recent activity as Markdown.

NameRequiredDescriptionDefault
projectRootNoProject root path; routes the call to that project's store.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and openWorld, so safety is covered. The description adds valuable context: returns JSON with specific sections and that omitting projectRoot uses the detected context. It doesn't mention performance, caching, or failure behavior, keeping it a step below the top.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste, front-loading the purpose and return contents before the alternative routing. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the return-value burden, which it handles by listing the JSON sections. Combined with annotations covering the safety profile and the lenient default for projectRoot, it is nearly complete, missing only output shape details like nesting or formatting.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema documents projectRoot as routing to a project's store. The description adds the meaningful default behavior that omission falls back to the detected context, which the schema does not state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Inspect) and resource (local memory-system health), enumerates the returned content (memory counts, maintenance health, graph statistics, LLM provider status), and explicitly names the sibling gnosys_briefing as the alternative. An agent can distinguish it from siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to gnosys_briefing when a Markdown project summary and recent activity are wanted, and clarifies the projectRoot omission behavior. Clear usage context, though it doesn't state when-not to use this tool beyond that single alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gnosys_initA
Destructive

Initialize a project directory, returning its identity, store path, and setup summary. Pass an absolute directory (e.g. /work/app); projectName defaults to its basename. Creates .gnosys/ metadata and registers the project in the central SQLite store; run this before project-scoped operations on a new root. Use gnosys_briefing instead to inspect an already registered project.

NameRequiredDescriptionDefault
directoryYesAbsolute path to the project directory to initialize. Required.
projectNameNoHuman-readable project name. Defaults to directory basename.
projectRootNoProject root path; routes the call to that project's store.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses side effects the annotations don't spell out: it creates .gnosys/ metadata and writes a registration into the central SQLite store, which explains the openWorldHint. But annotations declare destructiveHint=true and idempotentHint=false, and the description never says what happens on re-initialization of an existing root or what could be overwritten — the key risk an agent needs to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences that front-load purpose then prerequisites then the alternative. The return-value clause and the absolute-path example are both useful, though the example is arguably redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description does say what comes back, plus the setup prerequisite and the sibling route. The remaining gap is re-initialization semantics, which matters given destructiveHint=true.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline applies. The description reinforces the absolute-path requirement with an example and restates the projectName default, but it adds nothing about projectRoot, the one parameter whose routing behavior ('routes the call to that project's store') is the least obvious.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Initialize a project directory') and immediately names what it returns (identity, store path, setup summary). It also separates itself from the sibling gnosys_briefing, which inspects an existing project rather than creating one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('run this before project-scoped operations on a new root') and an explicit alternative with its condition ('Use gnosys_briefing instead to inspect an already registered project'). Little is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gnosys_preference_getA
Read-onlyIdempotent

Read a user preference by key, returning its title, value, confidence, and modified date, or omit key to list all preferences with their keys and values. Keys are kebab-case, e.g. {"key":"code-style"}; missing keys return a not-found message. Use gnosys_preference_set instead to save or replace a preference.

NameRequiredDescriptionDefault
keyNoPreference key to retrieve. Omit to list all preferences.
projectRootNoProject root path; routes the call to that project's store.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds value beyond that: which fields are returned, that missing keys yield a not-found message, and the kebab-case key convention. It does not disclose ordering or volume behavior when listing all preferences, which is the main remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary behavior, then the list-all mode, then the alternative tool. Every clause carries information an agent needs; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description correctly compensates by naming the returned fields (title, value, confidence, modified date) and the failure mode. Minor gap: no guidance on result size or ordering for the list-all path, which matters for an enumerating call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents both parameters, so the baseline is 3. The description goes further by giving the kebab-case convention and a concrete example ({"key":"code-style"}), which is meaning the schema does not supply.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (read a user preference by key), then covers the second operating mode (omit key to list all) and the return fields. It distinguishes itself from the sibling that writes preferences by naming gnosys_preference_set explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit mode selection ("omit key to list all preferences") and names the alternative tool with the condition that selects it ("Use gnosys_preference_set instead to save or replace"). An agent can route between read and write without opening either schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gnosys_preference_setA
Destructive

Save or replace a user preference across projects, returning its key, title, and value. Use kebab-case keys, e.g. {"key":"code-style","value":"Use named exports"}; title is generated from the key if omitted. Preferences persist as user-scoped memories; the CLI command gnosys sync refreshes generated rules files. Use gnosys_preference_get instead to inspect a key or list preferences.

NameRequiredDescriptionDefault
keyYesPreference key, kebab-case. Examples: 'commit-convention', 'code-style', 'llm-provider', 'testing-approach', 'naming-convention'
tagsNoOptional tags for discovery.
titleNoHuman-readable title. Auto-generated from key if omitted.
valueYesThe preference value. Can be a sentence or paragraph describing the convention.
projectRootNoProject root path; routes the call to that project's store.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, so the overwrite risk is partly covered structurally. The description adds real context beyond that: preferences persist as user-scoped memories and generated rules files only refresh via 'gnosys sync'. It could say more about what happens to an existing value when the key is reused, but the operational side effects are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences: purpose and return, then the key-format example, then persistence and the get-alternative. Every sentence carries weight, though the kebab-case guidance duplicates the schema slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully states what is returned (key, title, value) and explains the persistence model and sync requirement. The remaining gap is what 'replace' means for an existing key's tags or title, but nothing essential for a correct call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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's kebab-case example and the note that 'title is generated from the key if omitted' restate what the schema already documents rather than adding new semantics, so no credit above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Save or replace') and resource ('user preference'), states the scope ('across projects') and the return shape ('key, title, and value'). It also explicitly distinguishes itself from the sibling gnosys_preference_get, so an agent can choose without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear routing rule: use gnosys_preference_get to inspect or list, and this tool to write. The kebab-case convention and the 'gnosys sync' follow-up are practical usage context. It lacks explicit exclusions versus other write-ish siblings such as gnosys_add_structured, which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gnosys_readA
Read-onlyIdempotent

Read a memory by ID (e.g. arch-012) or layer-prefixed path (e.g. project:decisions/why-not-rag.md), returning Markdown content, metadata, and supersession links. Unprefixed paths search stores in precedence order. Use gnosys_hybrid_search instead when you do not know the ID, or gnosys_recall for several relevant memories as context.

NameRequiredDescriptionDefault
pathYesMemory ID or path, optionally prefixed with store layer
projectRootNoProject root path; routes the call to that project's store.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, closed-world, non-destructive, so the safety profile is covered. The description adds value beyond that with the precedence-order store resolution for unprefixed paths and the shape of what comes back (content, metadata, supersession links). Not a full 5 only because it does not discuss ambiguity when an ID exists in multiple layers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying distinct information: capability and return shape first, then path resolution semantics, then sibling routing. Zero filler and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description summarizes the return payload and the supersession links. Combined with full schema coverage and exhaustive annotations, an agent has everything needed to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description earns above baseline by giving concrete path syntax examples (arch-012, project:decisions/why-not-rag.md) and explaining the semantics of an unprefixed path. projectRoot is left entirely to its schema description, which is fully documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (Read) plus resource (a memory) with two accepted identifier forms shown by example, and it declares the return payload (Markdown content, metadata, supersession links). It is unmistakable against siblings like gnosys_hybrid_search and gnosys_recall, which it names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing: use this when you know the ID, use gnosys_hybrid_search when you do not, and gnosys_recall for several relevant memories as context. It also states the fallback behavior for unprefixed paths (search stores in precedence order), covering the ambiguous case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gnosys_recallA
Read-onlyIdempotent

Recall relevant memories as a context block for a task, e.g. query="JWT middleware". query="*" selects by reinforcement, confidence, and recency; limit uses config by default and is capped at 15; aggressive defaults to config (true). Use gnosys_hybrid_search instead to inspect ranked results or gnosys_read for one complete body. Registered projectRoot includes project, user, and global memories; omit it for all projects, or run gnosys_init for an unregistered root. Installed hooks may already inject this context per prompt.

NameRequiredDescriptionDefault
limitNoMax memories to return (default from config, max 15)
queryYesWhat the agent is currently working on. Use keywords. Example: 'auth JWT middleware' or 'database migration schema'
traceIdNoOptional trace ID from the outer orchestrator for audit correlation
aggressiveNoOverride aggressive mode for this call. Default: from gnosys.json (true)
projectRootNoRegistered projectRoot searches that project plus user and global memories. An unregistered projectRoot returns an error asking for gnosys_init. Omit projectRoot to search all projects.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantive behavior beyond that: query="*" selects by reinforcement/confidence/recency, limit is capped at 15 and defaults from config, aggressive defaults to true, and registered projectRoots span project+user+global. It does not say what the unregistered-root failure looks like or how memory bodies are trimmed in the block, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and example, then alternatives, then parameter behavior, then scope caveats — a sensible ordering. It is dense and slightly run-on in the final two sentences, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter read tool with full schema coverage and no output schema, the description supplies everything the agent needs: output form, wildcard behavior, caps, defaults, project scope, and the hook-duplication caveat.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 still adds value by documenting the special wildcard value query="*" and its ranking semantics, which the schema does not mention. The limit and aggressive defaults largely restate schema text, so it is additive but not fully independent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb+resource ('Recall relevant memories') and names the exact output shape (a <gnosys-recall> context block for a task) with a concrete example query. It also explicitly distinguishes itself from gnosys_hybrid_search and gnosys_read later, so an agent can route without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names alternatives and the conditions that select them: 'Use gnosys_hybrid_search instead to inspect ranked results or gnosys_read for one complete body.' It also gives explicit projectRoot rules (omit for all projects, run gnosys_init for unregistered roots) and warns that hooks may already inject this context, which is a real when-not-to-call signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gnosys_reflectA

Record an outcome as a new reflection memory, returning its ID, confidence delta, updated memory IDs and confidences, and relationship count. memoryIds defaults to up to five keyword matches on outcome; success defaults to true and confidenceDelta to +0.05 on success or -0.1 on failure, clamping resulting confidence to 0.05..1. Success also reinforces targets and adds validates links; failure adds contradicts links. Use gnosys_reinforce instead for usefulness feedback without creating an outcome memory; each reflection call creates a new record and applies the delta again.

NameRequiredDescriptionDefault
notesNoAdditional notes
outcomeYesWhat happened (the outcome to reflect on)
successNoWas it a success? (default: true)
memoryIdsNoMemory IDs to relate to (default: FTS match on outcome)
projectRootNoProject root path; routes the call to that project's store.
confidenceDeltaNoConfidence change (default +0.05 on success, -0.1 on failure); resulting confidence clamps to 0.05..1

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare non-readonly, non-idempotent, non-destructive, closed-world, but the description adds substantial behavior: default deltas, clamping to 0.05..1, that success reinforces targets and adds validates links while failure adds contradicts links, and the return payload. This is exactly the kind of write-operation semantics the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the return payload then the parameter defaults then the sibling alternative, with no wasted sentences. It is dense and packs several clauses into the middle sentence, but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description enumerates the returned fields (ID, confidence delta, updated memory IDs and confidences, relationship count) and explains side effects on linked memories. Nothing needed to invoke it correctly or interpret its result is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema: memoryIds defaults to 'up to five keyword matches on outcome', and success/confidenceDelta defaults are tied to each other and the clamping rule. Minor overlap with schema text keeps it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Record an outcome as a new reflection memory', and lists what it returns. It explicitly names the sibling gnosys_reinforce as the alternative, so an agent can distinguish the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: 'Use gnosys_reinforce instead for usefulness feedback without creating an outcome memory', and warns that each reflection call creates a new record and reapplies the delta. Both the when-to-use and the when-to-use-something-else conditions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gnosys_reinforceA

Record usefulness feedback for one memory, returning a signal confirmation. useful increments reinforcement and resets decay; not_relevant records a routing miss without changing the memory; outdated marks it for review. Use gnosys_reflect instead to record an outcome memory, link evidence, and adjust confidence; repeated useful calls reinforce again.

NameRequiredDescriptionDefault
signalYesThe reinforcement signal
contextNoWhy this signal was given
memory_idYesThe memory ID (from frontmatter)
projectRootNoProject root path; routes the call to that project's store.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false, destructiveHint=false and idempotentHint=false; the description adds real substance by disclosing the side effect of every signal branch: useful increments reinforcement and resets decay, not_relevant records a routing miss without mutating the memory, and outdated only marks it for review. That both explains the non-idempotency hint and reassures the agent that two of three branches are effectively non-destructive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The effect of the tool is front-loaded in the first clause before the branch semantics and the sibling exclusion, which is the right ordering. The semicolon-chained enumeration of signal effects is dense but every clause carries distinct information; only the trailing repeat-behaviour note could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter tool with full schema coverage and no output schema, the description covers what is needed: what changes per signal, what is returned, and when to choose the sibling. Minor gaps remain around projectRoot routing and whether the signal confirmation has any payload, but nothing blocks a correct call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description earns above that by giving behavioural meaning to the signal enum values rather than restating the field. It adds nothing about context or projectRoot, which is acceptable since the schema already describes both.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first clause names a specific verb and resource ("Record usefulness feedback for one memory") and states the return ("signal confirmation"). It goes further by spelling out the effect of each of the three signal values, so the agent knows exactly what operation it is selecting without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the alternative sibling explicitly ("Use gnosys_reflect instead to record an outcome memory, link evidence, and adjust confidence") and gives the condition that selects it. It also clarifies repeat behaviour ("repeated useful calls reinforce again"), removing the main ambiguity about calling this tool more than once.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gnosys_toolsetA
Idempotent

List the active tool tier and a catalog of higher-tier tools as text, or set core, standard, or full to switch tiers and return added/removed tool names. Starts on core unless configured otherwise; omit set to inspect without switching. Example: {"set":"standard"} enables specialist search and tracing tools for this session.

NameRequiredDescriptionDefault
setNoTarget tier to switch to. Omit to see the current tier and what higher tiers add.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark this as a non-readonly but idempotent, non-destructive mutation, and the description adds the crucial context that switching affects 'this session' and returns added/removed tool names. That session-scoped effect goes beyond the annotations, though the exact return shape of an unchanged inspect is left implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences front-load the capability, then the switching semantics, then a compact example. Nothing is redundant relative to the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-param, no-output-schema tool, the description covers defaults, action vs inspection, session scope, and an example. A little more on what the returned catalog actually contains would close the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the param is already documented. The description reinforces meaning with the omit-to-inspect rule and a worked example ({"set":"standard"}), adding practical clarity beyond the enum description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verbs (list, set) and resources (active tier, higher-tier tool catalog, added/removed tool names), and names the exact enum values. This is clearly distinguishable from the sibling memory/query tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the inspect-vs-switch decision ('omit set to inspect without switching') and the default ('starts on core'), plus a concrete example. Clear context, though it doesn't explicitly name when other tools should be preferred over switching tiers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gnosys_traverseA
Read-onlyIdempotent

Traverse stored memory relationships breadth-first, returning an indented text tree of IDs, titles, confidences, depths, and connecting edges. direction is out, in, or both (default); depth defaults to 3 with range 1..10. relTypes accepts stored relationship strings, including references, supersedes, leads_to, follows_from, requires, validates, contradicts, and corroborates; omission follows all types. Example: {"memoryId":"arch-012","depth":2,"relTypes":["requires"]}. To create relationships from source code, use gnosys_trace instead, which requires gnosys_toolset {"set":"standard"}.

NameRequiredDescriptionDefault
depthNoMax traversal depth (default: 3, max: 10)
memoryIdYesStarting memory ID
relTypesNoStored relationship types to follow (default all), e.g. leads_to, follows_from, requires, validates, contradicts, corroborates, references, supersedes
directionNoEdge direction to follow (default: both)
projectRootNoProject root path; routes the call to that project's store.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and closed-world behavior, and the description adds the traversal algorithm (BFS), output shape, and defaults for direction and depth. It does not discuss performance/pagination on large graphs, but the added behavioral context is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and output shape, then defaults, then the alternative. The example and relationship-type list add length but each earns its place; only minor redundancy with schema-documented defaults.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully describes the return format, and it covers defaults, valid values, and the sibling alternative. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description goes further by spelling out default and range for depth, the enum semantics of direction (out/in/both default), relTypes omission behavior, and a concrete example call. This meaningfully clarifies how the parameters interact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Traverse stored memory relationships breadth-first') and describes the exact output form (indented text tree of IDs, titles, confidences, depths, edges). It also distinguishes itself from the sibling gnosys_trace by scoping that tool to relationship creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes relationship-creation use cases to gnosys_trace, which is a clear when-not/alternative clause. However, it does not distinguish itself from other retrieval siblings like gnosys_recall or gnosys_hybrid_search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gnosys_updateA
Destructive

Update an existing memory by ID or path, returning a confirmation and changed fields. To archive, retire, or "delete" a memory, set status to archived or superseded with superseded_by (the replacement ID, mapped to supersededBy / --superseded-by in the CLI); hard deletion is human-only by design via the CLI. confidence accepts 0..1; content replaces the Markdown body; supersedes adds predecessor links and superseded_by="" unlinks a predecessor. Links reject cycles and require allowCrossScope=true across scopes or projects. Use gnosys_add_structured instead for a new memory.

NameRequiredDescriptionDefault
pathYesMemory id or path
tagsNoNew tags object
titleNoNew title
statusNoNew status; explicit values override automatic supersession status
contentNoNew markdown content (replaces body)
relevanceNoNew relevance keyword cloud
confidenceNoNew confidence
supersedesNoComma-separated predecessor IDs to link to this memory
projectRootNoProject root path; routes the call to that project's store.
superseded_byNoID that supersedes this one
allowCrossScopeNoAllow supersession across scopes or projects (default false)

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the destructive/openWorld/idempotent annotations: it discloses that hard deletion is impossible here by design, that links reject cycles, that cross-scope supersession requires allowCrossScope=true, and that superseded_by="" unlinks a predecessor. These are non-obvious behavioral constraints an agent could not infer from annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action, then packs archive/delete semantics, field semantics, and sibling routing into one dense paragraph. Every clause carries information, though the single-block density makes it slightly harder to scan than a bulleted or sentence-per-topic form.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with no output schema, the description covers the return shape, the destructive-path policy, link/cross-scope constraints, and the create-vs-update boundary. Nothing an agent needs to invoke it safely appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so baseline is 3; the description adds real value for the trickier fields — supersedes creates predecessor links, superseded_by empty string unlinks, allowCrossScope governs cross-scope/project operations, and superseded_by maps to the CLI flag. It does not elaborate on tags/title/relevance beyond the schema's own wording.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an existing memory by ID or path') plus the return shape ('confirmation and changed fields'). It also explicitly distinguishes itself from the sibling gnosys_add_structured for creating new memories, so an agent can pick it apart from alternatives without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing rules: use this tool to archive/retire/'delete' via status=archived or superseded, hard deletion is human-only via the CLI, and use gnosys_add_structured for new memories. When-to-use, when-not-to-use, and the alternative are all named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updates
    • Removedgnosys_add
    • Changedgnosys_add_structured4 fields changed
      • addedInput schema / properties / author / description
        Added value: +"Author: human, ai (default), or human+ai"
      • addedInput schema / properties / authority / description
        Added value: +"Authority: declared, observed (default), imported, or inferred"
      • changedInput schema / properties / category / description
        Previous value: -"Category name"New value: +"Open category name, e.g. decisions, architecture, requirements, concepts, roadmap, landscape, open-questions, or how"
      • addedInput schema / properties / confidence / description
        Added value: +"Confidence from 0 to 1 (omitted or zero uses 0.8), e.g. 0.9 for verified evidence"
    • Removedgnosys_discover
    • Removedgnosys_federated_search
    • Changedgnosys_reflect1 field changed
      • changedInput schema / properties / confidenceDelta / description
        Previous value: -"Custom confidence delta (e.g. 0.1 or -0.2)"New value: +"Confidence change (default +0.05 on success, -0.1 on failure); resulting confidence clamps to 0.05..1"
    • Removedgnosys_search
    • Removedgnosys_trace
    • Changedgnosys_traverse1 field changed
      • changedInput schema / properties / relTypes / description
        Previous value: -"Relationship types to follow, e.g. ['leads_to','requires']"New value: +"Stored relationship types to follow (default all), e.g. leads_to, follows_from, requires, validates, contradicts, corroborates, references, supersedes"
  2. 19 tool updatesv7.0.0
    • First observedgnosys_add
    • First observedgnosys_add_structured
    • First observedgnosys_briefing
    • First observedgnosys_dashboard
    • First observedgnosys_discover
    • First observedgnosys_federated_search
    • First observedgnosys_hybrid_search
    • First observedgnosys_init
    • First observedgnosys_preference_get
    • First observedgnosys_preference_set
    • First observedgnosys_read
    • First observedgnosys_recall
    • First observedgnosys_reflect
    • First observedgnosys_reinforce
    • First observedgnosys_search
    • First observedgnosys_toolset
    • First observedgnosys_trace
    • First observedgnosys_traverse
    • First observedgnosys_update

TDQS

A4.3/5.0

Scored across 14 tools

Disambiguation4/5

Most tools have clearly distinct purposes, and descriptions explicitly cross-reference alternatives (read vs hybrid_search vs recall; reinforce vs reflect; dashboard vs briefing; update vs add_structured). The memory-retrieval trio (read/recall/hybrid_search) and the feedback pair (reinforce/reflect) overlap somewhat, but the guidance is strong enough that an agent can select confidently.

Naming Consistency4/5

All tools share the gnosys_ prefix and use snake_case verb_noun patterns (read, add_structured, update, hybrid_search, preference_set/get, traverse). Minor deviations like gnosys_init and gnosys_toolset are noun-style rather than verb_noun, but overall very predictable.

Tool Count5/5

14 tools is well within the ideal range, each mapping to a distinct memory-system operation (read/write/search/feedback/admin/preferences). The tiering mechanism gates advanced tools without bloating the default surface.

Completeness4/5

The surface covers the full memory lifecycle: create (add_structured), read, update/archive, search (hybrid_search/recall/traverse), feedback (reinforce/reflect), project setup (init/briefing/dashboard), and preferences. Hard deletion is intentionally human-only via CLI, a deliberate rather than accidental gap.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    With Memori's MCP server, your agent can retrieve relevant memories before answering and store durable facts after responding, keeping context across sessions without any SDK integration. With MCP, it can: Store stable user facts and preferences after answering using the advanced_augmentation tool Recall relevant memories before answering using the recall tool Maintain context across sessions us
    2
    21 npm
    2
    MIT