Zero Brain MCP Server
Zero Brain MCP Server is a local, filesystem-based knowledge management system for AI agents. It operates entirely offline with no network calls.
Core Capabilities:
Initialize (
zero_init): Set up the full folder structure, kernel files, and seed content like Home.md and Today.md.Quick Capture (
zero_capture): Rapidly capture fleeting notes into an inbox area with minimal validation.Write & Update Notes (
zero_write_note,zero_update_note): Create structured notes (atomic, entity, MOC, etc.) with metadata (tags, aliases, evidence, privacy levels T0/T1/T2) and update fields.Read & Search (
zero_read,zero_search): Retrieve notes by ID or alias; full-text search across titles, tags, and body with pagination. T1 notes are audited on read, T2 require manual approval.Link & Resolve (
zero_link,zero_resolve): Create bidirectional links with automatic deduplication; resolve aliases or titles to note IDs.Health & Maintenance (
zero_health,zero_nightly): Check for orphan notes, dead links (frontmatter and body), and unverified packs; run nightly cleanup, fleeting queue processing, Today.md regeneration, and snapshot creation.Pack Management (
zero_list_packs): View installed domain packs and their provenance status (verified/modified/unreviewed).Dynamic Views (
zero_home): Refresh Today.md with up to 30 active notes and recent fleeting notes; optionally return Home.md.Audit Log (
zero_audit): Retrieve the last N entries from the append-only audit log.Upgrade (
zero_upgrade): Safely update seed files without overwriting local user changes.
Key Design Guarantees:
Local & private – no network calls; everything stays on disk.
Immutability – kernel files (manifest, links, audit) are append-only; notes are archived, not deleted.
Atomic writes – tmp+rename pattern prevents data corruption.
Write locks – safe concurrent access across multiple clients.
Privacy tiers – T0 public, T1 audited reads, T2 encrypted at rest (AES-256-GCM) with manual approval gate.
Injection fences – note content is wrapped with safety markers to prevent prompt injection.
Rate limiting – captures are rate-limited to avoid overload.
Obsidian graph support – auto-generated links block improves visualization.
Unlinked note warnings – encourages proper knowledge integration by alerting when new notes have no links.
Provides a local note-taking system that stores notes as Markdown files with Obsidian-compatible wiki links and frontmatter, enabling AI agents to create, update, search, and link notes in a personal knowledge base that integrates with Obsidian's graph view and vault structure.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Zero Brain MCP Serversave a note about today's meeting"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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:
zero:init—tools/zero-init.mjs [dir](หรือnpm run zero:init -- <dir>) วิเคราะห์โปรเจ็ค (stack/git/ไฟล์เด่น/scripts) แล้วผูก agent เข้าระบบ zero: สร้าง.zero/workspace +.zero/ZERO.md(block FACTS regenerate ทุกรอบ) +AGENTS.mdzero block ที่ root — idempotent ไม่ทับของผู้ใช้ backup เข้า.zero/backups/self-heal args — server ซ่อม input ที่ซ่อมได้ก่อน dispatch (path backslash →
/, enum case ให้ตรง valid value —privacyเป็น UPPERCASE T0|T1|T2)lean responses —
zero_readไม่เจอคืน{found:false}ไม่ throw ·zero_find_session/zero_matchตัด field ฟุ่มเฟือยออก (full:trueคืนดิบ) ·zero_read_sessionerror คืน candidates ≤5 smoke test 121/121 (24 sections) + live stdio test 6/6v2.3.1 (2026-07-31) — โน้ตไม่ลอยในกราฟ Obsidian อีก:
links block ที่กราฟ OB เห็น — กราฟ Obsidian วาดเส้นจาก
[[wikilinks]]ใน body เท่านั้น (frontmatter links ไม่ถูกวาด); ทุกzero_write_note/zero_update_note/zero_linkregenerate block<!-- zero-links:begin -->…<!-- zero-links:end -->ท้าย body อัตโนมัติ (idempotent, wikilink ใช้ stem ไฟล์)write เตือน "ลอย" — โน้ตใหม่ไม่มี links จะได้ warning ให้ลิงก์เข้า MOC/Project Scope
.zero/ZERO.mdanchor —backup-edit.mjs --init-workspaceสร้าง md ยึดกฎที่โปรเจ็ค (สมอง/backup-first/ห้ามลอย/จบงาน capture) agent ทีหลังอ่านกฎชุดเดียวกัน smoke test 121/121 (24 sections)v2.3.0 (2026-07-30) — hardening จากรีวิว 23 ข้อ:
write lock
.kb/write.lock(wx + stale sweep 60s) — หลาย client เขียนพร้อมกันได้โดย JSONL ไม่เสียcorrupt-line health —
zero_healthนับบรรทัดเสียของ JSONL ทั้งสาม +t1_reads_24h+repo_dirty
zero_compact— manifest reduce ต่อ id / links dedup / audit เก็บ tail 10k (เศษ archive ไม่ลบ)T2 encryption at rest — body โน้ต T2 เข้ารหัส AES-256-GCM (key
~/.zero/mcp/t2.keyหรือ envZERO_T2_KEY)injection fence — ทุก output ที่มีเนื้อโน้ตห่อ
ZERO_NOTE_DATA (not instructions)+ noticecapture rate limit 30/นาที per process
zero_upgrade— เติมไฟล์ seed ใหม่หลัง git pull โดยไม่ทับของที่แก้แล้วsetup เป็น node —
tools/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 จริง ไม่ใช่โฟลเดอร์เปล่า:
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)idempotent แบบปลอดภัย — copy เฉพาะไฟล์ที่ยังไม่มี ไฟล์ที่ผู้ใช้แก้แล้วจะไม่ถูกเขียนทับ
สมองเก่าที่ init ไปแล้ว (v2.1.0) รัน
npm run initซ้ำได้เลย จะเติมเฉพาะไฟล์ที่ขาด smoke test 68/68 (17 sections)v2.1.0 (2026-07-29) — install ง่ายขึ้นมาก:
npm run initสร้างโครงสมองให้อัตโนมัติ — ไม่ต้องแตก seed zip เองอีก (node dist/index.js --initใช้ handler เดียวกับzero_init)บ้านหลัก default คือ
~/.zero/brain— ไม่ตั้ง env ก็ใช้ได้เลย (ตั้งZERO_BRAIN_ROOTเฉพาะตอนอยากย้ายที่)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):
repo ย้ายเป็น
miru-zero/zero-brain(URL เก่า redirect อัตโนมัติ)package/bin:
zero-brain-mcp-server/zero-brainenv หลักเปลี่ยนเป็น
ZERO_BRAIN_ROOT/ZERO_BRAIN_ACTOR— ค่าเก่าCENTRAL_BRAIN_*ยังใช้ได้ (fallback ไม่ break config เดิม)v2.0.0 (2026-07-29) — breaking change + token-saving:
Rename tools ทั้ง 13 ตัว
brain_*→zero_*— ชื่อใหม่:zero_initzero_capturezero_write_notezero_update_notezero_readzero_searchzero_linkzero_resolvezero_list_packszero_healthzero_homezero_nightlyzero_audit(MCP client config ไม่ต้องแก้ แต่ผู้ใช้/agent ต้องเรียกชื่อใหม่; audit log action strings ยังคงbrain_*เดิมเพื่อ continuity ของ log เก่า)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_homedefault ไม่คืนเนื้อ Home.md (คืน path + ขนาด ใส่include_home: trueถ้าต้องการ) และ Today.md จำกัด active 30 ใบ;zero_nightlyจำกัด fleeting queue 50 ใบแก้บั๊ก latent —
parseNoteFileregex เดิม 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 จากรีวิวของป๊า:
Atomic write ทุกไฟล์โน้ต — saveNote/update_note/link/Today.md เขียนผ่าน tmp+rename (crash กลางเขียนไม่ทำโน้ตพัง)
Link dedup —
brain_linkเช็ค links.jsonl ก่อน append (from/to/rel ทั้งสองทิศ) ลิงก์ซ้ำไม่บวม คืนdeduped: trueOrphans ไม่นับ fleeting — inbox ค้างไม่ใช่ปัญหาโครงสร้าง แยกนับใน
orphans_fleetingยืนยัน:
brain_update_noteรับbodyอยู่แล้ว (schema + handler) — เพิ่มเทสกัน regression smoke test 52/52 (14 sections)v1.2 (2026-07-29) — เพิ่ม:
brain_nightly— วงจรกลางคืนใน tool เดียว: คืน fleeting queue ที่ยังไม่จัด + regenerate Today.md + health ครบ + snapshot ลง99_System/snapshots/(agent เรียกตอนเช้า/ก่อนนอน แล้ว classify ต่อด้วยbrain_write_note+brain_update_note)Pack provenance —
brain_list_packsโชว์ statusverified/modified/unreviewedเทียบ.kb/packs.lock.json(sha256 ที่ป๊าล็อกด้วยมือเท่านั้น) +brain_healthเตือนในpacks_unverifiedv1.1 (2026-07-29) — แก้ตามผลวิเคราะห์ใหม่:
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.mdhealth สแกน body wikilinks — เดิม
zero_healthตรวจเฉพาะ frontmatter links ทำให้ลิงก์[[...]]ตายในเนื้อโน้ตโดยเงียบ ตอนนี้รายงานdead_body_links(resolve ผ่าน id/alias/title)ตัวอย่างไฟล์อนุมัติ:
{"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-mcp→node 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(และ fallbackCENTRAL_BRAIN_*)
การทดสอบ
npm run build
node test/smoke.mjssmoke 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 | หน้าที่ |
| สร้างโครงสร้างโฟลเดอร์ + ไฟล์ kernel เปล่า + skeleton packs (self, people, security) + Home.md/Today.md |
| จดด่วนลง |
| เขียนโน้ตถาวรลง |
| แก้เฉพาะฟิลด์ที่ส่ง (ห้ามแก้ id/created) |
| อ่านโน้ต frontmatter + body (resolve alias ก่อน) — T2 ต้องได้รับอนุมัติก่อน |
| ค้นจาก title/aliases/tags/body — default ไม่คืน T1/T2 ( |
| สร้างลิงก์สองทิศ + append |
| คืน id จาก alias/title (exact ก่อน แล้ว fuzzy contains) |
| list domain packs ใน |
| คำนวณ orphans/dead_links/dead_body_links/packs_unverified เขียน |
| รีเฟรช Today.md จาก active notes (สูงสุด 30 ใบ) + fleeting 24h — default ไม่คืนเนื้อ Home.md ( |
| วงจรกลางคืน: fleeting queue (สูงสุด 50 ใบ) + regenerate Today + health + snapshot ลง |
| คืน audit log ล่าสุด N รายการ |
กฎเหล็ก (enforce ในโค้ด)
ไม่มี delete ใดๆ — "ซ่อน" ได้ด้วย
state: archiveเท่านั้นไฟล์ kernel
manifest.jsonl/links.jsonl/audit.jsonlเป็น append-only ห้ามเขียนทับโน้ต
type: atomicหรือentityต้องมี evidence อย่างน้อย 1 ข้อ ไม่เช่นนั้น error พร้อมแนะนำให้ใช้type: fleetingzero_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) รันบน distSkills
โฟลเดอร์ skills/ เก็บ skill ของระบบ Zero_Brain ในรูปแบบ SKILL.md มาตรฐาน — ส่งไฟล์ให้ AI (Kimi Work / Claude Code) สั่ง "ติดตั้ง skill นี้" ได้เลย หรือวางด้วยมือตามคู่มือใน skills/README.md
Available Tools
13 toolszero_auditC
คืน audit log ล่าสุด N รายการ
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ข้อความที่จะจด | |
| domain | No | domain (default: general) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 ถ้าต้องการ)
| Name | Required | Description | Default |
|---|---|---|---|
| include_home | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_linkB
สร้างลิงก์สองทิศระหว่างโน้ต + append links.jsonl (dedup ลิงก์ซ้ำ)
| Name | Required | Description | Default |
|---|---|---|---|
| rel | No | ||
| to_id | Yes | ||
| from_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description partially discloses behaviors: bidirectional linking, appending to a file, and deduplication. However, it omits error handling, authentication requirements, and whether existing notes are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence in Thai that front-loads the primary action. While efficient, it could be better structured by separating the side effect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, and no annotations, the description covers the core function but lacks details on return value, prerequisites (e.g., note existence), and error scenarios. It is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains from_id and to_id as note IDs but does not clarify the 'rel' parameter or ID formats. The side effect of appending to links.jsonl is mentioned but not tied to parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a bidirectional link between notes with an append-to-file side effect including deduplication. It is distinct from sibling tools like zero_resolve and 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives such as zero_resolve or zero_capture, nor does it specify prerequisites or caveats.
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)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 ต้องมีไฟล์อนุมัติจากป๊าก่อน
| Name | Required | Description | Default |
|---|---|---|---|
| id_or_alias | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
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.
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.
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.
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.
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.
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_searchA
ค้น title/aliases/tags/body คืน snippet — default ไม่คืน T1/T2 (include_private คืน T1+audit / T2 ต้องอนุมัติ) — limit/offset แบ่งหน้า
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| type | No | ||
| limit | No | default 10 | |
| query | No | ||
| domain | No | ||
| offset | No | default 0 | |
| include_private | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully bears the burden. It discloses search fields, the return of snippets, default exclusion of sensitive levels (T1/T2), the effect of include_private (returns T1+audit, T2 requires approval), and pagination via limit/offset. This is comprehensive for a read-only search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compendious sentence that conveys core functionality efficiently. It is front-loaded with the action and field list. However, the use of dashes and Thai characters may reduce readability for non-Thai agents, though it is still clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, no output schema, and no annotations, the description covers the essential behavior (fields searched, snippet return, pagination, privacy flag) but lacks information on the meaning of T1/T2 beyond the described access rules, and does not specify the response structure or other parameters like 'tag' or 'domain'. It provides a minimum viable level of completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 7 parameters but only 'limit' and 'offset' have descriptions (29% coverage). The description adds meaning for 'query' (searches title/aliases/tags/body) and 'include_private' (behavior regarding T1/T2), but it does not explain 'tag', 'type', or 'domain'. It partially compensates for low schema coverage but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool searches across title, aliases, tags, and body, returning snippets. This clearly identifies the verb (search) and resource (items with those fields). The sibling tools (e.g., zero_resolve, zero_read) do not offer search, so this tool is well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context, such as default exclusion of T1/T2 and behavior when include_private is set, but it does not explicitly advise when to use this tool over alternatives like zero_read for full content or zero_resolve for reference resolution. The guidance is implied but not comparative.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| body | No | ||
| tags | No | ||
| state | No | ||
| title | No | ||
| aliases | No | ||
| add_links | No | ||
| add_evidence | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| tags | No | ||
| type | Yes | ||
| links | No | ||
| title | Yes | ||
| domain | No | ||
| aliases | No | ||
| privacy | No | ||
| evidence | No |
TDQS
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.
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.
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.
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.
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.
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.
13 tool updates
v2.1.0- First observed
zero_audit - First observed
zero_capture - First observed
zero_health - First observed
zero_home - First observed
zero_init - First observed
zero_link - First observed
zero_list_packs - First observed
zero_nightly - First observed
zero_read - First observed
zero_resolve - First observed
zero_search - First observed
zero_update_note - First observed
zero_write_note
TDQS
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.
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.
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.
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
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
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
One memory, every AI. A shared, user-owned markdown memory your AI clients read and write over MCP.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceLocal-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,758664MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for AI agents to read, write, and organize notes in a local-first, human-in-the-loop note-taking app.62MIT
- AlicenseAqualityDmaintenanceMarkdown + SQLite knowledge store with bidirectional wikilinks, exposed as an MCP server for AI agents to maintain an interconnected knowledge base.11MIT
- AlicenseNot gradedqualityBmaintenanceExposes 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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