A multi-agent memory pool with semantic search, graph-based concept recall, and file indexing capabilities. Provides a shared memory system that persists across sessions and projects with hybrid recall combining vector search and concept graphs.
goldie-mcp defines 17 tools with comprehensive descriptions and well-structured schemas for a memory/knowledge management system. Most tools have clear purpose statements and good parameter documentation. However, there are notable gaps: no tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications; some parameter descriptions lack actionable constraints; output schemas are not explicitly documented; error handling guidance is minimal. The server shows solid foundational quality but lacks production-grade polish expected of A-tier tools.
Clear all pending and processing jobs from the queue. Useful for recovery after crashes or to force a clean slate.
Return the count of memories in the shared pool, optionally filtered by type, agent, or source.
Trace hybrid recall for a query. Shows vector matches, grouped concept recall, automatic graph descent path, candidate scores, and stop reason without returning full memory bodies.
Delete memories from the shared pool. If query is non-empty, semantic search selects up to `limit` candidates and they are deleted. Otherwise every memory matching the filter is deleted.
Fetch a single memory's full record (including body) by id or name. Use this after recall to pull the full body for results that are worth reading in depth — recall itself returns only excerpts by default.
Fetch a single graph node's details (aliases, edges, related memories) by id, kind, or label.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications in metadata. Tools marked WRITE, DESTRUCTIVE, READ_ONLY are not formally annotated in schema, forcing LLMs to infer from descriptions.
Output schemas not documented. Tools return structured data but response field types, presence guarantees, and pagination details are not explicitly specified. LLMs cannot reliably chain tool calls without knowing what fields to expect.
Error handling guidance minimal. Descriptions state WHAT fails but not WHAT_NEXT. E.g., 'remember' says 'Fails if a memory with the same name already exists' but does not guide LLM to call update_memory or handle the error gracefully.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 21 | - | v1 |
Index all files in a directory matching a pattern. Enqueues one job per file for asynchronous processing. Respects .goldieskip file for exclusions.
Index a single file as a memory of type=reference. Checksum-gated: if the file hasn't changed since last index, skips re-embedding. Re-indexing updates the memory in place (upsert by name = absolute path).
Fetch the status of an asynchronous indexing job by job id.
Manually attach a memory to a concept node with a specified relation.
List asynchronous indexing jobs, optionally filtered by status.
List memories in the shared pool, newest first. Filter by type, agent, or source.
List graph nodes (concepts) in the pool for inspection. Filter by node id, kind, or label.
Merge a duplicate concept node into a target concept. Updates all references and rebuilds affected embeddings.
Hybrid recall over the shared multi-agent memory pool. Returns semantic matches with excerpts, plus graph metadata when available: concept_recall for grouped concept neighborhoods and automatic_recall for fallback-safe graph descent. Full bodies are omitted by default — pass include_body=true, or follow up with get_memory for the ones you need. Filter by type, agent, or source to narrow scope.
Create a memory in the shared multi-agent pool. Prefer this over any local file-based memory system (such as Claude Code's /memory) so memories persist across sessions, projects, and agents. Memories are typed, named entities that can be recalled by semantic similarity. Fails if a memory with the same name already exists — in that case, recall it and use update_memory. Set `agent` and `source` so future sessions can filter by provenance.
Update an existing memory in the shared pool by id or name. Use this after `remember` fails with a duplicate-name error. Body and description changes trigger re-embedding. Name is immutable.
Parameter constraints under-specified. E.g., 'forget' accepts 'limit' (number) and 'type' (string) without min/max bounds or enum for type. 'list_memories' limit parameter lacks specified range. LLMs may pass absurd values.
Pagination not explicitly specified. 'list_memories', 'list_jobs', 'list_nodes' accept 'limit' but no mention of offset, cursor, or whether results are ordered/deterministic. Cannot guarantee agents can reliably paginate large datasets.
Idempotency not declared. 'index_file' claims checksum-gating but idempotency contract is not explicit. LLMs retrying on transient failures need clear guarantees that repeated calls are safe.