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
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
write_memoryA

写入一条记忆短文本(事实/笔记/摘要),可选标签;返回 {"id": 记录ID}。 内容为空串或纯空白时返回 {"error": "INVALID_ARGUMENT", "message": 原因}。 project 指定项目子库(空=全局库);client 仅用于审计归类(自动识别); 记录主键由服务端生成。 English: Write a memory short text (fact/note/summary) with optional tags; returns {"id": record_id}. Returns {"error": "INVALID_ARGUMENT", "message": reason} when content is empty or blank. project selects the project sub-store (empty = global); client is audit-bucketing only (auto-detected). The record primary key is generated server-side.

search_memoryA

混合检索记忆与知识(向量语义 + BM25 关键词,归一化融合); 返回命中列表,每项含 id/content/score/type/source。 project 指定项目子库时,检索范围 = 该项目子库 + 全局库(项目命中加分); 不传 project 时只检索全局库。 top_k 小于 1 时返回 {"error": "INVALID_ARGUMENT", "message": 原因}。 client:来源客户端(可选,缺省从 clientInfo 自动识别,仅审计)。 English: Hybrid retrieval over memories and knowledge (vector semantics + BM25 keywords, normalized fusion); returns a hit list, each item having id/content/score/type/source. With project, the scope is that project's sub-store plus the global store (project hits boosted); without project, only the global store is searched. Returns {"error": "INVALID_ARGUMENT", "message": reason} when top_k is less than 1. client: source client (optional; auto-detected from clientInfo when omitted; audit only).

read_memoryA

按 ID 读取单条记忆完整内容;记录不存在返回 {"error": "NOT_FOUND"}。 project:先查该项目子库,再查全局库;不传时先查全局库再查各项目子库。 client:来源客户端(可选,缺省从 clientInfo 自动识别,仅审计)。 English: Read the full content of a single memory by ID; returns {"error": "NOT_FOUND"} when absent. project: search that project's sub-store first, then the global store; when omitted, global first and then each project store. client is audit-only.

update_memoryA

按 ID 更新记忆内容(变更后自动重新嵌入);记录不存在返回 {"error": "NOT_FOUND"}; 内容为空串或纯空白时返回 {"error": "INVALID_ARGUMENT", "message": 原因}。 project:先查该项目子库,再查全局库;不传时先查全局库再查各项目子库。 client:来源客户端(可选,缺省从 clientInfo 自动识别,仅审计)。 English: Update a memory's content by ID (auto re-embed on change); returns {"error": "NOT_FOUND"} when absent; empty content returns {"error": "INVALID_ARGUMENT", "message": reason}. project: locate in that project's sub-store, then the global store; when omitted, global first and then each project store. client is audit-only.

delete_memoryA

按 ID 删除一条记忆;成功返回 {"ok": true},记录不存在返回 {"error": "NOT_FOUND"}。 project:先查该项目子库,再查全局库;不传时先查全局库再查各项目子库。 client:来源客户端(可选,缺省从 clientInfo 自动识别,仅审计)。 English: Delete a memory by ID; returns {"ok": true} on success and {"error": "NOT_FOUND"} when it does not exist. project: locate in that project's sub-store then the global store; when omitted, global first and then each project store. client is audit-only.

link_memoryA

建立两条记忆的关联(related/supersedes/depends_on/part_of/contradicts); 重复建边幂等(created=false)。仅同作用域的 memory 记录可关联,禁止自关联; 失败返回 {"error": , "message": 原因}(NOT_FOUND/SELF_LINK/...)。 project:项目子库(空=全局库);client:仅审计。 English: Link two memories (related/supersedes/depends_on/part_of/contradicts); duplicate edges are idempotent (created=false). Only memory records in the same scope can be linked, and self-links are rejected; failures return {"error": , "message": reason}.

unlink_memoryB

取消两条记忆的关联(任一方向);relation 为空时删除该对全部关系。 返回 {"ok": true, "removed": 删除数};记录不存在返回 {"error": "NOT_FOUND"}。 English: Remove links between two memories in either direction; when relation is empty all relations of the pair are removed. Returns {"ok": true, "removed": n}.

list_linksB

列某条记忆的一跳邻居,返回 {"record_id", "links"};每项含 id/content/type/tags/relation/direction(out/in/both)。 记录不存在返回 {"error": "NOT_FOUND"}。 English: List one-hop neighbors of a memory as {"record_id", "links"}; each item has id/content/type/tags/relation/direction (out/in/both).

add_documentB

导入本地文档(PDF/DOCX/MD/TXT 及 Office 格式)切分入库; 返回 {"source": 文件名, "chunks": 块数};文件不存在或格式不支持时 返回 {"error": "FILE_NOT_FOUND" | "UNSUPPORTED_FORMAT", "message": 原因}。 project:文档 chunk 落入该项目子库(空=全局库);client:仅用于审计归类。 English: Import a local document (PDF/DOCX/MD/TXT and Office formats), split and ingest it; returns {"source": filename, "chunks": count}; when the file is missing or the format is unsupported returns {"error": "FILE_NOT_FOUND" | "UNSUPPORTED_FORMAT", "message": reason}. project: chunks go to that project's sub-store (empty = global); client is audit-only.

add_webpageA

抓取网页正文并切分入库;返回 {"source": url, "chunks": 块数}; 抓取/正文提取失败时返回 {"error": "WEB_FETCH_FAILED", "message": 原因}。 project:web chunk 落入该项目子库(空=全局库);client:仅用于审计归类。 English: Fetch a webpage body and ingest it after splitting; returns {"source": url, "chunks": count}; on fetch/body-extraction failure returns {"error": "WEB_FETCH_FAILED", "message": reason}. project: chunks go to that project's sub-store (empty = global); client is audit-only.

ask_kbA

基于知识库的 RAG 问答(检索 → 上下文拼装 → 护栏生成),返回 answer 与 sources; project:检索该项目子库 + 全局库(空=仅全局库),并写 ask 存取审计; client:来源客户端(可选,缺省从 clientInfo 自动识别,仅审计); LLM 不可用时返回 {"error": "LLM_DISABLED", "message": 配置指引}。 English: Knowledge-base RAG Q&A (retrieve → build context → guarded generation), returning answer and sources; project: search that project's sub-store plus the global store (empty = global only); an ask access-audit is emitted; client is audit-only; returns {"error": "LLM_DISABLED", "message": setup guidance} when the LLM is unavailable.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation4/5

The memory CRUD set (write/read/update/delete/search) is clearly differentiated, as are link/unlink/list_links and add_document/add_webpage. The only mild overlap is between ask_kb (RAG answer) and search_memory (raw retrieval), but their descriptions make the answer-vs-hits distinction clear.

Naming Consistency4/5

Names follow a consistent snake_case verb_noun pattern (write_memory, read_memory, link_memory, unlink_memory, add_document, ask_kb). Minor deviation: 'write_' and 'add_' both serve creation, and list_links/ask_kb omit the 'memory' noun, but conventions remain readable.

Tool Count5/5

11 tools is well within the ideal 3-15 range and each tool earns its place across distinct clusters (CRUD, linking, ingestion, retrieval/Q&A). No redundant or trivial tools.

Completeness4/5

Core lifecycle is covered: full memory CRUD plus search, complete link/unlink/list linking, document and webpage ingestion, and RAG Q&A. Minor gaps exist (e.g. no listing/browsing of all memories, no bulk or tag-based management, no document update/re-ingest), but agents can work around these via search.

Maintenance

ActivityMaintained
ResponsivenessNo issues