Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
memory_searchA

Hybrid search (vector + keyword) over the user's active long-term memories. Returns up to top_k full records (id, content, type, status, scores) after a relevance filter but without reranking, as { data: [...] }. Use it to find memories you want to inspect or edit by id. To answer a question with the most relevant, reranked memories plus glossary hits, use memory_recall instead. Never changes memory content; it only updates recall counters.

memory_listA

Page through stored memories without a query, pinned first, then by importance, then most recently updated; optionally filtered by type or status. Returns { data, paging: { limit, has_more, next_offset } }; pass next_offset back as offset for the next page. Use memory_search or memory_recall to find memories by meaning. Read-only.

memory_exportA

Export the namespace's active memories (content plus metadata) as one JSON payload, for backup or migration. Archived and superseded memories are not included. The result can be large; use memory_list to page or memory_search to look things up. Read-only.

memory_getA

Fetch one memory by id with its full record and lifecycle fields (fact_key, version status, superseded_by). Returns { data: record }, or an error result 'Memory not found' if the id does not exist in this namespace. Use it after memory_search, memory_recall or memory_list when you need the complete record before editing. Read-only.

memory_deleteA

Permanently delete one memory by id, removing it from storage and from the search index. This cannot be undone. To hide a memory but keep the record, use memory_archive; to replace an outdated fact while keeping its history, use memory_supersede. Returns { data: { id, deleted: true } }, or an error result if the id is not found or the memory could not be removed from the search index (the record is then kept).

memory_ingestA

Store raw chat messages as conversation history. Memories are not extracted immediately: the nightly background pipeline (dream) reads stored messages and distills them into long-term memories later. To save a fact right away, use memory_upsert. Returns { data: { conversation_id, message_ids } }; message_ids can be passed to memory_pin as context.

memory_bootA

Cold-start context package for a new session: yesterday's diary log, the latest weekly and monthly summaries, the 20 most recent precious entries (from memory_pin), every glossary term and any spontaneous perception items, as { data: {...} }. Output is stable and deterministically ordered so the client can cache it. Call once at session start, not every turn; for per-question lookups use memory_recall. Never changes memory content; it only records that the returned precious entries were shown.

memory_recallA

Answer-oriented recall: matches glossary terms literally, runs hybrid search over active memories, reranks the hits and drops anything below min_score. Returns { data: { hits, glossary_hits, week_blocks, meta } }, each hit with id, score and source so you can cite or edit it. Precious entries are not searched here (they come from memory_boot). Prefer this over memory_search when you want only the relevant memories for the current question. Never changes memory content, but marks the returned memories as recently injected, which briefly lowers their rank in later automatic recall.

memory_pinA

Save a moment as a precious entry: pinned, offered through memory_boot (which shows the 20 most recent), and never deduplicated, decayed or deleted by the automatic pipeline. Each call creates a new entry. Write the content so it still makes sense on its own later, and attach the surrounding messages via context_message_ids. For ordinary facts use memory_upsert. Returns { data: precious record }.

glossary_setA

Add or update a glossary term: private vocabulary such as nicknames, in-jokes or project names. Terms are matched literally (not by vector) during memory_recall and are all included in memory_boot. Upserts by term: an existing term gets the new definition, and aliases/examples are replaced by what you pass (omitting them clears them). Returns { data: glossary row }.

memory_upsertA

Write a refined memory immediately (no waiting for the nightly dream), keyed by fact_key. If an active memory with the same fact_key exists, its content and fields are overwritten in place and the old text is not kept; otherwise a new memory is created. To keep the old version as history, use memory_supersede. Pass authored_by (with the default source) to mark the memory as hand-authored: it ranks above distilled memories and the automatic pipeline cannot overwrite it. Returns { data: { id, created } }.

memory_supersedeA

Replace an outdated memory while keeping history: marks old_id as superseded (kept, and visible via memory_recall with include_history) and inserts a new active memory linked to it. The new entry inherits the old fact_key unless new_fact_key is given. If old_id does not exist, the new memory is still created and oldStatus is 'missing'. Use it when a fact changed over time; to fix a mistake in place use memory_upsert, and to remove a memory use memory_archive or memory_delete. Returns { data: { oldStatus, newId } }.

memory_archiveA

Soft-archive a memory: sets status='archived' and removes it from search and recall, but keeps the record in storage (memory_list with status='archived' still shows it). There is no MCP tool to un-archive. Does not touch the supersede chain. Prefer this over memory_delete when the memory might be needed later. Returns { data: { id, archived: true } }, or an error result 'Memory not found'.

diary_getA

Read daily_log diary entries. These are impressions, not verified facts. Omit date for today+yesterday (recent). Use week (e.g. 2026-W29) for weekly_log. Rolled-up daily dates fall back to weekly_log. Fetch explicitly when needed; do not treat diary as ground truth.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.4/5.0

Scored across 14 tools

Disambiguation4/5

The retrieval trio (memory_search, memory_recall, memory_list) overlaps at a glance, but the descriptions explicitly cross-reference each other and clarify when to use which, and the write tools (upsert, supersede, archive, delete) are carefully distinguished. memory_ingest vs memory_upsert is also well delineated. Only the subtle search/recall split keeps it from a perfect score.

Naming Consistency5/5

Every tool follows a consistent noun_verb pattern (memory_search, memory_upsert, glossary_set, diary_get). The memory_/glossary_/diary_ prefixes correspond cleanly to distinct resources rather than mixing arbitrary conventions.

Tool Count5/5

14 tools sit comfortably in the well-scoped range for a memory system, and each tool has a distinct lifecycle role (search, recall, ingest, boot, pin, upsert, supersede, archive, delete, export, glossary, diary) without obvious redundancy.

Completeness4/5

The memory lifecycle is thoroughly covered from ingest through search, edit, supersede, archive and delete, plus glossary and diary reads. Minor gaps remain: no un-archive operation (explicitly noted) and no glossary deletion or diary write tool.

Maintenance

ActivityActive
ResponsivenessWithin a week