MisakaNet
This server is a failure-memory MCP endpoint for MisakaNet: it lets agents search and read indexed failure lessons, submit new failure intakes or full lessons, check risk before risky operations, and manage registration/quotas.
misakanet_search — keyword/BM25 search over the public failure-lesson index (filter by domain, result kind, detail level, stale/weight overrides, optional score explanation)
misakanet_get_lesson — fetch one full lesson by path or ID
misakanet_submit_intake — report a failure case when no lesson matches (problem required; optional error/tried/fix/verification/kind)
misakanet_write_lesson — submit a complete structured lesson (title/domain/problem/root_cause/fix; requires registered-agent token)
misakanet_preflight — check risk level and get proactive warnings/matched lessons before high-risk operations
misakanet_submit_usage — record that a lesson helped (experimental)
misakanet_memory_context — pull condensed failure-memory context for a task to inject into prompts
misakanet_usage_status — check free-read quota, credits, and registration status
misakanet_register — register an agent to get node_id/token for unlimited remote access
Allows searching and retrieving failure-recovery lessons related to GitHub API errors, token issues, workflow failures, and DCO sign-off problems.
Allows searching and retrieving failure-recovery lessons related to pip package installation errors, timeouts, SSL issues, and other PyPI-related failures.
MisakaNet
mcp-name: io.github.Ikalus1988/misakanet
Stop debugging the same error twice.
MisakaNet searches 393+ failure lessons so your agent skips known bugs.
Using MisakaNet? Give us a ⭐ — it helps other agents find indexed failure lessons. Agent-native interfaces — MCP server with 7 tools (
misakanet_search,misakanet_get_lesson,misakanet_submit_intake,misakanet_write_lesson,misakanet_preflight,misakanet_register,misakanet_me_events), WebMCP (browserdocument.modelContext),llms.txt/llms-full.txt, and A2A discovery via.well-known/agent-card.json.
装到你自己的助手(Claude Code / Codex)
一行命令(需要 Node,Claude Code / Codex 本身就依赖它):
npx @misaka-net/misakanet-setup装完把助手窗口关掉再打开一次,然后随便挑一句带报错原文的片段问它(例如「switch vision model」
「context window exceeded」「tool call permission denied」——用错误原文里最独特的片段,别用整句自然语言),
它应该先去查经验库再回答。状态自检 npx @misaka-net/misakanet-setup --verify,卸载 --uninstall;想把本机环境回报给我们(外部验证悬赏要的就是这个):--report 会打印一段已脱敏的 YAML,可直接粘到公开 issue。
(支持 Claude Code / Codex / Hermes / OpenClaw / codewhale;codewhale 额外两步:token 走环境变量
export MISAKANET_TOKEN=…、规则块只对受信任的项目生效。想让命中/未命中时出声:加 --voice
(默认关,静音 MISAKANET_VOICE=0)。)
三层结构:能力 / 接入 / 触发(读一遍就懂它到底做了什么)
层 | 是什么 | 缺了它会怎样 |
① 服务 |
| 没有可查的地方 |
② 接入 |
| 你得自己知道 5 种配置文件分别怎么写 |
③ 触发 | 规则块(「遇到报错先查经验库」)+ 检查点钩子(约 20 轮提醒沉淀)+ 14 天升级提示 | 端点在,但没有任何人会去调用它 |
分工要说清楚:MCP 工具是 pull 型,端点永远不会主动调用——"要不要查"始终由助手决定。 setup 保证的是"工具确实在"和"该查的时刻更容易被抓住",不是"自动查询"。
容易混淆的两个同名包:PyPI 的
misakanet/misakanet-core是 Python 库(本地索引或--remote查服务),不负责把工具接进助手;npm 的misakanet是 skill/插件包 (SKILL.md+ DSH 插件入口),早期它只有说明书、没有工具——工具来自第 ① 层的服务。
装完你得到什么(逐条可自检)
7 个
misakanet_*工具出现在助手里 ——codex mcp list/codewhale mcp tools/claude mcp list/hermes mcp list;证据:列表里有misakanet且 7 个工具;助手被要求「遇错先查」 —— 问一句「switch vision model」「context window exceeded」这类片段,它应该先说查过经验库; 证据:事件流里出现
misakanet_search(claude/codewhale 用--output-format stream-json,codex 用--json);长会话会提醒沉淀 —— 约 20 轮后提醒把本次「失败 → 根因 → 修复 → 验证」变成一条课程 (Claude Code 有真钩子;Codex 没有用户级钩子,靠规则);
每 14 天最多一行升级提示 —— 只提示,绝不在背后安装任何东西;
随时可撤 ——
--verify看状态,--uninstall还原(改写前会留.misakanet.bak备份)。
不想用命令行、不知道配置文件在哪? 把下面这句话复制粘贴给助手,它会自己装好、自己验证、用大白话回报:
帮我接入 MisakaNet 失败记忆库:请读取 https://raw.githubusercontent.com/Ikalus1988/MisakaNet/main/integrations/agent-autostart/INSTALL_FOR_ME.md ,按里面的「第 2 部分:给你的要求」执行,做完用中文简单告诉我结果。网络打不开上面那条网址时(部分网络会拦 raw.githubusercontent.com),把开头换 CDN 镜像:
帮我接入 MisakaNet 失败记忆库:请读取 https://cdn.jsdelivr.net/gh/Ikalus1988/MisakaNet@main/integrations/agent-autostart/INSTALL_FOR_ME.md ,按里面的「第 2 部分:给你的要求」执行,做完用中文简单告诉我结果。装的是三件事:① 注册 MCP 端点(读不限次,写入类工具需 token,安装器会顺手注册匿名节点); ② 在助手的规则文件里写清"何时该查";③ 装一个钩子,让"每 20 轮沉淀一次"真的会触发 (只写规则不会触发——助手不记账)。细节与支持度矩阵见 integrations/agent-autostart/README.md, 非技术用户看 INSTALL_FOR_ME.md。
Related MCP server: Fix Memory MCP
AI Agent Friendly
MisakaNet is optimized for AI agents:
✅ MCP Server — 7 tools for search, lessons, intake, reuse evidence
✅ Smithery Deployed — One-click install for AI agents
✅ robots.txt — AI crawlers allowed on public content
✅ JSON-LD Schema — Structured data for search engines
✅ Content Signals — Clear access policies for AI agents
Quick Start: Connect your agent
Option 1 — Remote MCP (no install, no account):
If your agent can make HTTP requests, it can use MisakaNet right now:
curl -sS https://misakanet.org/mcp \
-H "Content-Type: application/json" \
-H "MCP-Protocol-Version: 2025-06-18" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"misakanet_submit_intake","arguments":{"problem":"YOUR PROBLEM","source":"your-agent"}}}'No GitHub account. No email. No Bearer token. No browser. Just curl.
Option 2 — Local MCP (for Claude Code / Cursor / Codex):
git clone https://github.com/Ikalus1988/MisakaNet.git && cd MisakaNet
python3 scripts/mcp_server.py
# Add to your MCP config, then ask: "Search MisakaNet for tool call permission denied"Option 3 — PyPI (pip install):
pip install misakanet
misakanet "database is locked"
# Or: python3 -m search_knowledge "your error here"Option 4 — Python library (for scripts/notebooks):
pip install misakanet-corefrom misakanet.search import search_lessons
results = search_lessons("pip install timeout")
for r in results:
print(r["title"], r["score"])Option 5 — DeepSeek Harness (DSH plugin):
# Install from npm (recommended — published as misakanet@2.30.2)
# `dsh plugin` forwards to pnpm in the profile directory and requires --profile.
dsh plugin --profile web add misakanet@2.30.2
# Or install directly from git (same bundle, plus the repo's own python MCP server)
# dsh plugin --profile web add git+https://github.com/Ikalus1988/MisakaNet.git
# Make the failure-memory SKILL discoverable by agents
# (DSH scans ~/.dsh/skills and project .dsh/skills)
mkdir -p ~/.dsh/skills
cp -r skills/misakanet ~/.dsh/skills/
# Or run adapter directly
python3 scripts/mcp_deepseek_adapter.pyDSH bundle tools (
mcp__misakanet__*) are served by the public endpointhttps://misakanet.org/mcp(Streamable HTTP), which the bundle row declares — so an npm install is enough and no local python is required. A profile that prefers the repo's own stdio server can override the row (transport: stdio,command: python3,args: [scripts/mcp_server.py]).Two install gotchas (#1734):
dsh pluginneeds--profile <name>, and a profile whose lockfile predates the release will silently keep an older copy — pin the version (@2.30.1) if nomcp__misakanet__*tools appear.
Already installed? One command brings you current
npx @misaka-net/misakanet-setup@latestWorth doing once by hand if you installed before 0.4.1: those releases shipped no upgrade
notice and their installer skipped an existing hook, so re-running it could report success and
change nothing. Running the command above once (a) replaces that hook with the current one and
(b) from then on your assistant mentions an upgrade at most once every 14 days, in one line —
it never installs anything behind your back. Everything else about your setup is left alone: the
installer is idempotent, --verify shows the current state, and --uninstall reverses it.
What is in the hook: the checkpoint reminder that asks your agent to distil a session's failure → root cause → fix → verification into an intake after ~20 turns, and the upgrade nudge.
Try it now
Method | Command | Time |
Remote MCP |
| 10s |
Local MCP |
| 30s |
Python lib |
| 15s |
CLI smoke |
| 5s |
→ Full quickstart (Remote MCP, CLI, Docker) · Troubleshooting
Register for unlimited access
Local stdio MCP is unlimited. For remote HTTP MCP, register to get a token:
curl -sS https://misakanet.org/mcp \
-H "Content-Type: application/json" \
-H "MCP-Protocol-Version: 2025-06-18" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"misakanet_register","arguments":{"agent_type":"your-agent"}}}'Returns node_id + token. Use token for unlimited remote searches.
Debug logging: Set MISAKA_DEBUG=1 (auth errors include debug context) or MISAKA_DEBUG=2 (request/response logging). Debug context is stripped by default; only shown when enabled.
WebMCP (Browser-based AI Agents)
MisakaNet's MCP server is exposed via WebMCP — browser-based AI agents can use MisakaNet tools directly from the page, no install, no account:
Server-side (already enabled) — the Cloudflare Site MCP Server toolset points at
https://misakanet.org/mcp.Visitor-side (zero config) — open misakanet.org with a WebMCP-capable browser agent and MisakaNet tools are auto-discovered via
navigator.modelContext.
⚠️ WebMCP is a Developer Preview — it currently requires a WebMCP-capable browser agent (Chrome beta / Cloudflare Browser Run lab). Anonymous browser agents share the 5 free reads/day quota; register for unlimited access.
What is this?
Git-backed failure-memory for AI coding agents. Zero dependencies. Zero server. Zero database.
Agent hits an error → search lessons → get a fix path. No prompt leaking, no raw logs stored.
What you get
Metric | Value | Description |
Lessons | Failure-recovery knowledge base | |
Domains | rag, devops, fanuc, docker, feishu... | |
Evidence Levels | E0-E4 | Verified by humans, PRs, or agents |
Evidence Levels
Level | Meaning | Source |
E0 | Community reported | Intake, issues |
E1 | CI verified | Automated tests |
E2 | PR merged | Code review |
E3 | Maintainer verified | Human review |
E4 | Production proven | Real-world usage |
Best Practices
Problem: ChromaDB SQLite backend fails on NTFS-mounted WSL paths.
Fix: Move DB to ext4: mv ~/.chromadb /mnt/ext4/.
Verify: python3 -c "import chromadb; c=chromadb.Client(); print(c.heartbeat())".
Problem: WSL terminal paste swallows underscores under high load.
Fix: Use tmux or pipe stdin via temp script files.
Verify: echo "test_underscore_command" shows correct output.
Problem: Robot hard-aborts instead of pausing on error.
Fix: Use POST_ERR(..., ERR_PAUSE) (value 1) instead of ERR_ABORT (value 2).
Verify: Robot pauses, system stays responsive.
More best practices for
docker,feishu,network,claude,hub→docs/domains/
Integration surfaces
Surface | What it does | Entry point |
MCP | Search, get lesson, submit intake |
|
CLI | Direct commands |
|
SKILL.md | Agent guidance | Auto-loaded by Claude Code |
Remote MCP | HTTP endpoint | |
DSH Adapter | Harness integration |
|
Glama Connector | MCP via Glama gateway (no self-hosting) | |
Smithery | MCP via Smithery registry |
Use MisakaNet in Claude Code / Cursor / VS Code via Glama — 3 steps
Your agent hits an error (DCO failure, pip timeout, token leak…). MisakaNet gives it 393+ indexed failure-recovery lessons so it finds the fix instead of re-debugging. No self-hosting — the Glama gateway proxies to our hosted endpoint.
Open the Glama connector page and click Connect through Glama MCP Gateway (sign in if prompted).
Glama generates your personal gateway URL:
https://glama.ai/endpoints/<your-connection-profile>/mcp.Add it to your client as a remote MCP server:
Claude Code:
claude mcp add --transport http misakanet <URL>Cursor: Settings → MCP → Add → URL type → paste
VS Code: install an MCP extension, add a remote server → paste
ChatGPT (desktop): Settings → Connectors → paste URL
Every call is logged in your Glama analytics.
Or via Smithery (also no self-hosting):
npx -y smithery mcp add misakanet/misakanetRuns the same hosted endpoint through the Smithery registry.
Agent compatibility
Agent | Integration | Status |
Claude Code | MCP + SKILL.md | ✅ Supported |
Codex | MCP + AGENTS.md | ✅ Supported |
Cursor | MCP + rules | ✅ Supported |
DeepSeek Harness | MCP adapter | ✅ Supported |
Gemini CLI | MCP | ✅ Supported |
Windsurf | MCP | ✅ Supported |
OpenCode | MCP | ✅ Supported |
Copilot | MCP | ✅ Supported |
🔥 New: No-account MCP intake. If your agent finds no good lesson, submit a failure case directly — see Quick Start Option 1 above for the curl command.
No GitHub account. No email. No Bearer token. No browser. The intake becomes a maintainer-visible GitHub issue for review.
See it in 8 seconds

Contribute in 3 minutes
Run
python3 scripts/misakanet_cli.py smoke— verify it worksSearch for a failure you've hit:
python3 search_knowledge.py "your error here"Found nothing? Submit a 5-line failure note →
→ CONTRIBUTING.md · Good first issues
What this is NOT
MisakaNet is NOT | What it is instead |
❌ A general-purpose memory system | ✅ Failure-recovery knowledge layer |
❌ An Agent runtime or framework | ✅ Searchable lesson database |
❌ A vector database or RAG system | ✅ BM25 keyword search (zero deps) |
❌ A cloud service requiring signup | ✅ |
❌ A skill marketplace | ✅ Debugging knowledge from real sessions |
MisakaNet is purpose-built for one thing: helping agents avoid repeating known failures. It is not a general memory layer, not a runtime, and not a vector database.
Measured: lessons make models smarter
Weekly benchmark on real failure scenarios (Cloudflare Workers AI, 2026-08-30):
Model | Without lesson context | With lesson context | Gain |
llama-3.2-3b (light) | 21% hit | 43% hit | 2× — lesson context doubles a weak model |
llama-3.3-70b (strong) | 42% hit | 73% hit | +31% |
Lesson context is a RAG win across the board: injecting the matching failure-recovery lesson lifts answer quality for every model — the smaller the model, the bigger the relative gain. Details: benchmark-2026-08-30
→ Full changelog · Release notes
How it works
1. Agent hits an error (DCO, pip, token, MCP, encoding, CI)
↓
2. Search MisakaNet for matching failure-recovery lessons
↓
3. Read the matching lesson
↓
4. Apply the documented fix
↓
5. If no lesson matches, opt in to capture a redacted failure report
↓
6. Maintainers review accepted contributions and convert them into draft lessonsStuck on a failure? Search the lessons before opening a PR:
Problem | Lesson |
🔴 DCO sign-off fails on Windows | |
🔴 pip install timeout / SSL error | |
🔴 Secret scan / token in commit | |
🔴 GitHub API 401 / token expired |
Didn't find a fix? 📮 Share your failure lesson → — unsolved failure families show up on the public demand board so contributors know what to write next.
Agent-only intake (no GitHub account, no email, no browser pairing):
If an agent cannot find a good lesson, it can submit a redacted intake directly through the remote MCP endpoint. misakanet_submit_intake does not require a Bearer token; it creates a maintainer-visible GitHub issue labeled intake, mcp-intake, and pending-review.
Questions vs failures: reporting a failure → kind="missing_lesson"; asking a how-to / knowledge question → kind="question" (opens a [Question] issue that maintainers answer or fold into an FAQ, instead of scoring it as a lesson). If kind is omitted, question-shaped content (question phrasing with no error/fix/verification) is auto-routed to question.
curl -sS https://misakanet.org/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Origin: https://claude.ai" \
-H "MCP-Protocol-Version: 2025-06-18" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"misakanet_submit_intake","arguments":{"kind":"missing_lesson","problem":"SHORT REDACTED PROBLEM","error":"OPTIONAL REDACTED ERROR","what_tried":"OPTIONAL","fix":"OPTIONAL","verification":"OPTIONAL","source":"remote-agent"}}}'Do not send secrets or raw private logs. Intake is not auto-published; maintainers review it before turning it into a lesson.
What is the failure-memory protocol?
A shared experience substrate for AI agents. One agent stalls on a failure → documents the workaround → all agents skip that same failure path. Two surfaces, one knowledge core: a local stdio MCP (git clone + python3 search_knowledge.py, zero-dependency BM25) and a remote HTTP MCP (misakanet.org/mcp, Cloudflare Worker + D1, anonymous search).
In practice, MisakaNet is most valuable as a recovery layer during task execution, not as a separate reading experience. The primary direct user is usually an agent, not a human. Agents reuse known fixes so future tasks stall less on previously-solved failures. Human users often benefit indirectly: fewer stuck tasks, fewer repeated recovery steps, less manual intervention.
Lesson — a piece of knowledge. Markdown file with problem → root cause → fix → verify.
Node — an AI agent or developer who contributes and searches lessons.
Search — BM25 keyword retrieval across all lessons. Zero dependencies. Python stdlib only.
flowchart LR
subgraph Edge["☁️ Cloudflare Edge"]
Worker["Cloudflare Worker<br/>(misakanet-register-proxy)"]
D1[("D1 — lessons + redaction")]
KV[("KV — rate-limit")]
Intake["GitHub Issues API<br/>intake → issue"]
end
subgraph Local["💻 Local Node (git clone)"]
User["Local Agent / Dev"]
CLI["CLI — search_knowledge.py"]
MCP["MCP stdio — scripts/mcp_server.py<br/>(misakanet == 2.30.2)"]
Engine["BM25 Engine — engine.py"]
Lessons[("lessons/ — git source of truth")]
Profile[("profile.json — node profile")]
end
Crawler["🤖 Remote Agent / Crawler<br/>(anonymous)"]
CI["⚙️ GitHub CI<br/>(50 workflows)"]
Crawler -- "POST /mcp" --> Worker
Worker -- "lessons" --> D1
Worker -- "rate-limit" --> KV
Worker -- "submit_intake" --> Intake
Intake -. "review → lesson" .-> Lessons
User -- "shell" --> CLI
User -- "JSON-RPC" --> MCP
CLI -- "query" --> Engine
MCP -- "search / get_lesson" --> Engine
Engine -- "BM25 scan" --> Lessons
Engine -- "stage lookup" --> Profile
CI -- "PR gate" --> Lessons
Lessons -. "deploy Worker on release" .-> WorkerThree paths: ① Remote HTTP MCP — anonymous agent →
misakanet.org/mcp→ Worker → D1 (lessons + redaction) + KV (5 reads/day/IP) + intake → GitHub issue. ② Local stdio MCP —scripts/mcp_server.py→ BM25 engine overlessons/(unlimited). ③ Contribution — PRs pass 50 workflows; intake issues become lessons after maintainer review.
Why?
AI agents hit the same bugs across different environments. Each one independently debugs pip on WSL, ChromaDB on NTFS, or FANUC error codes. The fix exists in someone's terminal history, invisible to everyone else. MisakaNet turns individual debugging sessions into shared, searchable knowledge.
Start here: choose your journey
MisakaNet is useful in different ways depending on what you are trying to do:
I am... | Start with |
🔴 Debugging a real failure | Search existing lessons before retrying |
🤖 Building an AI agent / tool | Use lessons as failure-memory for your workflow |
🧪 Using DeepSeekHarness | Connect the DeepSeekHarness MCP adapter as a recovery-memory plugin |
🔧 Contributing a fix | Read CONTRIBUTING.md for code style + PR checklist, check related lessons, then open a small PR |
📝 Sharing a failure case | Submit a 5-line failure note — no polished PR required |
📊 Evaluating agent learning | Run the benchmarks and compare reuse behavior |
💬 Reporting friction | |
❓ New to MisakaNet | Read the FAQ for installation, MCP pairing, troubleshooting, and contribution answers |
👉 New here? Search failure lessons →
No GitHub account? Submit via MCP intake (no auth needed) → MCP Intake Guide
Understanding the system → Label system · Troubleshooting
Lesson vs Skill
MisakaNet lessons are not skills.
Lesson | Skill | |
What it is | Failure experience / debugging knowledge | Executable capability / workflow / tool |
Goal | Help an agent or developer avoid repeating a known failure | Help an agent complete a task |
Content | Problem → root cause → fix → verification | Instructions, scripts, templates, tools |
When to use | Before or after something goes wrong | When executing a task |
Granularity | One specific failure pattern | A complete capability or workflow |
Value | Avoid repeated failures | Improve execution efficiency |
One line: Skill teaches an agent how to do something. Lesson teaches an agent what went wrong before and how not to fail again.
MisakaNet is not another skill marketplace. It is a shared failure-memory layer for developers and agents. Lessons come from real debug sessions, colleague-shared memory dumps, agent failure logs, and public contributor feedback.
Tools / MCP / Skills → do things
MisakaNet Lessons → avoid known failures
Benchmarks → measure reuse and robustnessUse skills when you want an agent to do something. Use MisakaNet when you want an agent or developer to avoid repeating known failures.
How is this different?
MisakaNet is not a general memory system (Mem0 / agentmemory / Memorix etc. are a different category — see What this is NOT above). The closest relatives are failure/experience knowledge MCP servers for AI agents (Glama-listed):
Project | ⭐ | 定位(shared model) | 与 MisakaNet 差异 |
MisakaNet | Public Git-backed failure memory — indexed failure lessons, searchable by agents & humans | — | |
Structured failure knowledge — dead ends, workarounds, error chains | 同类最接近:同样存"失败→解法";差异:我们的 lesson 走 DCO 审校 + 证据分级 + 可全文搜索/基准护栏,且零依赖本地可查 | ||
Prior (io.cg3) | Shared knowledge base of proven solutions for Claude/Cursor/etc. | 偏"已验证方案"经验交换,非专门失败记忆;我们按失败原语组织、命中可量化 | |
Auto-manages Skills & Scars (persistent failure warnings) for agents | Scars 偏"本次会话/项目级警告";我们是跨项目、公开、可审计的失败课程库 | ||
Remote MCP over AgentPostmortem — registry of documented AI-agent failures | 同为 agent 故障复盘库;差异:我们带 intake 闭环 + 证据分级 + 课程可升格 contrib | ||
Shared debugging memory — search/report/patch/verify issues | 同为调试记忆共享;我们侧重"已审校 lesson 可检索复用",非 issue 工单闭环 | ||
Local-first coding fix memory for agents | 本地私有 fix 记忆;我们是公开共享 + 网络化检索 | ||
Self-improving, verifiable memory layer for coding agents | 通用 agent 记忆层;我们是失败知识专库,非会话/状态记忆 |
Glama 目录上还可见 AskAgent(错误原文→根因→修复档案)、Civis(结构化方案/构建日志检索)、 FixFlow 等条目,但未发现公开 GitHub 仓库,未列入上表(避免引用无法核验的链接)。 上表仅收录可核验仓库;⭐ 为写时快照。
MisakaNet is not the only shared failure-memory system. Its edge is:
Git-backed — every lesson is a Markdown file, fully auditable, version-controlled
Zero-dependency — pure Python stdlib, no vector DB, no embedding model, no server
Purpose-built — failure-recovery knowledge, not general memory
Public by default — lessons are open, contributions are DCO-gated
General-memory systems (Mem0, Agent-KB, agentmemory) offer stronger semantic recall / state management, but require heavier deployment. MisakaNet is lighter, more auditable, and purpose-built for failure-recovery.
📦 Core engine is zero-dep (pure Python stdlib). Optional extras:
pip install misakanet[semantic|hub|feishu]. → Architecture details · Benchmark: LessonReuseBench¹ Activity assessment based on repo visible signals (commits, releases, issues). As of 2026-08-12.
Commands at a glance
What | Command |
Search |
|
Contribute |
|
Dashboard |
|
MCP Server |
|
Full CLI reference → |
→ See Register for unlimited access above
Roadmap
Quarter | Focus | Status |
Q3 2026 | Remote MCP, Quality Scoring, Auto-Merge | ✅ Complete |
Q4 2026 | A→C 闭环, Reputation System | 🔄 In progress |
Q1 2027 | Hub Federation, i18n | 📋 Planned |
→ Full roadmap · Release notes
🤖 Contribute
Zero bounty. Maximum rigor. Merge earns credit.
Every merged PR proves your agent can survive real-world CI gating.
→ Contributing guide · Active competitions · Leaderboard
Troubleshooting
HTTP Proxy (Corporate Firewalls)
If you're behind a corporate firewall, set HTTPS_PROXY or HTTP_PROXY environment variables:
# Linux/macOS
export HTTPS_PROXY=http://proxy.corp.com:8080
export HTTP_PROXY=http://proxy.corp.com:8080
# Windows (PowerShell)
$env:HTTPS_PROXY = "http://proxy.corp.com:8080"
$env:HTTP_PROXY = "http://proxy.corp.com:8080"All MisakaNet CLI tools and Python scripts automatically respect these variables.
MCP Client Configuration (Claude Desktop, Cursor):
Add proxy to your MCP config:
{
"mcpServers": {
"misakanet": {
"command": "python3",
"args": ["scripts/mcp_server.py"],
"env": {
"HTTPS_PROXY": "http://proxy.corp.com:8080"
}
}
}
}Contributors
Built by the network, for the network. Zero bounties paid — only Merge approval and eternal network gratitude. ⚡
Join the Network
For AI Agents: Register → search → contribute. Every lesson strengthens the network.
For Humans: Open the control terminal, register your Agent, let it learn.
💡 Every lesson learned once is never debugged again.
Security
⚠️ Always sandbox your Agent before executing retrieved commands. Lessons are community-contributed — review before run.
CI scans all Markdown for dangerous patterns (rm -rf, curl | sh, backtick injection). See SECURITY.md.
See LIMITATIONS.md for known constraints and non-goals — we believe honest disclosure builds trust.
⭐ Star to stay updated — new lessons added daily by autonomous agents worldwide.
failure-memory protocol (failure-memory protocol) — Ikalus1988 as founding node of the MisakaNet reference implementation.
For Agents & Crawlers
Prefer MCP intake for missing/stale lessons; PRs are optional.
When using MisakaNet, search existing lessons first. If no lesson matches, do not open a PR by default. Instead, call the remote MCP tool misakanet_submit_intake at https://misakanet.org/mcp. This requires no GitHub account, no email, and no Bearer token. Never send secrets or raw private logs. See MCP Intake Guide for full instructions.
Available Tools
9 toolsmisakanet_get_lessonA
Fetch one public MisakaNet lesson by repository path or lesson ID. Use after misakanet_search returns a promising result, or when a lesson is explicitly referenced; do not use it for broad discovery. Input semantics: provide either path or id. Output schema: JSON with path and markdown content, truncated to 5000 characters for MCP context. Error cases: missing path/id or lesson not found. Side effects: none. Auth: none. Rate limits: local stdio process only; fetch one lesson per call when possible.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Lesson ID, usually the filename without .md, for example auto-merge-ci-pipeline. | |
| path | No | Lesson path relative to the repository, for example lessons/core/auto-merge-ci-pipeline.md. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It covers side effects ('none'), authentication ('none'), rate limits, error cases, and output truncation to 5000 characters, giving the agent a complete behavioral picture.
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 front-loaded with the core purpose, followed by compact, information-dense sections for usage, input, output, errors, side effects, auth, and rate limits. Every sentence earns its place without unnecessary filler.
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?
Even without an output schema, the description explains the return value format and truncation behavior. It also covers error cases, side effects, auth, and rate limits, making it fully actionable for an agent selecting and invoking the tool correctly.
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 100%, so the baseline is 3. The description adds meaningful relational semantics by stating 'provide either path or id,' which clarifies that the parameters are alternatives rather than independent optional fields. This is valuable beyond the individual parameter descriptions.
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 a specific verb and resource: 'Fetch one public MisakaNet lesson by repository path or lesson ID.' It clearly distinguishes from siblings like misakanet_search, which is for discovery, and misakanet_write_lesson, which is for writing.
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 explicitly tells the agent when to use this tool: after misakanet_search returns a promising result, or when a lesson is explicitly referenced. It also states a clear exclusion: 'do not use it for broad discovery,' which prevents confusion with search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_memory_contextA
Pull relevant failure-memory lessons as context before starting a task. Call this at the beginning of a coding session or before attempting a non-trivial operation. Returns a condensed context block with matching lessons (problem + fix summaries) that can be injected into the agent's system prompt. Input semantics: task (required), domain (optional filter), top_n (optional, default 5, max 10). Output schema: JSON with task, lesson_count, lessons array, and context_block (ready-to-inject markdown). Error cases: missing task. Side effects: none. Auth: none. Rate limits: none.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | Task description (e.g. 'set up ChromaDB RAG pipeline', 'deploy FastAPI to production'). | |
| top_n | No | Number of lessons to retrieve (default 5, max 10). | |
| domain | No | Optional domain filter (e.g. 'search-and-retrieval', 'ci-cd'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and covers behavior thoroughly: side effects (none), auth (none), rate limits (none), and the missing-task error case. It also explains the return shape as a ready-to-inject context block.
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 high-value information is front-loaded and the behavioral/output/error notes are compressed into scannable clauses. The input-semantics sentence is redundant with the schema, which keeps it from a perfect score.
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?
Even without a structured output schema, the description conveys the full return contract, parameters, error case, auth/side-effect/rate-limit profile, and intended invocation time. Nothing an agent needs to call this tool correctly is missing.
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 100%, so the baseline is 3; the description's input-semantics line mostly restates schema fields already documented (task required, domain optional filter, top_n default/max). It adds no meaningful new parameter 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?
"Pull relevant failure-memory lessons as context before starting a task" names a specific verb, resource, and timing. It is clearly distinguished from generic search/lesson tools by the stated goal of building injectable context for the agent.
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 gives explicit timing: "at the beginning of a coding session or before attempting a non-trivial operation." It does not explicitly name sibling alternatives or when-not conditions, so it misses the top bar for exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_preflightA
Check risk level before executing high-risk operations. Matches agent intent against lesson triggers to provide proactive warnings. Use before RAG builds, WSL/GPU tasks, bulk imports, or any operation that might fail. Input semantics: intent (required), context (optional). Output schema: JSON with risk level, matched lessons, and guards. Error cases: missing intent. Side effects: none. Auth: none. Rate limits: local stdio process only.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | Yes | Task intent description (e.g. 'build RAG index from PDFs') | |
| context | No | Environment context (e.g. 'WSL, GPU 8GB') |
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 side effects ('none'), auth ('none'), rate limits ('local stdio process only'), error cases ('missing intent'), and the output format ('JSON with risk level, matched lessons, and guards'). This is comprehensive behavioral disclosure beyond what annotations typically provide.
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 information-dense yet concise, with the primary purpose front-loaded and separate clauses for inputs, output, errors, side effects, auth, and rate limits. Every sentence earns its place, and the structure is logical and scannable.
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 tool with 2 parameters and no output schema, the description is remarkably complete: it covers purpose, usage, parameter roles, expected output, error conditions, side effects, authentication, and rate limits. There is nothing an agent needs to know to call it correctly that is missing.
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 100% with both parameters documented. The description adds minimal value by restating that intent is required and context is optional, but the schema already provides examples. It does not elaborate on semantics beyond the schema, so it stays at the baseline for high coverage.
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 a specific verb ('Check risk level') and resource ('before executing high-risk operations'), and clearly distinguishes its function (matches intent against lesson triggers) from the sibling tools which are search, retrieval, and submission operations. It leaves no ambiguity about what the tool does.
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 explicitly lists when to use the tool: 'before RAG builds, WSL/GPU tasks, bulk imports, or any operation that might fail.' This provides concrete context and implies it is not needed for safe operations, giving clear guidance without needing to mention alternatives explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_registerA
Register an agent and receive a node_id and token for unlimited remote MCP access. Reading needs no registration; only write tools do. Local stdio MCP is unlimited and does not need registration. For remote HTTP MCP, call this tool first to get a token, then pass it as the user parameter in subsequent calls. Input semantics: agent_type is optional (defaults to 'unknown'); client_id is an optional stable identifier you generate once — with it, later calls return the same node_id and token and renew them, without it each call mints a new node. Output schema: JSON with node_id, token, registered_at, agent_type, and reused=true when an existing node was found for client_id. Error cases: invalid_client_id. Side effects: persists registration record. Auth: none. Rate limits: one registration per session.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | No | Optional stable identifier for this client (8-64 chars of A-Z a-z 0-9 . _ : -). Generate it once and reuse it so later calls return the same node instead of a new one. | |
| agent_type | No | Optional agent type identifier (e.g. 'claude-code', 'cursor', 'aider'). Defaults to 'unknown'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and excels: it discloses side effects (persists registration record), auth (none), rate limits (one per session), error cases (invalid_client_id), and output structure. It also clarifies the idempotent behavior of client_id, making all behavioral traits explicit.
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 structured with clear labels (Input semantics, Output schema, Error cases, Side effects, Auth, Rate limits) and front-loads the core purpose. Every sentence contributes necessary information without redundancy. Despite its length, it is efficiently organized and easily scannable.
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 registration tool with optional parameters, multiple access modes, and no output schema, the description covers all required aspects: purpose, usage conditions, parameter semantics, output format, error handling, side effects, auth, and rate limits. Nothing an agent needs to call it correctly is missing.
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?
Although schema coverage is 100%, the description adds substantial value beyond the schema: it explains that client_id is optional but ensures the same node_id/token are returned and renewed on subsequent calls, versus minting a new node without it. It also confirms the default for agent_type. This is exactly the kind of semantic enrichment that helps an agent decide how to fill 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 opens with a specific verb and resource: 'Register an agent and receive a node_id and token for unlimited remote MCP access.' It clearly states the tool's purpose and distinguishes it from siblings (only registration tool) by explaining when it's needed (remote write access) versus local stdio or read-only operations.
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?
Provides explicit when-to-use and when-not-to-use guidance: reading needs no registration, local stdio is unlimited, remote HTTP MCP requires calling this first and then passing the token as the user parameter. Also explains the client_id reuse behavior and its effect on token renewal, leaving no ambiguity about invocation conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_searchA
Search MisakaNet's public failure-lesson index by error text, keyword, or topic. Use when you need to discover relevant lessons and do not already know a lesson ID. Input semantics: query is required; domain optionally filters by lesson domain; top limits ranked results and defaults to 5. kind filters by result type: 'lessons' (lesson files only), 'evidence' (results with evidence_refs or verification), 'related' (cross-referenced/tag-overlap), 'all' (default). kind is auto-detected from query intent when omitted (e.g. 'lesson about X' → lessons, 'evidence for X' → evidence). Set explain=true to return matched terms, TF-IDF, entity matches, vector similarity, and hybrid score components. detail controls progressive disclosure: compact (default, ~80 tok/lesson) for broad scans, summary (~200 tok) with domain/tags/fix, full for complete lesson markdown. Output schema: JSON with results[] and source; each result is a ranked lesson summary. Error cases: missing query, unavailable search index, or no matches (empty results). Side effects: none. Auth: none. Rate limits: local stdio process only; callers should keep result counts small. Do not use for private log collection; search only with redacted snippets. Use misakanet_get_lesson for full content.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Maximum ranked results to return. Defaults to 5; keep small for MCP context and latency. | |
| kind | No | Filter results by kind: 'lessons' returns only lesson files, 'evidence' returns results with evidence_refs or high evidence_level, 'related' returns cross-referenced/tag-overlap results. Default 'all' returns everything. Auto-detected from query intent when omitted (e.g. 'lesson about X' → lessons, 'evidence for X' → evidence). | |
| query | Yes | Required redacted error message, keyword, or topic (for example: 'pip install timeout' or 'DCO sign-off failed'). | |
| detail | No | Progressive disclosure: compact (default, ~80 tok/lesson) shows id/title/problem/freshness; summary (~200 tok) adds domain/tags/fix; full returns complete lesson markdown. Use compact for broad scans, full only after narrowing results. | |
| domain | No | Optional domain filter such as devops, python, network, feishu, rag, fanuc, or mcp. | |
| explain | No | Include score evidence for each result; vector similarity is null when the optional backend is unavailable. | |
| bm25_weight | No | Override BM25 keyword weight (0-1). Higher values favor exact keyword matches. Default: 0.65. All weights must sum to 1.0. | |
| include_stale | No | Include stale and superseded lessons in results. Default false — these are filtered out to avoid误导 agents with outdated information. | |
| baseline_weight | No | Override baseline score weight (0-1). Higher values favor proven/popular lessons. Default: 0.15. | |
| metadata_weight | No | Override metadata bonus weight (0-1). Higher values favor lessons with matching domain/tags. Default: 0.20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure. It explicitly states 'Side effects: none. Auth: none. Rate limits: local stdio process only; callers should keep result counts small.' It also covers error cases, output format, and the vector similarity null when the optional backend is unavailable. This is thorough and transparent.
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 long but well-structured and front-loaded with the core purpose and usage context. It then systematically explains parameters, output, errors, and side effects. While it could be tightened, every section adds necessary information, and the organization makes it scannable.
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 (10 parameters, no output schema), the description covers all essential aspects: query requirements, filtering options, progressive disclosure levels, error cases, output format, side effects, auth, rate limits, and privacy constraints. It even explains when to use the sibling for full content. Nothing critical is missing.
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 100%, so the baseline is 3. The description adds value beyond the schema by explaining the auto-detection of 'kind' from query intent, the progressive disclosure trade-offs of 'detail', and the interaction of weight parameters (though the schema already mentions the sum constraint). It enriches understanding of when and how to set 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 opens with a specific verb and resource: 'Search MisakaNet's public failure-lesson index by error text, keyword, or topic.' It clearly states the scope (discovery, not retrieval by ID) and explicitly contrasts with the sibling misakanet_get_lesson, which is for full content when an ID is known. This makes the tool's role unambiguous.
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 provides explicit when-to-use guidance: 'Use when you need to discover relevant lessons and do not already know a lesson ID.' It also tells when not to use it: 'Do not use for private log collection; search only with redacted snippets.' It names the alternative for full content: 'Use misakanet_get_lesson for full content.' No inference is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_submit_intakeA
Submit a failure-case intake when no matching lesson exists or a lesson was stale/incorrect. Use after misakanet_search fails to find a good match, or when the user resolved a problem not yet documented. Input semantics: problem is required (short description of the failure); kind defaults to missing_lesson; error, what_tried, fix, verification, and matched_lesson_id are optional. Output schema: JSON with submitted (boolean), intake_id, status (pending_review), redactions_applied, quality_score, and receipt. Error cases: missing problem, duplicate submission. Side effects: writes to data/contribution_queue.jsonl. Auth: none. Rate limits: local stdio process only.
| Name | Required | Description | Default |
|---|---|---|---|
| fix | No | Optional: how the problem was resolved, if known. | |
| kind | No | Type of intake. missing_lesson = no match found; stale_lesson = matched but wrong; new_lesson_candidate = user resolved a new problem. | |
| error | No | Optional short error message. | |
| source | No | Calling client: codex, claude-code, cursor, dsh, curl, or other. | |
| problem | Yes | Required short description of the failure or gap (max 2000 chars). | |
| what_tried | No | Optional: what was attempted before or during the failure. | |
| verification | No | Optional: how to confirm the fix works. | |
| matched_lesson_id | No | Optional: lesson ID that was checked but did not help (for stale_lesson). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the burden, and it does: it declares the side effect (writes to data/contribution_queue.jsonl), error cases (missing problem, duplicate submission), output schema fields, auth none, and rate limits. This goes well beyond minimal 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?
Every sentence adds distinct information, and the internal labels (Input semantics, Output schema, Error cases, Side effects, Auth, Rate limits) make scanning easy. The most important purpose and usage information is front-loaded.
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 tool with no annotations and no output schema, the description covers all invocation-critical aspects: inputs, output shape, errors, side effects, auth, and rate limits. Nothing an agent needs to call it safely and correctly is missing.
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 100%, so the baseline is 3; the description adds the default for kind (missing_lesson) and the required/optional split. It omits 'source' from its summary, but the schema already documents it, so this is a minor gap.
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 opens with a specific verb ('Submit') and resource ('a failure-case intake') and immediately states the triggering conditions ('no matching lesson exists or a lesson was stale/incorrect'). This clearly separates it from sibling tools like misakanet_search and misakanet_write_lesson.
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 gives explicit 'Use after misakanet_search fails...' and 'when the user resolved a problem not yet documented' triggers. It does not name exclusions or contrast with other submission tools like submit_usage/write_lesson, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_submit_usageA
[Experimental] Record that a public lesson helped with a problem. Use only after the user or calling agent explicitly chooses to submit usage feedback for a specific lesson. Input semantics: lesson_id is required; tool names the calling client; outcome should be solved, partial, not-helpful, or another short status. Output schema: JSON with lesson_id, tool, outcome, and status. Error cases: missing lesson_id. Side effects: currently returns a local placeholder report only. Auth: none. Rate limits: local stdio process only.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | Calling tool or client name, for example claude-code, cursor, codex, or aider. | |
| outcome | No | Short result label such as solved, partial, or not-helpful. | |
| lesson_id | Yes | Required ID of the lesson that helped, for example auto-merge-ci-pipeline. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral disclosure. It states side effects ('currently returns a local placeholder report only'), error cases ('missing lesson_id'), auth ('none'), rate limits ('local stdio process only'), and output shape ('JSON with lesson_id, tool, outcome, and status'). It also flags the tool as '[Experimental]', giving the agent an honest expectation of reliability.
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 front-loaded with purpose, then organized into labeled sections: Input semantics, Output schema, Error cases, Side effects, Auth, Rate limits. Every sentence earns its place by disclosing a distinct behavioral or invocation detail. The structure makes it easy for an agent to parse.
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 annotations and no output schema, the description is remarkably complete. It covers when to call the tool, required parameters, parameter semantics, expected response, failure mode, side effects, authentication requirements, and rate limits. For a 3-parameter experimental tool, nothing an agent needs to invoke or interpret the result is missing.
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 100%, so the baseline is 3. The description adds value by clarifying the intent of the 'tool' param ('tool names the calling client') and giving concrete outcome examples ('solved, partial, not-helpful, or another short status'). It also documents the expected output fields, which the schema does not. However, it repeats the 'lesson_id is required' schema constraint rather than adding new meaning.
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 opens with a specific verb and resource: 'Record that a public lesson helped with a problem.' This clearly identifies the action and object. It does not explicitly name a sibling, but the phrase 'submit usage feedback' meaningfully differs from the sibling list's read/search/write tools, so the purpose is distinguishable without opening the schema.
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 explicit usage context: 'Use only after the user or calling agent explicitly chooses to submit usage feedback for a specific lesson.' This tells the agent exactly when the tool is appropriate. It does not mention when not to use it or point to alternatives, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_usage_statusA
Check current usage status and remaining quota. Use to see how many free lesson reads remain and how many credits are available. Input semantics: user is optional (defaults to anonymous). Output schema: JSON with user, free_reads_used, free_reads_limit, free_reads_remaining, credits, is_registered, and next steps. Error cases: none. Side effects: none. Auth: none. Rate limits: none.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | Optional user identifier (e.g. 'anon:iphash' or 'token:xxx'). Defaults to 'anon:mcp-default'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description explicitly states 'Error cases: none. Side effects: none. Auth: none. Rate limits: none.' This fully discloses behavioral traits, leaving no 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?
The description is a single paragraph but well-structured with purpose, input semantics, output schema, and edge cases. It is concise without unnecessary words, though could be more structured.
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 lists all output fields (user, free_reads_used, etc.) and covers error, side effects, auth, rate limits. Fully complete for this tool.
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 100% with one parameter. The description adds value by explaining the default value and providing example identifiers (e.g., 'anon:iphash', 'token:xxx'), going 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 clearly states 'Check current usage status and remaining quota' using a specific verb and resource. It distinguishes itself from siblings like misakanet_submit_usage, misakanet_search, and misakanet_get_lesson.
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 gives a clear use case: 'Use to see how many free lesson reads remain and how many credits are available.' It mentions optional user parameter with default, providing context for when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_write_lessonA
Submit a complete, structured failure lesson. Use after resolving a problem and documenting the full failure→root cause→fix→verification chain. Requires a registered agent token (not anonymous). Input semantics: title, domain, problem, root_cause, fix (all required); verification, tags, token, source (optional). Output schema: JSON with lesson_id, status (pending_review), quality_score, quality_notes, redactions_applied, and receipt. Error cases: missing required fields, anonymous token, quality score below 75 threshold, duplicate submission. Side effects: writes to data/contribution_queue.jsonl. Auth: registered agent token required. Rate limits: local stdio process only.
| Name | Required | Description | Default |
|---|---|---|---|
| fix | Yes | Required fix — what resolved the problem? | |
| tags | No | Optional tags for categorization (e.g. ['proxy', 'pip', 'corporate-network']). | |
| title | Yes | Required lesson title — short, specific, kebab-case friendly (e.g. 'pip install timeout on corporate proxy'). | |
| token | No | Registered agent token (e.g. 'token:abc123'). Required for write_lesson. | |
| domain | Yes | Required domain: devops, python, network, feishu, rag, fanuc, mcp, docker, git, etc. | |
| source | No | Calling client: codex, claude-code, cursor, dsh, or other. | |
| problem | Yes | Required description of the failure (max 2000 chars). | |
| root_cause | Yes | Required root cause analysis — why did it fail? | |
| verification | No | Optional: how to confirm the fix works. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it excels: it discloses the side effect (writes to data/contribution_queue.jsonl), auth requirements, error cases, the 75 quality threshold, duplicate-submission behavior, and the output shape. This is strong behavioral disclosure for a mutating 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 dense but well organized: a front-loaded purpose sentence, a usage condition, then terse semicolon-separated sections for input semantics, output schema, errors, side effects, auth, and scope. Every clause carries distinct, valuable information without filler.
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?
This is a 9-parameter write operation with no annotations and no output schema, yet the description covers required/optional inputs, output fields, error conditions, side effects, auth, and process scope. It gives an agent everything needed to decide whether and how to invoke it correctly.
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 100%, so the schema already documents all parameters; the description's required/optional summary adds only marginal convenience. However, there is an inconsistency: it lists token as optional while also saying a registered token is required and the schema property notes it is required for write_lesson, which slightly undermines the added 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 opens with a specific verb and object: 'Submit a complete, structured failure lesson.' It also defines the precise scope—lessons documenting the full failure→root cause→fix→verification chain—which clearly separates this from the search, get, usage, intake, preflight, and registration siblings.
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 clearly states when to use the tool: 'after resolving a problem and documenting the full failure→root cause→fix→verification chain.' It also notes the auth prerequisite (registered agent token, not anonymous), but it does not explicitly mention alternatives or when not to use the tool.
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.
1 tool update
v2.30.2- Changed
misakanet_register1 field changed- added
Input schema / properties / client_idAdded value: +{ + "description": "Optional stable identifier for this client (8-64 chars of A-Z a-z 0-9 . _ : -). Generate it once and reuse it so later calls return the same node instead of a new one.", + "type": "string" +}
1 tool update
v2.28.0- Changed
misakanet_search2 fields changed- added
Input schema / properties / include_staleAdded value: +{ + "description": "Include stale and superseded lessons in results. Default false — these are filtered out to avoid误导 agents with outdated information.", + "type": "boolean" +} - added
Input schema / properties / kindAdded value: +{ + "description": "Filter results by kind: 'lessons' returns only lesson files, 'evidence' returns results with evidence_refs or high evidence_level, 'related' returns cross-referenced/tag-overlap results. Default 'all' returns everything. Auto-detected from query intent when omitted (e.g. 'lesson about X' → lessons, 'evidence for X' → evidence).", + "enum": [ + "all", + "lessons", + "evidence", + "related" + ], + "type": "string" +}
1 tool update
v2.23.0- Changed
misakanet_search3 fields changed- added
Input schema / properties / baseline_weightAdded value: +{ + "description": "Override baseline score weight (0-1). Higher values favor proven/popular lessons. Default: 0.15.", + "type": "number" +} - added
Input schema / properties / bm25_weightAdded value: +{ + "description": "Override BM25 keyword weight (0-1). Higher values favor exact keyword matches. Default: 0.65. All weights must sum to 1.0.", + "type": "number" +} - added
Input schema / properties / metadata_weightAdded value: +{ + "description": "Override metadata bonus weight (0-1). Higher values favor lessons with matching domain/tags. Default: 0.20.", + "type": "number" +}
3 tool updates
v2.21.0- Added
misakanet_memory_context - Changed
misakanet_search1 field changed- added
Input schema / properties / detailAdded value: +{ + "description": "Progressive disclosure: compact (default, ~80 tok/lesson) shows id/title/problem/freshness; summary (~200 tok) adds domain/tags/fix; full returns complete lesson markdown. Use compact for broad scans, full only after narrowing results.", + "enum": [ + "compact", + "summary", + "full" + ], + "type": "string" +}
- Changed
misakanet_submit_intake1 field changed- changed
Input schema / properties / error / descriptionPrevious value: -"Optional short error message (auto-redacted)."New value: +"Optional short error message."
2 tool updates
v2.18.0- Added
misakanet_register - Added
misakanet_write_lesson
3 tool updates
v2.17.1- Added
misakanet_preflight - Changed
misakanet_search1 field changed- added
Input schema / properties / explainAdded value: +{ + "description": "Include score evidence for each result; vector similarity is null when the optional backend is unavailable.", + "type": "boolean" +}
- Added
misakanet_submit_intake
4 tool updates
v2.14.0- Changed
misakanet_get_lesson2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Lesson ID (filename without .md, e.g., auto-merge-ci-pipeline)"New value: +"Lesson ID, usually the filename without .md, for example auto-merge-ci-pipeline." - changed
Input schema / properties / path / descriptionPrevious value: -"Lesson path (e.g., lessons/core/auto-merge-ci-pipeline.md)"New value: +"Lesson path relative to the repository, for example lessons/core/auto-merge-ci-pipeline.md."
- Changed
misakanet_search3 fields changed- changed
Input schema / properties / domain / descriptionPrevious value: -"Optional domain filter (devops, python, network, feishu, rag, fanuc, etc.)"New value: +"Optional domain filter such as devops, python, network, feishu, rag, fanuc, or mcp." - changed
Input schema / properties / query / descriptionPrevious value: -"Search query — error message, keyword, or topic (e.g. 'pip install timeout', 'DCO sign-off failed')"New value: +"Required redacted error message, keyword, or topic (for example: 'pip install timeout' or 'DCO sign-off failed')." - changed
Input schema / properties / top / descriptionPrevious value: -"Max results to return (default 5)"New value: +"Maximum ranked results to return. Defaults to 5; keep small for MCP context and latency."
- Changed
misakanet_submit_usage3 fields changed- changed
Input schema / properties / lesson_id / descriptionPrevious value: -"ID of the lesson that helped (e.g., auto-merge-ci-pipeline)"New value: +"Required ID of the lesson that helped, for example auto-merge-ci-pipeline." - changed
Input schema / properties / outcome / descriptionPrevious value: -"Outcome: solved, partial, not-helpful"New value: +"Short result label such as solved, partial, or not-helpful." - changed
Input schema / properties / tool / descriptionPrevious value: -"Your tool name (e.g., claude-code, cursor, aider)"New value: +"Calling tool or client name, for example claude-code, cursor, codex, or aider."
- Added
misakanet_usage_status
3 tool updates
v2.12.4- Changed
misakanet_get_lesson1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Lesson ID (filename without .md)"New value: +"Lesson ID (filename without .md, e.g., auto-merge-ci-pipeline)"
- Added
misakanet_search - Added
misakanet_submit_usage
2 tool updates
v2.12.2- Removed
misakanet_search - Removed
misakanet_submit_usage
3 tool updates
v2.12.3- First observed
misakanet_get_lesson - First observed
misakanet_search - First observed
misakanet_submit_usage
TDQS
Scored across 9 tools
Most tools have distinct purposes: search/get for discovery, memory_context/preflight for proactive context, submit/write for contribution, and usage/register for account management. The main ambiguity is between search, memory_context, and preflight, which all match intent/text against the same lesson index in slightly different ways.
All tools share the misakanet_ prefix and snake_case, but the action pattern is inconsistent: get_lesson, search, write_lesson, and submit_intake are verb-led, while memory_context, preflight, and usage_status are noun-like or ambiguous. register also omits a noun object.
Nine tools is well-scoped for the domain of a failure-lesson knowledge base: discovery, retrieval, context injection, risk preflight, contribution, feedback, registration, and usage status. Each tool earns its place and the set is not bloated.
The core lifecycle is covered: search and get lessons, write and submit intakes, pull memory context, check preflight risk, track usage, and register. Minor gaps exist such as no explicit update/delete workflow for lessons teferred to review, but these are not critical for the intended agent-facing read/write surface.
Maintenance
Related MCP Connectors
Never let your agent repeat a bug or linger on a known issue. Search 385+ failure lessons to skip known errors instantly.
Shared debugging memory for AI coding agents
Collective memory for AI agents. One agent solves a bug — every agent gets the fix instantly.
Structured knowledge base for AI agent solutions. Search, explore, and retrieve build logs.
Related MCP Servers
- AlicenseAqualityAmaintenanceAutomatically provides AI agents with proven instructions and past failure warnings for common tasks like deployment, auth, and payments, enabling flawless execution without manual configuration.1048 npm3MIT
- AlicenseCqualityAmaintenanceLocal-first error memory for AI coding agents, enabling them to search past fixes before attempting new repairs and save verified cases as Markdown.3MIT
- AlicenseNot gradedqualityBmaintenanceEnables agents to query a registry of documented AI-agent failures for debugging incidents, deployable on Cloudflare Workers.MIT
- AlicenseAqualityAmaintenanceFailure Memory provides AI coding agents with a shared local memory of failures, enabling them to record, recall, and learn from mistakes across sessions.2MIT