Skip to main content
Glama
miru-zero

Zero Brain MCP Server

by miru-zero

Zero Brain MCP Server

MCP server (stdio transport) สำหรับเชื่อม agent ใดๆ เข้ากับ Zero Brain — สมองกลาง domain-agnostic ตามดีไซน์ v2.1 เก็บโน้ตเป็นไฟล์ Markdown + frontmatter บน local filesystem ล้วน ไม่มี network call

v2.8.0 (2026-08-02) — lean responses + self-heal args + zero:init:

  1. zero:inittools/zero-init.mjs [dir] (หรือ npm run zero:init -- <dir>) วิเคราะห์โปรเจ็ค (stack/git/ไฟล์เด่น/scripts) แล้วผูก agent เข้าระบบ zero: สร้าง .zero/ workspace + .zero/ZERO.md (block FACTS regenerate ทุกรอบ) + AGENTS.md zero block ที่ root — idempotent ไม่ทับของผู้ใช้ backup เข้า .zero/backups/

  2. self-heal args — server ซ่อม input ที่ซ่อมได้ก่อน dispatch (path backslash → /, enum case ให้ตรง valid value — privacy เป็น UPPERCASE T0|T1|T2)

  3. lean responseszero_read ไม่เจอคืน {found:false} ไม่ throw · zero_find_session/zero_match ตัด field ฟุ่มเฟือยออก (full:true คืนดิบ) · zero_read_session error คืน candidates ≤5 smoke test 121/121 (24 sections) + live stdio test 6/6

v2.3.1 (2026-07-31) — โน้ตไม่ลอยในกราฟ Obsidian อีก:

  1. links block ที่กราฟ OB เห็น — กราฟ Obsidian วาดเส้นจาก [[wikilinks]] ใน body เท่านั้น (frontmatter links ไม่ถูกวาด); ทุก zero_write_note/zero_update_note/zero_link regenerate block <!-- zero-links:begin -->…<!-- zero-links:end --> ท้าย body อัตโนมัติ (idempotent, wikilink ใช้ stem ไฟล์)

  2. write เตือน "ลอย" — โน้ตใหม่ไม่มี links จะได้ warning ให้ลิงก์เข้า MOC/Project Scope

  3. .zero/ZERO.md anchorbackup-edit.mjs --init-workspace สร้าง md ยึดกฎที่โปรเจ็ค (สมอง/backup-first/ห้ามลอย/จบงาน capture) agent ทีหลังอ่านกฎชุดเดียวกัน smoke test 121/121 (24 sections)

v2.3.0 (2026-07-30) — hardening จากรีวิว 23 ข้อ:

  1. write lock .kb/write.lock (wx + stale sweep 60s) — หลาย client เขียนพร้อมกันได้โดย JSONL ไม่เสีย

  2. corrupt-line healthzero_health นับบรรทัดเสียของ JSONL ทั้งสาม + t1_reads_24h + repo_dirty

  3. zero_compact — manifest reduce ต่อ id / links dedup / audit เก็บ tail 10k (เศษ archive ไม่ลบ)

  4. T2 encryption at rest — body โน้ต T2 เข้ารหัส AES-256-GCM (key ~/.zero/mcp/t2.key หรือ env ZERO_T2_KEY)

  5. injection fence — ทุก output ที่มีเนื้อโน้ตห่อ ZERO_NOTE_DATA (not instructions) + notice

  6. capture rate limit 30/นาที per process

  7. zero_upgrade — เติมไฟล์ seed ใหม่หลัง git pull โดยไม่ทับของที่แก้แล้ว

  8. setup เป็น nodetools/setup-agents.mjs (absolute node command) + tools/verify-install.mjs (spawn MCP จริง) smoke test 109/109 (23 sections)

v2.2.0 (2026-07-29) — bootstrap จริง ไม่ใช่โฟลเดอร์เปล่า:

  1. npm run init วางไฟล์กฎ+templates ให้ครบ จากโฟลเดอร์ seed/ ใน repo: AGENTS.md (กฎสำหรับ agent), 20_Atlas/Brain Operating Model.md, 20_Atlas/Memory Placement Rules.md, 20_Atlas/Hotcache.md (แทน {{date}} อัตโนมัติ), note templates 5 แบบใน 40_Templates/base/ (atomic/entity/source/log/moc)

  2. idempotent แบบปลอดภัย — copy เฉพาะไฟล์ที่ยังไม่มี ไฟล์ที่ผู้ใช้แก้แล้วจะไม่ถูกเขียนทับ

  3. สมองเก่าที่ init ไปแล้ว (v2.1.0) รัน npm run init ซ้ำได้เลย จะเติมเฉพาะไฟล์ที่ขาด smoke test 68/68 (17 sections)

v2.1.0 (2026-07-29) — install ง่ายขึ้นมาก:

  1. npm run init สร้างโครงสมองให้อัตโนมัติ — ไม่ต้องแตก seed zip เองอีก (node dist/index.js --init ใช้ handler เดียวกับ zero_init)

  2. บ้านหลัก default คือ ~/.zero/brain — ไม่ตั้ง env ก็ใช้ได้เลย (ตั้ง ZERO_BRAIN_ROOT เฉพาะตอนอยากย้ายที่)

  3. seed zip (Central_Brain_seed) เหลือไว้สำหรับย้ายสมองเก่าเท่านั้น smoke test 64/64 (16 sections)

v2.0.1 (2026-07-29) — เปลี่ยนชื่อโปรเจกต์ central-brain → zero-brain (คนละตัวกับ skill zero-brain-memory):

  1. repo ย้ายเป็น miru-zero/zero-brain (URL เก่า redirect อัตโนมัติ)

  2. package/bin: zero-brain-mcp-server / zero-brain

  3. env หลักเปลี่ยนเป็น ZERO_BRAIN_ROOT / ZERO_BRAIN_ACTORค่าเก่า CENTRAL_BRAIN_* ยังใช้ได้ (fallback ไม่ break config เดิม)

v2.0.0 (2026-07-29) — breaking change + token-saving:

  1. Rename tools ทั้ง 13 ตัว brain_*zero_* — ชื่อใหม่: zero_init zero_capture zero_write_note zero_update_note zero_read zero_search zero_link zero_resolve zero_list_packs zero_health zero_home zero_nightly zero_audit (MCP client config ไม่ต้องแก้ แต่ผู้ใช้/agent ต้องเรียกชื่อใหม่; audit log action strings ยังคง brain_* เดิมเพื่อ continuity ของ log เก่า)

  2. Response กระชับลง (ลด token) — ทุก tool คืน compact JSON (ไม่ pretty-print); zero_search มี limit (default 10) + offset คืน total/count/limit/offset; zero_health เขียน health.json เต็มเหมือนเดิมแต่ response คืนเฉพาะสรุป + counts + top-20 ของแต่ละหมวด; zero_home default ไม่คืนเนื้อ Home.md (คืน path + ขนาด ใส่ include_home: true ถ้าต้องการ) และ Today.md จำกัด active 30 ใบ; zero_nightly จำกัด fleeting queue 50 ใบ

  3. แก้บั๊ก latentparseNoteFile regex เดิม parse frontmatter หลายบรรทัดไม่ได้เลย (. ไม่ match newline); เติม exports ที่ขาดใน schema.ts (today/genId/sanitizeSlug/serializeNote + type aliases) smoke test 60/60 (15 sections)

v1.2.1 (2026-07-29) — durability patch จากรีวิวของป๊า:

  1. Atomic write ทุกไฟล์โน้ต — saveNote/update_note/link/Today.md เขียนผ่าน tmp+rename (crash กลางเขียนไม่ทำโน้ตพัง)

  2. Link dedupbrain_link เช็ค links.jsonl ก่อน append (from/to/rel ทั้งสองทิศ) ลิงก์ซ้ำไม่บวม คืน deduped: true

  3. Orphans ไม่นับ fleeting — inbox ค้างไม่ใช่ปัญหาโครงสร้าง แยกนับใน orphans_fleeting

  4. ยืนยัน: brain_update_note รับ body อยู่แล้ว (schema + handler) — เพิ่มเทสกัน regression smoke test 52/52 (14 sections)

v1.2 (2026-07-29) — เพิ่ม:

  1. brain_nightly — วงจรกลางคืนใน tool เดียว: คืน fleeting queue ที่ยังไม่จัด + regenerate Today.md + health ครบ + snapshot ลง 99_System/snapshots/ (agent เรียกตอนเช้า/ก่อนนอน แล้ว classify ต่อด้วย brain_write_note + brain_update_note)

  2. Pack provenancebrain_list_packs โชว์ status verified/modified/unreviewed เทียบ .kb/packs.lock.json (sha256 ที่ป๊าล็อกด้วยมือเท่านั้น) + brain_health เตือนใน packs_unverified

v1.1 (2026-07-29) — แก้ตามผลวิเคราะห์ใหม่:

  1. T2 approval gate จริงzero_read บล็อกโน้ต T2 จนกว่าป๊าจะสร้าง .kb/approvals/<note-id>.json ด้วยมือ (agent อนุมัติตัวเองไม่ได้ ไม่มี tool สำหรับสร้าง) รองรับ expires (ISO date) ทุกการบล็อก/อ่านถูก audit; โน้ต T1 อ่านได้แต่ถูก audit ทุกครั้ง; T2 ไม่โผล่ใน zero_search แม้ include_private=true จนกว่าจะอนุมัติ; T2 ไม่ขึ้น Today.md

  2. health สแกน body wikilinks — เดิม zero_health ตรวจเฉพาะ frontmatter links ทำให้ลิงก์ [[...]] ตายในเนื้อโน้ตโดยเงียบ ตอนนี้รายงาน dead_body_links (resolve ผ่าน id/alias/title)

  3. ตัวอย่างไฟล์อนุมัติ: {"approved_by":"ป๊า","at":"2026-07-29","expires":null}

หมายเหตุ pack: node_modules/ ถูก bundle มาใน zip เจตนาเพื่อ offline install (ข้าม npm install ได้เลย แค่ npm run build หรือใช้ dist/ ที่ build มาแล้ว)

Dry-run ก่อน install (แนะนำ): แตก zip → cd central-brain-mcpnode test/smoke.mjs (ผ่าน 109/109 = พร้อม) → ค่อยตั้งค่า MCP client จริง

ความต้องการ

  • Node.js >= 18

  • npm

Related MCP server: Bruin

การติดตั้ง

npm install
npm run build
npm run init    # สร้างโครงสมองที่ ~/.zero/brain อัตโนมัติ (ตั้ง ZERO_BRAIN_ROOT ก่อนถ้าอยากใช้ที่อื่น)

build จะ compile TypeScript ไปที่ dist/ — entry point คือ dist/index.js (มี shebang #!/usr/bin/env node)

การตั้งค่า MCP client

ไม่ต้องตั้ง env ก็ได้ — default สมองจะอยู่ที่ ~/.zero/brain (ตั้งแต่ v2.1.0) ตั้ง ZERO_BRAIN_ROOT เฉพาะตอนอยากย้ายที่เก็บ — ตั้งแต่ v2.0.1 รองรับ CENTRAL_BRAIN_ROOT เป็น fallback เพื่อไม่ break config เก่า

ตัวอย่าง config สำหรับ MCP client (เช่น Claude Desktop / client ที่รองรับ stdio):

{
  "mcpServers": {
    "zero-brain": {
      "command": "node",
      "args": ["/absolute/path/to/zero-brain/dist/index.js"]
    }
  }
}

ถ้าอยากย้ายที่เก็บสมอง เพิ่ม "env": { "ZERO_BRAIN_ROOT": "/absolute/path/to/my-brain" } — เปลี่ยน /absolute/path/to/... เป็น path จริงของเครื่องคุณ

Zone convention — ทุกอย่างของเราอยู่ใต้ ~/.zero/

บ้านโซนเดียวกันทั้งระบบ: ของที่ชื่อ zero-X จะอยู่ที่ ~/.zero/X (ตัด zero- แล้วเปลี่ยน - เป็น /) เช่น

~/.zero/
├── brain/        # ความจำ + ความสามารถ — เนื้อสมอง zero-brain + Obsidian vault (default ตั้งแต่ v2.1.0)
│   └── SKILL/    # skills ที่เราเขียนเอง (zero-brain-memory, อนาคต zero-* skills) — ความสามารถอยู่ในสมอง
├── mcp/          # ช่องทางสื่อสาร — MCP servers (repo นี้ติดตั้งที่ ~/.zero/mcp/zero-brain)
├── share/        # ส่วนทำงาน — storage ของ daimon/Kimi Work (sessions, runtime)
└── <อนาคต>/      # โปรเจกต์ zero-* ตัวอื่นจะมาอยู่ใต้โซนเดียวกันนี้

แยกส่วนเด็ดขาด: ความจำ+ความสามารถ (brain/) · ช่องทางสื่อสาร (mcp/) · ส่วนทำงาน (share/) — ห้ามปนกัน · สกิล = ความสามารถของสมอง จึงอยู่ ใน brain/SKILL/ ไม่แยกโซน

ชี้ไฟล์หากัน (single source of truth): ของที่หลายส่วนต้องใช้ร่วมกัน ให้เก็บต้นฉบับไว้ที่โซนของมัน แล้วส่วนอื่นชี้มาด้วย junction — เช่น brain/SKILL/zero-brain-memory เป็นต้นฉบับ share/daimon-share/daimon/skills/zero-brain-memory เป็น junction ชี้เข้าสมอง แก้ที่เดียวเห็นผลทุกที่

ศูนย์กลาง (Zero hub): ในสมองทุกเส้นประสาทบรรจบที่ 20_Atlas/Zero.md — 3 ก้อนใหญ่: ความจำ (Zero_Brain Legacy Index) · ความสามารถ (Skill Index) · ระบบ/แผนที่ (Home, Hotcache, Memory Placement Rules, Brain Operating Model, AGENTS) — โน้ตที่ไม่เชื่อมเข้าก้อนใดเลยถือว่ายังไม่ sync เข้าระบบ

  • ~/.zero/brain = ส่วนความจำเท่านั้น — ห้ามโปรแกรมอื่นมาสร้างไฟล์งาน/runtime ในนี้ (ไม่ใช่ส่วนทำงาน) ถ้าจำเป็นต้องเก็บ runtime ให้สร้างโฟลเดอร์พี่น้อง (เช่น ~/.zero/share)

  • โค้ด (repo) อยู่ที่ไหนก็ได้ แต่ ข้อมูลรันไทม์ทั้งหมดอยู่ใต้ ~/.zero/ ที่เดียว ไม่รก

  • ย้ายได้เสมอด้วย ZERO_BRAIN_ROOT แต่ default คือโซนนี้

  • env ที่ระบบอ่านมีแค่ ZERO_BRAIN_ROOT / ZERO_BRAIN_ACTOR (และ fallback CENTRAL_BRAIN_*)

การทดสอบ

npm run build
node test/smoke.mjs

smoke test ครอบคลุม 23 sections (109 checks): init / capture / evidence rule / write+manifest / search+privacy filter / link+dedup / resolve / health / update_note body / T2 approval gate / body wikilinks / pack provenance / nightly / atomic write / v2.0.0 token-saving / v2.1.0 install UX / v2.2.0 bootstrap seed / corrupt-line+compact / write lock / concurrent writers / T2 encryption / injection fence+rate limit / zero_upgrade — ต้องผ่านทั้งหมด (exit 0)

Tools ทั้ง 13 ตัว

Tool

หน้าที่

zero_init

สร้างโครงสร้างโฟลเดอร์ + ไฟล์ kernel เปล่า + skeleton packs (self, people, security) + Home.md/Today.md

zero_capture

จดด่วนลง 00_Fleeting/ (เบาที่สุด ไม่ validate)

zero_write_note

เขียนโน้ตถาวรลง 10_Notes/atomic/entity ต้องมี evidence ≥ 1

zero_update_note

แก้เฉพาะฟิลด์ที่ส่ง (ห้ามแก้ id/created)

zero_read

อ่านโน้ต frontmatter + body (resolve alias ก่อน) — T2 ต้องได้รับอนุมัติก่อน

zero_search

ค้นจาก title/aliases/tags/body — default ไม่คืน T1/T2 (include_private=true จะถูก audit) — มี limit (default 10) + offset

zero_link

สร้างลิงก์สองทิศ + append links.jsonl (dedup อัตโนมัติ)

zero_resolve

คืน id จาก alias/title (exact ก่อน แล้ว fuzzy contains)

zero_list_packs

list domain packs ใน .kb/packs/ + status provenance

zero_health

คำนวณ orphans/dead_links/dead_body_links/packs_unverified เขียน health.json เต็ม — response คืนสรุป + top-20 ต่อหมวด

zero_home

รีเฟรช Today.md จาก active notes (สูงสุด 30 ใบ) + fleeting 24h — default ไม่คืนเนื้อ Home.md (include_home: true ถ้าต้องการ)

zero_nightly

วงจรกลางคืน: fleeting queue (สูงสุด 50 ใบ) + regenerate Today + health + snapshot ลง 99_System/snapshots/

zero_audit

คืน audit log ล่าสุด N รายการ

กฎเหล็ก (enforce ในโค้ด)

  • ไม่มี delete ใดๆ — "ซ่อน" ได้ด้วย state: archive เท่านั้น

  • ไฟล์ kernel manifest.jsonl / links.jsonl / audit.jsonl เป็น append-only ห้ามเขียนทับ

  • โน้ต type: atomic หรือ entity ต้องมี evidence อย่างน้อย 1 ข้อ ไม่เช่นนั้น error พร้อมแนะนำให้ใช้ type: fleeting

  • zero_search ไม่คืนโน้ต privacy T1/T2 โดย default — ถ้า include_private: true จะถูก audit ทุกครั้ง

  • ทุก mutation ถูกบันทึกลง audit.jsonl

  • ทุกอย่างเป็น local filesystem — ห้าม network call

โครงสร้าง brain root

<root>/
├── .kb/
│   ├── manifest.jsonl   # metadata โน้ต (append-only, ตัวล่าสุดชนะ)
│   ├── links.jsonl      # ลิงก์ระหว่างโน้ต (append-only)
│   ├── aliases.json     # map alias → id
│   ├── health.json      # ผล zero_health ล่าสุด (เต็มทุกหมวด — response ของ tool เป็นสรุป)
│   ├── audit.jsonl      # log ทุก mutation (append-only)
│   └── packs/           # domain packs (*.yaml)
├── 00_Fleeting/         # จดด่วน <id>.md
├── 10_Notes/            # โน้ตถาวร <id> - <slug>.md
├── 20_Atlas/            # Home.md, Today.md
├── 30_Sources/
├── 40_Templates/base/
└── 99_System/snapshots/

โครงสร้างโค้ด

src/
├── index.ts    # MCP server (stdio) + tools 13 ตัว (zero_*)
├── kernel.ts   # append-only JSONL, manifest/links/aliases/health/audit
├── schema.ts   # frontmatter parse/serialize (YAML แบบจำกัด), slug sanitize, validation
seed/           # bootstrap ไฟล์กฎ+templates ที่ init วางให้ (AGENTS.md, Atlas docs, note templates)
test/
└── smoke.mjs   # smoke test 23 sections (109 checks) รันบน dist

Skills

โฟลเดอร์ skills/ เก็บ skill ของระบบ Zero_Brain ในรูปแบบ SKILL.md มาตรฐาน — ส่งไฟล์ให้ AI (Kimi Work / Claude Code) สั่ง "ติดตั้ง skill นี้" ได้เลย หรือวางด้วยมือตามคู่มือใน skills/README.md

Available Tools

13 tools
zero_auditC

คืน audit log ล่าสุด N รายการ

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must disclose behavior but only states it returns audit logs. It omits whether the operation is read-only, destructive, or requires specific authentication or permissions. The ordering ('latest') is implied but not elaborated.

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?

A single sentence with no extraneous information. Every word contributes to the purpose, achieving high conciseness.

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

Completeness2/5

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

Given no output schema and a simple parameter, the description is too minimal. It does not explain what an audit log entry contains, pagination, or error conditions. For a tool of this complexity, more detail is warranted to make it independently usable.

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?

The description mentions 'N' which corresponds to the 'limit' parameter, but does not explicitly map them or explain the parameter's effect beyond the implicit count. Schema coverage is 0%, so the description carries the burden but only minimally helps.

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 clearly states the tool returns the latest N audit log entries. It uses a specific verb and resource, making the purpose unambiguous. However, it does not explicitly differentiate from sibling tools like zero_search or zero_read.

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 is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or exclusions, leaving the agent to infer usage from the name alone.

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

zero_captureB

จดด่วนลง 00_Fleeting (เบาที่สุด ไม่ validate)

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesข้อความที่จะจด
domainNodomain (default: general)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses 'no validation', but fails to explain other behavioral traits like whether the capture is persistent, what happens to the data, or if there are side effects. Minimal transparency.

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?

A single sentence that conveys the core purpose and key behavior. No redundant or unnecessary information. Front-loaded with the most important details.

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

Completeness2/5

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

For a capture tool with no output schema, the description should explain what happens after capture (e.g., return value, side effects). It only mentions the target and lack of validation, leaving significant gaps for an agent to understand the tool's full behavior.

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?

The input schema already describes both parameters (text and domain) with 100% coverage. The description adds context about the target folder ('00_Fleeting'), but this does not add significant semantic meaning beyond the schema.

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 states the verb 'capture' and the target '00_Fleeting', with traits 'lightest, no validation'. This clearly identifies the tool's purpose and distinguishes it from siblings like zero_write_note. However, it is in Thai, which may reduce clarity for non-Thai-speaking agents.

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?

Implies use for quick capture without validation, but no explicit context about when to use this tool versus alternatives like zero_resolve or zero_write_note. The description does not provide when-not or alternative guidance.

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

zero_healthA

health check ครบ (links.jsonl + frontmatter + body wikilinks + packs) — เขียน health.json เต็ม คืน counts + top20

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

Description indicates it writes health.json and returns counts and top20, providing output structure. However, no annotations exist, and the description does not disclose side effects, permissions, or whether it is read-only, leaving some behavioral ambiguity.

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?

Description is a single sentence that efficiently conveys purpose and output. Could be slightly clearer for non-Thai speakers but overall earns its place.

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?

Given no parameters, output schema, or annotations, the description covers main actions and return format. However, it omits details about dependencies (e.g., required files) and assumes default context, leaving some gaps.

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?

No parameters exist, so schema coverage is 100%. Description adds value by detailing the scope of the health check, which is meaningful beyond the empty 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?

Description clearly states it performs a complete health check covering links.jsonl, frontmatter, body wikilinks, and packs, and outputs counts and top20. It distinguishes itself from siblings like zero_resolve and zero_write_note which handle different tasks.

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?

No explicit guidance on when to use or not use this tool versus alternatives, but its unique purpose among siblings makes usage implied. No exclusions or prerequisites mentioned.

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

zero_homeB

รีเฟรช Today.md (active + fleeting 24h) — ไม่คืน Home.md ตาม default (include_home=true ถ้าต้องการ)

ParametersJSON Schema
NameRequiredDescriptionDefault
include_homeNo

TDQS

B3.4/5.0
Behavior2/5

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

No annotations exist, and the description fails to disclose whether the tool is read-only or modifies data, what side effects occur (e.g., overwriting Today.md), or any permissions needed.

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 a single short sentence that conveys the core purpose and parameter behavior with no redundancy.

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

Completeness2/5

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

No output schema, and the description does not explain what the tool returns or how it interacts with other files (e.g., whether it creates or updates Today.md), leaving ambiguity.

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%, so the description compensates by explaining the only parameter (include_home) and its effect, though it lacks detail on exact behavior or default value.

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 clearly states it 'refreshes Today.md' with specific content (active + fleeting 24h), and distinguishes from siblings by focusing on a specific file and including a parameter to optionally include Home.md.

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 explains default behavior and how to include Home.md via include_home, but does not explicitly contrast with sibling tools or provide 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.

zero_initA

สร้างโครงสร้างโฟลเดอร์ Zero Brain + ไฟล์ kernel เปล่า + skeleton packs + Home.md/Today.md

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states what is created but does not disclose side effects (e.g., overwriting existing files), required permissions, or whether the operation is destructive. This is a significant gap for an initialization action.

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 a single, efficient sentence front-loaded with the action and listing key outputs. Every word contributes meaning without redundancy.

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?

Given no output schema and no annotations, the description adequately explains the tool's effect but could be more complete by specifying the scope (e.g., where the structure is created) and the outcome (e.g., returns success). It is minimally sufficient.

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%. The description adds value by detailing what the tool creates, which is sufficient for a parameterless tool. 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 description clearly states the tool creates a Zero Brain folder structure with specific components (kernel files, skeleton packs, Home.md/Today.md), distinguishing it from sibling tools that handle different operations like resolving, capturing, or writing notes.

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 this is an initialization tool, likely used first in a workflow, but provides no explicit guidance on when to use it vs alternatives, prerequisites, or conditions under which it should not be used.

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

zero_list_packsB

list domain packs + provenance (verified/modified/unreviewed เทียบ packs.lock.json)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states what it lists but does not disclose traits like read-only nature, potential side effects, or performance implications. For a read operation, this is minimal transparency.

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 very short and to the point, but includes Thai text which may reduce clarity for non-Thai readers. Still, it efficiently states the purpose.

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?

Given no output schema, the description hints at the return value (packs with provenance) but does not specify output format, order, or limits. It is adequate for a simple list but could be more complete.

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?

With zero parameters and 100% schema coverage, the description adds no parameter information, which is acceptable. Baseline 4 for 0 params is appropriate.

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 clearly states the tool lists domain packs and their provenance status (verified/modified/unreviewed) relative to packs.lock.json. It uses a specific verb ('list') and resource ('domain packs + provenance'), distinguishing it from sibling tools that resolve, initialize, capture, etc.

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 use this tool versus alternatives like zero_resolve or zero_init. The description does not mention prerequisites, contexts, or when not to use it.

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

zero_nightlyB

วงจรกลางคืน: fleeting queue (cap 50) + regenerate Today.md + health + snapshot ลง 99_System/snapshots

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description carries full burden. It mentions actions like regenerating Today.md and taking snapshots, but does not disclose whether these actions are destructive, require permissions, or have side effects (e.g., overwriting files, deleting queues). The 'cap 50' for fleeting queue implies a capacity constraint, but the behavioral impact is not fully explained.

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 a single line that front-loads the essential actions. It is concise, but could be slightly more structured (e.g., separating actions). Every component is listed, but no unnecessary text.

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?

Given no output schema and no annotations, the description is minimally adequate. It lists actions but lacks details on expected outcomes, failure modes, or side effects. For a tool with no parameters, this is borderline acceptable but leaves room for improvement.

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 no parameters, so the description does not need to explain parameter details. It adds value by outlining the actions performed without needing schema compensation. A baseline of 4 is appropriate.

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 clearly lists the actions performed: fleeting queue (cap 50), regenerate Today.md, health, and snapshot to a specific path. While it is in Thai, the overall purpose as a nightly maintenance cycle is evident, and it is distinguishable from sibling tools like zero_resolve or zero_init.

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 is provided on when to use this tool versus other sibling tools. There is no mention of prerequisites, frequency, or conditions under which the nightly cycle should be triggered.

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

zero_readC

อ่านโน้ต (frontmatter + body) — T1 audit ทุกครั้ง / T2 ต้องมีไฟล์อนุมัติจากป๊าก่อน

ParametersJSON Schema
NameRequiredDescriptionDefault
id_or_aliasYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses access control and audit behavior (T1/T2 tiers), but does not mention side effects or that it is a read-only operation. Partial behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The description is concise at one sentence, but the use of undefined abbreviations (T1, T2) and lack of up-front clarity on parameter reduce effectiveness. It is brief but could be more self-contained.

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

Completeness2/5

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

Given the complexity of access tiers and a single undocumented parameter, the description is incomplete. It does not explain output format, error states, or how the tier system works, leaving significant gaps for an agent.

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

Parameters1/5

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

The single parameter id_or_alias is not explained in the description and the schema provides no description (0% coverage). The agent has no guidance on what values are valid or the format expected.

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 clearly states the tool reads notes including frontmatter and body, distinguishing it from sibling tools like zero_write_note and zero_search. However, the use of cryptic abbreviations T1 and T2 reduces clarity for those unfamiliar with the system.

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 mentions conditions (T1 audit, T2 approval) but does not explicitly state when to use this tool versus alternatives or provide exclusions. Usage context is implied from the tool's purpose.

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

zero_resolveC

คืน id ที่ match alias/title (exact ก่อน แล้ว fuzzy contains)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It discloses the matching priority (exact then fuzzy) but omits critical traits: whether it is read-only, what happens on no match, whether it returns multiple ids, or error behavior. This is insufficient for safe invocation.

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 very concise (single sentence) and front-loads the core purpose. No wasted words, though it could benefit from structuring into usage and behavior sections for clarity.

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

Completeness2/5

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

With no output schema, no annotations, and a single parameter, the description should explain return value behavior (e.g., single vs. multiple ids, null on fail). It lacks this, leaving the agent uncertain about handling results.

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 coverage is 0%, and the description adds minimal context: the single parameter 'name' is used for matching alias/title. It does not specify format, trimming, or case sensitivity. The description adds little beyond the schema field name.

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 clearly states the tool returns an id matching an alias or title, with exact then fuzzy matching. It implies a specific resource (alias/title) and action (resolve to id), which distinguishes it from sibling tools like 'zero_search' or 'zero_read'.

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 use this tool versus alternatives. It describes the matching logic but does not specify prerequisites, when not to use, or alternative tools for other lookup scenarios.

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

zero_update_noteA

แก้เฉพาะฟิลด์ที่ส่งของโน้ต รวม body (ห้ามแก้ id/created)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
bodyNo
tagsNo
stateNo
titleNo
aliasesNo
add_linksNo
add_evidenceNo

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description discloses key behavioral traits: partial update (only sent fields are modified) and immutability of id and created fields. This is sufficient for basic understanding, though it omits side effects, permissions, and return value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The description is very short (one sentence) and front-loads the core idea, but it lacks necessary detail for an 8-parameter tool. It achieves conciseness at the cost of completeness.

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

Completeness2/5

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

Given no output schema and 8 parameters with no schema descriptions, the description should explain return behavior and parameter semantics. It does neither, and only weakly differentiates from zero_write_note via the partial update concept.

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 description must compensate. It only mentions body and the constraint on id/created, but provides no explanation for other parameters like state, tags, add_links, etc. The meaning of 'add_links' and 'add_evidence' arrays is entirely unclear.

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?

Description clearly states the tool updates a note by editing only the sent fields, and explicitly prohibits editing id and created. This distinguishes it from create or full-write actions like zero_write_note.

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?

Description implies partial update usage ('แก้เฉพาะฟิลด์ที่ส่ง') but does not explicitly mention when to use this vs alternatives, nor provide prerequisites or exclusions. The sibling zero_write_note suggests a create/full-write counterpart, but no direct comparison is made.

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

zero_write_noteC

เขียนโน้ตถาวรลง 10_Notes — atomic/entity ต้องมี evidence ≥ 1

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
tagsNo
typeYes
linksNo
titleYes
domainNo
aliasesNo
privacyNo
evidenceNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided, so description must carry full burden. It reveals one behavioral rule (atomic/entity types require evidence ≥ 1) but omits critical traits like idempotency, whether updates are allowed, return behavior, or permissions. Transparency is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

Description is a single sentence, making it concise but severely under-specified for a tool with 9 parameters. It is front-loaded with the main action but lacks structure. The brevity detracts from usefulness.

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

Completeness1/5

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

Given the tool's complexity (9 parameters, no output schema, no annotations), the description is grossly incomplete. It omits parameter details, return format, prerequisites, side effects, and error handling, leaving the agent with insufficient context.

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%, and the description only adds meaning for two parameters (type and evidence) by stating the evidence requirement. Other parameters (title, body, tags, links, domain, aliases, privacy) are left completely undocumented in both schema and description.

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?

Description clearly states the tool writes a permanent note to a specific location (10_Notes) with a constraint for atomic/entity types. The verb 'write' and resource 'note' are specific, and the constraint distinguishes it from sibling tools like zero_update_note or zero_capture.

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 explicit guidance on when to use this tool versus alternatives. While the sibling list includes zero_update_note, the description does not indicate that this tool is for creation only or provide scenarios. Implied usage is weak.

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. 13 tool updatesv2.1.0
    • First observedzero_audit
    • First observedzero_capture
    • First observedzero_health
    • First observedzero_home
    • First observedzero_init
    • First observedzero_link
    • First observedzero_list_packs
    • First observedzero_nightly
    • First observedzero_read
    • First observedzero_resolve
    • First observedzero_search
    • First observedzero_update_note
    • First observedzero_write_note

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: alias resolution, initialization, capturing fleeting notes, writing permanent notes, updating, reading, searching, linking, listing packs, health checking, home refresh, nightly maintenance, and audit. No two tools overlap in functionality.

Naming Consistency3/5

All tools use the 'zero_' prefix, but the naming pattern is inconsistent: some are verb_noun (e.g., zero_write_note, zero_update_note, zero_list_packs) while others are single verbs (e.g., zero_init, zero_capture, zero_read, zero_search, zero_link, zero_health, zero_home, zero_nightly, zero_audit). This mix of styles reduces predictability.

Tool Count5/5

13 tools is well-scoped for a personal knowledge management system. Each tool serves a necessary function for note-taking, linking, searching, and system maintenance without overwhelming the agent.

Completeness4/5

The tool surface covers core CRUD operations (create via write_note/capture, read, update, search) plus linking and maintenance. The only notable gap is the absence of a delete note tool, which may be intentional but limits full lifecycle 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
    A
    maintenance
    Local-first knowledge base MCP server. Lets AI agents (Claude Code, Cursor, etc.) read and write your personal knowledge base through 20 MCP tools. Zero cloud dependency — all files stay on your machine.
    1,758
    664
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for AI agents to read, write, and organize notes in a local-first, human-in-the-loop note-taking app.
    6
    2
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Markdown + SQLite knowledge store with bidirectional wikilinks, exposed as an MCP server for AI agents to maintain an interconnected knowledge base.
    11
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Exposes a personal markdown-based second brain (Obsidian-style) as an MCP server, enabling agents to search, read, and write notes with privacy controls.
    MIT

Appeared in Searches

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/miru-zero/zero-brain'

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