Skip to main content
Glama

🐠 Goldfish

Unified memory for AI coding agents. One MCP server, three tiers, no more guessing which tool remembers what:

                    ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
   your agent  ───► │   goldfish (MCP)     │
                    ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
                               │
        ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¼ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
        ā–¼                      ā–¼                           ā–¼
ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”     ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”     ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│  brain         │     │  claude-mem         │     │  memory_notes      │
│  full history  │     │  session context    │     │  curated facts     │
│  cited search  │     │  auto-compressed    │     │  hand-written      │
│  (vendored)    │     │  (vendored)         │     │  (new)             │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜     ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜     ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜

Three different jobs, three different tools, one thing you actually call:

Tier

Tool

What it answers

Backing store

Transcript history

goldfish_search

"did we ever discuss X" — cited, never hallucinated

brain-mcp's DuckDB + append-only JSONL lake

Session context

goldfish_context

"what was I just doing" — recent auto-generated summaries

claude-mem's SQLite store (read-only)

Curated notes

goldfish_remember / goldfish_recall

"what do we know about this user/project" — small, hand-picked, durable

plain frontmatter markdown, this repo

Everything

goldfish_status

is each tier actually installed and healthy

aggregates all three

Goldfish doesn't replace brain-mcp or claude-mem — it vendors them as-is and gives you one server to point an agent at instead of three. See ATTRIBUTION.md for full upstream credit and licenses.

Noticing patterns (optional, and deliberately hands-off)

Goldfish can also help notice your own recurring patterns over time — frustrations, habits, stated drives, things you keep saying you should do more or less of. The goal is that file is worth reading yourself: given enough real sessions, it should eventually surface something about your own patterns you hadn't consciously put together before. An agent using goldfish can also draw on it, when it's genuinely relevant, to let that shape how it talks to you — but you reading it directly is just as much the point as any AI doing so. This isn't a hidden feature; here's exactly how it works and where the line is:

  • goldfish_reflect pulls raw, cited excerpts of things you've said (role="user" only — never the agent's own words) across your full history. It runs a small default battery of angles (frustration, habit, drive, goal language), or one specific focus you give it.

  • It never concludes anything itself — no keyword-matched "you seem stressed" heuristics. Turning evidence into an actual observation is left to whichever LLM is using the tool, because that's the only part of this that requires real judgment.

  • If a pattern holds up across real evidence, the agent can write it with goldfish_remember(type="insight", ...) — a note type distinct from plain user facts specifically because insights are interpretive and should be revisited over time, not treated as settled truth.

  • Every insight note also gets folded into PERSONA.md, one evolving, plain-English document that accumulates everything noticed this way. goldfish_persona reads it back in one call for an agent — but it's just a markdown file at ~/.goldfish/memory/PERSONA.md, so open it yourself whenever you want (uv run goldfish persona prints it straight to your terminal). That's exactly why it's held to a higher bar than a plain fact: tentative, cited, and meant to be pruned as it ages, never treated as a verdict — it has to be worth you reading, not just an agent.

  • Whether and when to draw on any of this — goldfish_reflect, goldfish_persona, or an insight note — is left entirely to the calling agent's judgment. The server's own instructions say so explicitly: rare, well-placed, tied to real evidence, never a running commentary on who you are. Nothing here is forced into every response.

  • Everything stays local. PERSONA.md and every insight note live in the same memory_notes store as everything else (~/.goldfish/memory by default) — never inside this repo, never committed, never sent anywhere. goldfish_reflect only ever runs when an agent decides to call it; there's no background job scanning your history for this.

Don't want this at all? Just don't use goldfish_reflect, goldfish_persona, or type="insight" — everything else works exactly the same without it.

Related MCP server: bikky

Install

Paste this repo's link to Claude Code and say "use this" — it'll run the installer itself. Or run it yourself:

curl -fsSL https://raw.githubusercontent.com/Vibes-lj/goldfish/master/install.sh | bash

That one command clones goldfish, syncs its Python env, turns on brain-mcp's transcript-capture hooks for Claude Code, and registers goldfish as an MCP server via claude mcp add — restart Claude Code (or run /mcp) afterward and the five tools below are live. Re-running it is safe (idempotent).

Prefer to wire it up by hand instead? See manual setup below.

claude-mem's own hooks/worker aren't installed by the script — that's a separate project with its own setup. goldfish_context just reads its database read-only if you've already installed it yourself; see packages/claude-mem/README.md.

Manual setup

git clone https://github.com/Vibes-lj/goldfish.git
cd goldfish
uv sync
uv run --directory packages/brain brain-mcp install cc   # optional: transcript capture hooks
claude mcp add goldfish -s user -- uv run --directory "$(pwd)" goldfish serve

Or hand-edit your MCP config (e.g. ~/.claude.json or a project .mcp.json):

{
  "mcpServers": {
    "goldfish": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/goldfish", "goldfish", "serve"]
    }
  }
}

CLI

uv run goldfish status                                    # health across all 3 tiers
uv run goldfish remember my-note "one-liner" --type project --content "..."
uv run goldfish recall --query "my-note"
uv run goldfish reflect --focus "decisions I keep reversing"   # raw cited evidence, no synthesis
uv run goldfish persona                                        # print the accumulated PERSONA.md

Repo layout

goldfish/
ā”œā”€ā”€ goldfish/          # the unifying MCP server + CLI (new)
ā”œā”€ā”€ memory_notes/       # curated-note store: frontmatter .md + index (new)
ā”œā”€ā”€ packages/
│   ā”œā”€ā”€ brain/          # vendored from mordechaipotash/brain-mcp (MIT)
│   └── claude-mem/      # vendored from thedotmack/claude-mem (Apache-2.0)
ā”œā”€ā”€ ATTRIBUTION.md
└── LICENSE              # MIT, covers goldfish/ + memory_notes/ only

Roadmap

Rough priority order, none of this started yet unless marked:

  • One-command install (install.sh — clone, sync, hooks, claude mcp add)

  • install.sh also registers goldfish for Codex (~/.codex/config.toml), not just Claude Code

  • goldfish uninstall — clean removal mirroring brain-mcp uninstall (hooks, scheduler, MCP registration)

  • Package goldfish as an installable Claude Code plugin (marketplace .mcp.json + hooks.json) instead of raw MCP config editing

  • Optional claude-mem auto-install path in install.sh, for people who want goldfish_context populated out of the box

  • goldfish_remember commits memory_notes/ to a local git repo automatically, so curated notes get real version history

  • Semantic (embedding) search over curated notes and recent context, not just brain's BM25 over raw transcript

  • Surface brain's other capture lanes (Cursor, ChatGPT, Pi) through goldfish_status more prominently — the data's already there, just under-exposed

  • A small local dashboard to browse all three tiers side by side, for people who don't want to think in tool calls

  • goldfish_reflect + type="insight" — cited evidence of the user's own recurring language, synthesized only by the calling agent, surfaced rarely and only in-context

  • Let goldfish_reflect run on an opt-in schedule instead of only when an agent calls it (still local-only, still no auto-surfacing)

  • Auto-expire or flag stale insight notes so pattern-observations don't calcify into permanent "truth"

Have an idea or a use case this doesn't cover? Open an issue.

Why

Most setups end up with two or three memory tools installed for different reasons (a transcript recorder, a session-compression plugin, some markdown notes) and no single place to ask "what do we know." Goldfish is that single place — a thin, honest layer on top of tools that already do the hard parts well.

Available Tools

7 tools
goldfish_contextRecent session-compression summariesC
Read-only

Recent session-compression summaries from claude-mem, if installed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes this is a safe read. The description adds one genuinely useful behavioral fact beyond the annotations: the data source (claude-mem) and the conditional 'if installed', implying the tool may yield nothing on an unconfigured system. It stops short of describing ordering, freshness windows, or what an empty result means.

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?

A single short sentence with the source and the conditional caveat front-loaded; nothing is padded. It is efficient, though the brevity contributes to the gaps in purpose and parameter coverage rather than being a virtue in itself.

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

Completeness3/5

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

With an output schema present, return values need not be explained, so the main omissions are usage routing and parameter meaning. For a one-optional-parameter read tool this is minimally viable, but an agent still cannot tell how this differs from goldfish_recall.

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

Parameters2/5

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

Schema description coverage is 0% for the single 'limit' parameter, so the description carries the full burden and provides nothing. It never states that 'limit' bounds the number of summaries returned or what the default of 5 means in practice; 'recent' is the only sizing hint and it is vague.

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

Purpose3/5

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

The phrase names the resource (session-compression summaries from claude-mem) but supplies no verb, leaving it ambiguous whether it lists, fetches, or filters them. It also does not distinguish itself from siblings like goldfish_recall or goldfish_search, which plausibly return similar memory content.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no exclusions, and never names an alternative among the six siblings. The 'if installed' clause hints at a precondition but does not say when an agent should prefer this over goldfish_recall or goldfish_search.

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

goldfish_personaPersona evaluation — everything learned about the user so farA
Read-only

The cumulative persona file: every insight note, aggregated into one document.

Entirely optional and at your own discretion — nothing requires you to call this or to use what it returns. It exists so a capable agent can occasionally draw on real, evidence-linked patterns about the user built up over goldfish_reflect calls over time — to shape tone, or catch something worth mentioning — the way a good long-term collaborator would.

Every entry traces back to cited evidence (see goldfish_reflect); nothing here is a diagnosis, and entries are meant to be revisited as they age, not treated as permanent truth. Use judgment about whether and when surfacing something from this file actually helps the user in the moment — this is not a mandate to comment on who they are.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: entries are evidence-linked, explicitly 'not a diagnosis,' and meant to be revisited as they age — framing the reliability and intent of the data the agent receives.

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?

Purpose is front-loaded in the opening sentence. A few sentences restate the discretionary nature of the call ('entirely optional,' 'at your own discretion,' 'nothing requires you to call this,' 'not a mandate'), which is mild redundancy, but the overall length is warranted for a tool whose entire value proposition is tonal/behavioral.

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 an output schema present, return values need no explanation, and with zero parameters there is no input surface to fill. The description supplies purpose, provenance, usage judgment, and behavioral framing — everything an agent needs to decide whether and how to call it.

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 takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies.

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 sentence states a specific resource — a cumulative persona file aggregating insight notes into one document — and explicitly ties it to goldfish_reflect as the source of the underlying entries. An agent can distinguish this retrieval tool from goldfish_reflect (which generates the insights) 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 Guidelines4/5

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

It states the call is 'entirely optional' and offers concrete conditions for use (shape tone, catch a pattern worth mentioning), plus the caveat not to treat surfaces as a mandate. It lacks an explicit when-NOT-to-use or a direct comparison to siblings like goldfish_recall or goldfish_context, so it stops short of full routing guidance.

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

goldfish_recallRead or search curated memory notesB
Read-only

Read a curated memory note by name, or search/list curated notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
typeNo
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes this is a safe read. The description adds essentially nothing beyond that — no note on result limits, ordering, or what happens on a name miss. With annotations carrying the safety profile, this is adequate but thin.

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?

A single front-loaded sentence with no filler. It is arguably too terse for the ambiguity it needs to resolve, but nothing in it is wasted.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the read-only annotation covers safety. Still, with 0% parameter description coverage and an unresolved overlap with goldfish_search, the definition leaves real gaps for an agent.

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

Parameters2/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 explain the three parameters. It hints at 'name' and loosely at 'query' ('search/list'), but 'type' is never mentioned anywhere, leaving one of three parameters with zero semantics.

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?

States specific verbs (read, search, list) and a specific resource (curated memory notes), so the general purpose is clear. However, it does not differentiate itself from the sibling goldfish_search, and by using the word 'search' it actively blurs the boundary with that sibling.

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?

It implies two modes — lookup 'by name' vs 'search/list' — which gives some usage signal. But it never says when to prefer this tool over goldfish_search or goldfish_context, leaving a genuine ambiguity for an agent choosing among siblings.

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

goldfish_reflectGather raw cited evidence of the user's own recurring languageA
Read-only

Evidence for behavioral/preference patterns — never this tool's own conclusion.

Searches role='user' only (their words, not the agent's) across full transcript history via brain. Pass focus for one specific angle (e.g. "decisions I keep reversing"); omit it to run a default battery covering frustration, habit, drive, and goal language.

This tool does not diagnose, summarize, or conclude anything about the user — it hands back excerpts with citations, same as goldfish_search. Turning that into an actual observation — and judging whether it's even worth keeping — is the calling agent's job. If a real pattern shows up across multiple citations, write it with goldfish_remember(type="insight", ...), phrased as tentative pattern-noticing anchored to the evidence, never as a firm psychological claim. Mention it in conversation rarely, only when it's genuinely useful in the moment — this is not a running personality commentary.

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNo
limit_per_queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only grant readOnlyHint=true; the description adds substantial context beyond that — restricting to role='user' words, spanning full history via brain, and explicitly disclaiming that it does not diagnose, summarize, or conclude. This is exactly the 'what it does not do' information annotations cannot carry.

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 the core scope and the non-conclusion disclaimer, then usage guidance. Slightly long and the downstream workflow caveat borders on instruction creep, but every sentence carries actionable content.

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?

An output schema exists, so return-value explanation is unnecessary. Given the read-only annotations, the description covers scope, the focus/omit behavior, and the intended follow-up workflow, leaving no material gap 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. It fully explains `focus` (a single angle vs. default battery of frustration/habit/drive/goal), but does not describe `limit_per_query`, leaving one of two parameters undocumented. Strong partial compensation.

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 — searches the user's own role='user' language across full transcript history to return cited evidence. It explicitly positions itself against siblings by noting it behaves 'same as goldfish_search' in returning excerpts, while previewing the downstream goldfish_remember step.

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 when-to-use (behavioral/preference pattern evidence), when to pass `focus` (one specific angle) vs. omit it (default battery), and even prescribes downstream handling: write with goldfish_remember as tentative pattern-noticing and mention rarely. Nothing 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.

goldfish_rememberWrite a curated, durable memory noteA

Write a curated, durable memory note (user/feedback/project/reference/insight).

Use this for facts worth carrying into future sessions — not for raw transcript (that's captured automatically by brain) or session summaries (that's claude-mem's job) — only hand-picked, still-true facts.

type="insight" is for tentative, evidence-linked pattern observations about the user (see goldfish_reflect) — distinct from type="user" (settled facts) because insights are interpretive and should be revisited/pruned over time, not treated as permanent truth.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
contentYes
descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations, so the description carries the full burden; it does disclose the durability/lifecycle semantics (insights are tentative and should be revisited/pruned, unlike settled user facts) and points to goldfish_reflect for provenance. It does not cover write behavior such as deduplication/overwrite or permission prerequisites, leaving a gap for a mutation tool.

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 the core action and the type enumeration, then layered guidance. Dense and purposeful, though the final paragraph on insight/user distinction is somewhat verbose relative to the value it adds.

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?

Output schema exists so return values need no explanation, and the description handles routing and the trickiest parameter value (`type`) well. The remaining gap is the absence of any semantics for the other three required parameters on a write tool.

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 0% with four required params, so the description must compensate. It supplies the meaningful value set for `type` and explains the insight-vs-user distinction, but says nothing about `name`, `content`, or `description`, which remain undocumented in both description and 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?

States a specific verb+resource ('Write a curated, durable memory note') and immediately names the categorization scheme (user/feedback/project/reference/insight). It also positions the tool against non-siblings (brain for raw transcript, claude-mem for summaries), so an agent can distinguish it from surrounding memory tools.

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 ('facts worth carrying into future sessions') and when-not-to-use with named alternatives ('not raw transcript — brain', 'not session summaries — claude-mem'), plus a quality bar ('hand-picked, still-true facts'). This is textbook routing guidance.

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

goldfish_statusHealth across all three memory tiersB
Read-only

Health summary across all three memory tiers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe, non-mutating read, so the safety profile is covered. The description adds only the scope fact (three tiers) and says nothing about cost, freshness, or whether the check probes live backends versus returning cached health.

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?

A single front-loaded sentence with no filler – appropriately sized for a trivial no-argument status call, though it is essentially a noun phrase rather than a sentence with an action verb.

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?

An output schema exists, so return-value detail belongs there, and with no parameters the only burden is stating what the call reports – which it does (health across three memory tiers). It stops just short of explaining what 'health' means or why an agent should check it.

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 takes zero parameters, so the baseline of 4 applies; there is no argument semantics for the description to clarify or omit.

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?

Names a specific resource (health/status) and its scope (all three memory tiers), which no sibling covers – goldfish_search, goldfish_remember, etc. are all distinct operations. It is distinguishable from siblings, though it never explicitly contrasts itself with them.

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

Usage Guidelines2/5

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

No guidance on when to call this versus alternatives such as goldfish_context or goldfish_recall, nor any stated trigger (e.g., diagnostics before recovery). The agent must infer the use case entirely from the name.

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. 7 tool updatesv0.1.0
    • First observedgoldfish_context
    • First observedgoldfish_persona
    • First observedgoldfish_recall
    • First observedgoldfish_reflect
    • First observedgoldfish_remember
    • First observedgoldfish_search
    • First observedgoldfish_status

TDQS

A3.6/5.0

Scored across 7 tools

Disambiguation4/5

The seven tools map onto three distinct memory tiers (raw transcript, session summaries, curated notes), and read/write roles for notes are cleanly split between goldfish_recall and goldfish_remember. The main overlap is goldfish_search vs goldfish_reflect, which both query brain transcript history; descriptions differentiate them (reflect is restricted to role='user' and pattern-oriented), but an agent could still misselect between them.

Naming Consistency4/5

All tools use a consistent goldfish_ prefix with snake_case, which is highly predictable. However, the suffix is a mix of verbs (search, recall, remember, reflect) and resource nouns (context, persona, status), so it is not a strict verb_noun pattern.

Tool Count5/5

Seven tools is well-scoped for a three-tier memory server, with each tool earning its place across search, summarization, note read/write, reflection, aggregation, and health. No obvious redundancy or bloat.

Completeness4/5

The surface covers read/search, write, aggregation, and health across all three memory tiers. The one notable gap is the absence of a delete/prune or update operation for curated notes, despite the descriptions explicitly saying insights should be revisited and pruned over time.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A local MCP server that provides a shared context and learning foundation across multiple AI tools (Claude, Copilot, Codex) for multiple projects, enabling persistent knowledge, decisions, and gap reflection through note storage.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides persistent memory for AI coding agents via MCP, enabling teams to share and recall facts across sessions. Automatically captures, classifies, and curates knowledge from supported transcript sources.
    18
    18 npm
    1
    AGPL 3.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Persistent memory MCP server that remembers decisions and context across coding sessions, automatically logging and surfacing relevant knowledge as you work.
    12 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides shared long-term memory for AI coding agents via MCP, allowing tools like Claude Code and Codex to store and retrieve distilled facts, notes, and conversation history to persist context across sessions.
    26 npm
    3
    MIT