Skip to main content
Glama

Coherra

An AI agent's memory gets messy. Coherra keeps it clean.

After months of use, any long-running agent accumulates contradictions (the same fact stored twice with different values), duplicates (the same value under different key names), and stale entries (facts that were true six months ago but almost certainly aren't now). Coherra audits the entire memory on demand, scores its health, surfaces every issue with a clear explanation, and repairs them — logging every single action permanently inside Sibyl Memory itself. No external database. No separate service. Everything lives inside Sibyl.


Architecture

┌─────────────────────────────────────────────────────────┐
│                        Agent / IDE                       │
│           (Claude Code, Codex CLI, Cursor, …)            │
└───────────────────────┬─────────────────────────────────┘
                        │ MCP (stdio)
          ┌─────────────▼──────────────┐
          │       Coherra MCP Server    │
          │  coherra_remember           │  ← structured writes
          │  coherra_recall             │  ← single entity read
          │  coherra_list               │  ← browse memory
          │  coherra_audit              │  ← run full scan
          │  coherra_repair             │  ← fix one issue
          │  coherra_repair_safe        │  ← batch safe fixes
          └─────────────┬──────────────┘
                        │ sibyl-memory-client SDK
          ┌─────────────▼──────────────┐
          │       Sibyl Memory          │
          │  WARM tier  — entities      │  ← facts, preferences, people
          │  HOT  tier  — state         │  ← coherra:last_audit, coherra:config
          │  COLD tier  — journal       │  ← coherra_scan, coherra_repair events
          └─────────────────────────────┘
                   ~/.sibyl-memory/memory.db

Coherra sits between the agent and Sibyl Memory. It adds a schema layer (versioned, confidence-tagged bodies), an audit engine (three detectors: contradiction, duplicate, staleness), and a repair engine that logs every action to Sibyl's own append-only journal — so the audit trail is itself part of the memory being managed.


Related MCP server: Cortex

Quickstart

# 1. Clone and install
git clone <repo>
cd coherra
pip install -e .

# 2. Make sure Sibyl Memory is initialised
#    (run once if you haven't already)
sibyl init

# 3. Load the demo dataset
python -m coherra.seed --demo

# 4. Run your first audit
coherra scan

# 5. Browse the issues
coherra issues

# 6. Fix safe issues automatically
coherra fix --all

# 7. Resolve contradictions interactively
coherra fix <issue-id>

# 8. Confirm clean memory
coherra scan

CLI reference

Command

What it does

coherra scan

Run a full audit — contradiction, duplicate, staleness checks

coherra health

One-line summary of the last scan result

coherra issues [--severity <s>]

List every flagged issue, grouped by severity

coherra fix <id> [action]

Fix one issue; contradictions get an interactive prompt

coherra fix --all

Auto-apply all safe repairs (duplicates + stale)


MCP server

Add to your .mcp.json or Claude Code settings:

{
  "mcpServers": {
    "coherra": { "command": "coherra-mcp" }
  }
}

Tools exposed: coherra_remember, coherra_recall, coherra_list, coherra_audit, coherra_repair, coherra_repair_safe.


The pitch

Most memory systems only answer the question "what do I know?" Coherra answers "what do I know that's wrong?" — and fixes it, permanently, with a complete audit trail stored inside the same memory it's cleaning.

Built for the Sibyl Labs Memory Hackathon · August 2026. Requires: sibyl-memory-client >= 0.5.0, mcp >= 1.0.0.

Available Tools

7 tools
coherra_auditA

Run a full Coherra memory audit and return the results.

Scans all entities in Sibyl Memory for three classes of drift:

  • contradiction two names that likely refer to the same fact but carry different values

  • duplicate two entities in the same category with nearly identical values

  • stale an entity whose body.updated_at exceeds the per-category threshold from coherra:config

Side-effects:

  • Seeds coherra:config with default thresholds if absent

  • Writes results to coherra:last_audit (memory_set_state)

  • Appends a coherra_scan journal event (memory_record_event)

Returns: { "ok": True, "timestamp": "", "health_score": 0-100, "entity_count": N, "issue_count": N, "issues_found": [ {severity, category, name, detail, ...} ] }

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and fully meets it: it lists all side-effects (seeding coherra:config, writing to coherra:last_audit, appending a journal event) and defines each drift class precisely. It also discloses the return shape, so an agent knows exactly what will change and what will come back.

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?

The description is front-loaded with a one-sentence summary, then uses tight bullets for drift classes, side-effects, and return fields. Every line earns its place and the structure makes the long content scannable for an agent.

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 zero-parameter tool with no annotations, the description is complete: it explains what is scanned, what counts as an issue, what side-effects occur, and what the response contains. Nothing needed to invoke the tool correctly 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?

The tool has zero parameters and schema coverage is 100%, so there is no parameter ambiguity to resolve. Per the 0-parameter baseline, this dimension is satisfied without needing extra explanation.

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 states a specific action ('Run a full Coherra memory audit') and names the exact resource (Sibyl Memory) with three concrete drift categories. This makes the tool clearly distinct from siblings like coherra_repair, coherra_recall, and coherra_list.

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?

The description establishes clear context: this is the diagnostic tool for detecting contradiction, duplicate, and stale entries across all entities. It does not explicitly name when-not-to-use or point to coherra_repair, but the audit-vs-repair distinction is strongly implied.

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

coherra_listA

List entities managed by Coherra, optionally filtered by category.

Returns entities most-recently-updated first. Each result includes the structured Coherra body so the caller can inspect value, confidence, source, and timestamps without a separate recall call.

Args: category: Optional category filter. Omit to list all categories. limit: Maximum entities to return (default 50, max 200).

Returns: {"ok": True, "category": ..., "count": N, "results": [...]}

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
categoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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 states ordering (most-recently-updated first), the contents of each result (structured body with value, confidence, source, timestamps), the default and maximum limit, and the exact return shape. This goes well beyond a basic 'list' claim and gives the agent realistic expectations for the operation.

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?

The description is well-structured and efficient: a one-line purpose, a sentence on ordering and result richness, then compact Args and Returns sections. Every sentence adds relevant information, and the structure is easy to scan. There is no filler or repeated schema data.

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 two-optional-parameter list tool, the description covers purpose, filtering behavior, ordering, result contents, defaults, limits, and return format. The agent has everything needed to select and invoke this tool correctly, including how its results avoid the need for a separate recall call. No critical operational detail is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate for the schema's lack of property descriptions. The Args section fully documents both parameters: category is optional and omittable, limit has a default of 50 and max of 200. The return section also describes the output keys, making parameter and result semantics complete despite the sparse schema.

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 opens with a specific verb and resource: 'List entities managed by Coherra', immediately distinguishing it from the sibling tools (remember, recall, audit, repair, onboard). The optional category filter and the explicit mention that results are ordered most-recently-updated-first add precise scope. This is a clear, non-tautological statement of purpose.

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

Usage Guidelines3/5

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

The comment 'without a separate recall call' implicitly tells the agent that this tool can replace coherra_recall for inspecting full entity bodies, giving some usage context. However, there is no explicit when-to-use or when-not-to-use guidance against the other sibling tools, and no exclusion of cases like needing a single entity vs. a list. The guidance is implied rather than stated.

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

coherra_onboardA

Import JSON data from another tool into Coherra.

Runs the full onboarding pipeline:

  1. Parse the JSON into individual records

  2. Categorize each record (category, name, confidence)

  3. Write to Sibyl Memory using the Coherra schema

  4. Audit for contradictions, duplicates, staleness

  5. Auto-repair safe issues (duplicates + stale)

  6. Flag contradictions for manual review

Args: import_data: A dict or list representing the JSON export. Accepts flat dicts, nested dicts, lists of dicts (with key/value fields), or lists of strings.

Returns: { "ok": True, "imported": N, # records written "auto_cleaned": X, # safe issues fixed "flagged_for_review": Y, # contradictions needing manual fix }

ParametersJSON Schema
NameRequiredDescriptionDefault
import_dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It covers side effects well: writes to Sibyl Memory, auto-repairs duplicates and stale entries, and flags contradictions for manual review. It does not mention reversibility or permission requirements, but the pipeline description is substantially transparent.

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?

The description is well-structured with an opening summary, a numbered pipeline, an Args section, and a Returns example. It is detailed without being redundant and front-loads the core purpose. The format makes the behavior easy to parse for an agent.

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?

Given the tool's complexity, the lack of annotations, and the minimal input schema, the description covers the essential aspects: accepted inputs, processing steps, and the return contract. It could be more complete with error behavior or a concrete example, but it is sufficiently informative for correct invocation.

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 0%, so the description must compensate for the schema's minimal 'import_data: object' definition. It does so by enumerating accepted forms: flat dicts, nested dicts, lists of dicts, and lists of strings. It adds real semantic meaning beyond the schema, though it stops short of providing an explicit example.

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 opens with a specific verb and resource: 'Import JSON data from another tool into Coherra.' It then names a concrete pipeline with six steps, making its role distinct from sibling tools like audit, repair, or remember. This is a clear, differentiated purpose.

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?

The description clearly implies when to use the tool: when bringing JSON exports from another tool into Coherra, and the pipeline steps show it is the onboarding entry point. It does not explicitly state when not to use it or name alternatives, but the context is unambiguous.

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

coherra_recallA

Fetch a single Coherra entity by (category, name).

Returns the full entity including the structured Coherra body (value, confidence, source, created_at, updated_at, version). Raises a NOT_FOUND error if the entity does not exist.

Args: category: The category the entity was stored under. name: The unique-within-category key.

Returns: {"ok": True, "category": ..., "name": ..., "body": {...}}

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
categoryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden, and it delivers: it discloses the complete return payload (value, confidence, source, created_at, updated_at, version), the exact return envelope, and the NOT_FOUND error condition. The read-only nature is implied by 'Fetch' rather than stated outright, and no auth or side-effect information is given, but for a simple recall tool the disclosed error and return behavior is substantive and above average.

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 description is well-structured with clear sections (purpose, return body, error case, args, returns) and front-loads the core purpose. The Returns JSON block is slightly redundant given an output schema exists, and the return body is described twice, but the overall length is justified and no sentence is wasteful.

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 simple 2-parameter fetch tool, this is nearly complete: purpose, parameter semantics, return shape, and error behavior are all covered. Minor gaps exist — it doesn't state the dependency on coherra_remember (entities must be stored before recall succeeds) or explicitly confirm the operation is non-mutating — but nothing critical is missing for correct invocation.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate, and it does. 'category: The category the entity was stored under' and 'name: The unique-within-category key' add real relational semantics — the agent learns that uniqueness is scoped within category, which is essential for correct use and is not derivable from the bare schema.

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 opens with a specific verb+resource statement: 'Fetch a single Coherra entity by (category, name).' The word 'single' plus the exact lookup key clearly differentiates it from siblings like coherra_list (listing) and coherra_remember (storing). An agent can tell this is the point-read tool without opening any sibling schema.

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

Usage Guidelines3/5

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

The usage context is implied by the phrasing — fetch one known entity by exact key — and the NOT_FOUND error behavior tells the agent what happens when the key is absent. However, the description never explicitly names alternatives (e.g., 'use coherra_list to browse entities' or 'use coherra_remember to store first'), so the when-to-use vs. when-not-to-use guidance is left to inference rather than stated.

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

coherra_rememberA

Store a structured fact in Sibyl Memory using Coherra's schema.

Wraps memory_remember with a versioned body shape so all Coherra entities are uniform and auditable.

Args: category: Logical grouping, e.g. "people", "projects", "prefs". name: Unique-within-category key, e.g. "alice", "acme-deal". value: The fact to store — any JSON-serialisable value. confidence: Optional float 0.0–1.0 expressing certainty. source: Optional provenance tag: "conversation", "tool", "inference", etc.

Returns: {"ok": True, "category": ..., "name": ...} on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
valueYes
sourceNo
categoryYes
confidenceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden by itself. It does add some transparency: it states that the tool wraps memory_remember, enforces a versioned body shape for uniformity/auditability, and returns a success dict. However, it does not disclose what happens on duplicate category/name (overwrite vs error), effect on existing memory, or any permission/rate-limit constraints.

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?

The description is front-loaded with the core purpose, followed by a compact one-line implementation note, a structured Args list, and a Returns line. Every section carries information; there is no filler.

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?

The five parameters are fully explained, and the return shape is stated. The main gap is lack of guidance on duplicates or failure modes, which could matter for a memory-write tool. However, the presence of an output schema softens the return-value burden, and the description is largely sufficient for successful invocation.

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

Parameters5/5

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

Schema description coverage is 0%, so the description's Args section fully compensates. It gives logical grouping examples, unique-within-category semantics for name, JSON-serializable requirement for value, a 0.0–1.0 range for confidence, and provenance examples for source. This goes beyond the raw schema types.

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 opens with a specific verb-resource pair: 'Store a structured fact in Sibyl Memory using Coherra's schema.' This clearly distinguishes the write operation from retrieval siblings like coherra_recall and coherra_list, and the mention of a versioned body shape adds precision.

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

Usage Guidelines3/5

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

The description implies the tool is for persisting facts but never explicitly states when to choose it over siblings or when not to use it. There is no exclusionary guidance (e.g., 'use coherra_recall to read'), so the agent must infer usage from the verb 'Store' and the sibling names.

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

coherra_repairA

Apply one repair to a flagged issue from the last audit.

Actions by severity: stale: "archive" — forget the entity "refresh" — bump updated_at to now (fact still true) duplicate: "merge" — keep higher-confidence entry, archive the other contradiction: "keep_a" — keep primary (category/name), archive related "keep_b" — keep related_entity, archive primary "merge_manual" — archive both, write new canonical entity at primary address using supplied value

Args: issue_id: 10-char hex id from coherra_audit issues_found list. action: Repair action string (see above). value: Required only for contradiction/merge_manual — the correct canonical value to write.

Returns: {ok, issue_id, severity, action_taken, archived, written}

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNo
actionYes
issue_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of disclosing side effects. It does so clearly: each action states whether it archives, refreshes, or writes a new canonical entity, and phrases like 'forget the entity' convey destructiveness. It also documents the return tuple. Minor gaps remain around irreversibility and permissions, but the essential 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.

Conciseness4/5

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

The description is well-structured with clear sections (Actions by severity, Args, Returns) and front-loads the purpose sentence. The action list is necessary detail rather than filler. It is somewhat long, but every section 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?

For a three-parameter mutation tool, the description covers input provenance, action semantics, conditional value requirements, and return shape. The primary gap is the lack of guidance for choosing this tool over coherra_repair_safe, but an agent has enough detail to invoke it correctly for a given audit issue.

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

Parameters5/5

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

The schema is effectively bare (0% description coverage), so the description compensates completely: issue_id is detailed as a 10-char hex id from the audit list, action is mapped to severity-specific allowed values, and value is conditionally required for contradiction/merge_manual. This is exemplary beyond-schema parameter documentation.

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

Purpose4/5

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

The description opens with a specific verb and resource: 'Apply one repair to a flagged issue from the last audit.' This clearly identifies the tool's function and distinguishes it from the read/list/audit siblings. It does not explicitly differentiate from the sibling coherra_repair_safe, but the core purpose is unambiguous.

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

Usage Guidelines3/5

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

Usage is implied rather than explicit: it specifies that issue_id comes from the coherra_audit issues_found list and enumerates allowed actions by severity. However, it does not state when to use coherra_repair over coherra_repair_safe, nor give any exclusions or alternative conditions.

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

coherra_repair_safeA

Batch-apply all safe repairs from the last audit.

Auto-applies:

  • stale → archive (entity is old, remove it)

  • duplicate → merge (keep higher-confidence copy, archive the other)

Contradictions are NEVER auto-resolved — they require explicit human choice via coherra_repair with keep_a / keep_b / merge_manual.

Returns: {ok, fixed_count, skipped_contradictions, results: [...]}

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral disclosure burden. It explains exactly what gets auto-applied (stale → archive, duplicate → merge), explicitly warns that contradictions are never auto-resolved, and provides the return shape. The tool's mutating 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.

Conciseness5/5

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

The description is compact and well-structured, with a front-loaded summary sentence, bulleted behavior details, an explicit exclusion, and a return format. Every sentence adds value with no redundancy.

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 zero-parameter tool, this is complete: it names the source of repairs, defines what counts as safe, identifies the boundary case, and documents the return value. Since an output schema exists, the description does not need to further detail result fields.

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?

The tool has zero parameters, so the baseline is 4. There is no parameter information to add, and the description appropriately focuses on the implicit state input ('the last audit') rather than parameters.

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 uses a specific verb-resource pairing: 'Batch-apply all safe repairs from the last audit.' It clearly distinguishes this tool from coherra_repair by stating that contradictions are never auto-resolved and require the manual repair tool.

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?

The description explicitly states what this tool handles (safe repairs: stale and duplicate) and what it does not handle (contradictions), directing the agent to coherra_repair with keep_a / keep_b / merge_manual for those cases. This gives clear when-to-use and when-not-to-use guidance.

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. Dates show when Glama detected each change.

  1. 7 tool updatesv0.1.0
    • First observedcoherra_audit
    • First observedcoherra_list
    • First observedcoherra_onboard
    • First observedcoherra_recall
    • First observedcoherra_remember
    • First observedcoherra_repair
    • First observedcoherra_repair_safe

TDQS

A4.1/5.0
Disambiguation4/5

Each tool targets a distinct operation: remember, recall, list, audit, repair, batch repair, and import. The only possible confusion is between coherra_repair and coherra_repair_safe, but their descriptions clearly separate single-issue repair from batch auto-repair.

Naming Consistency4/5

All tools share the coherra_ prefix and use snake_case with a verb-oriented style. The naming is mostly consistent, though coherra_repair_safe and coherra_onboard are slightly less parallel than simple verb_noun forms.

Tool Count5/5

Seven tools is a well-scoped count for a memory management server. Each tool serves a clear purpose, covering storage, retrieval, listing, auditing, repair, batch repair, and importing without unnecessary bloat.

Completeness3/5

The set covers create, read, list, audit, repair, and import workflows, but there is no direct update or delete tool. Agents must work around this by using remember to overwrite or repair actions to archive, which is a notable gap in standard CRUD coverage.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides transparent, self-pruning memory for AI agents via MCP, enabling persistent, auditable recall that automatically forgets unimportant details.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to audit and clean their memory files by scanning for duplicates, broken links, stale facts, and conflicts, with non-destructive, reversible fixes and a full audit trail. It also lets the calling agent serve as the conflict judge through MCP tools.
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to record, recall, correct, and forget evidence-backed factual claims with temporal history, while explaining whether remembered information is current, historical, or contested.
    5
    Apache 2.0

Latest Blog Posts

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/Steve2009729/coherra'

If you have feedback or need assistance with the MCP directory API, please join our Discord server