MisakaNet
Server Details
Never let your agent repeat a bug or linger on a known issue. Search 385+ failure lessons to skip known errors instantly.
- Status
- Healthy
- Uptime
- 94.8% over 61 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 8 tools
Each tool has a distinct role, and the descriptions explicitly preempt confusion between the closest pairs (search vs get_lesson, submit_intake vs write_lesson). The two 'me_*' tools (me_events for reuse evidence, me_inbox for intake status) share a prefix and both read-only, so an agent might briefly conflate them, but the text disambiguates.
All tools share a consistent 'misakanet_' prefix and most follow a verb_noun pattern (get_lesson, search, write_lesson, submit_intake, register). Minor deviations: 'preflight' is a bare verb without an object, and 'me_events'/'me_inbox' use an unusual 'me' noun style rather than the object-first pattern.
Eight tools is well-scoped for a lesson index/retrieval service: two read paths, two write/submit paths, one onboarding, one preflight guard, and two status/evidence lookups. Each tool clearly earns its place with no redundancy.
The lifecycle is well covered: search/get for reading, write_lesson for structured commits, submit_intake for open triage, me_inbox for polling status, and preflight for risk. Update/delete are intentionally absent because lessons are immutable, which is explicitly justified rather than a gap.
Available Tools
8 toolsmisakanet_get_lessonARead-onlyIdempotentInspect
[RETRIEVAL / READ] Fetch one public MisakaNet lesson by repository path or lesson ID. Use after misakanet_search returns a promising result to pull the full fix content. Provide exactly one of id or path (path takes precedence if both are supplied); if neither is supplied the tool returns {error}. path must be a lesson file (lessons//.md) — anything else is refused with code=invalid_lesson_path rather than read.
Returns: object {path: string, content: string} — lesson markdown body, capped at 5000 chars per call; or {error, code}. The code says which: lesson_not_found (no such lesson — do not retry, search instead), invalid_lesson_path (the argument is not a lesson reference — fix the argument), internal_error (a service fault — retrying is reasonable). When the lesson is longer than the cap the response says so instead of pretending to be complete: {truncated: true, content_length: , content_returned: , full_content_url: } — fetch that URL when the tail matters (the cut can fall before the Verification section).
Example: misakanet_get_lesson(id='auto-merge-ci-pipeline')
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Lesson ID, usually the filename without .md, e.g. auto-merge-ci-pipeline. Either id or path is required. | |
| path | No | Lesson path relative to the repository, e.g. lessons/core/auto-merge-ci-pipeline.md — must be a file under lessons/ ending in .md (other repository files are not readable through this tool). Either path or id is required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | No | |
| error | No | |
| content | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds substantial behavior beyond them: the 5000-char content cap, faithful truncation reporting with a full_content_url escape hatch, path-validation refusal with code=invalid_lesson_path, the argument-precedence rule, and per-code retry semantics. This is the kind of disclosure an agent needs to avoid mis-handling failures.
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?
Front-loads the [RETRIEVAL / READ] tag and the core action, then layers usage, argument rules, and return/error semantics in a logical order with zero filler sentences. It runs long and re-documents return shapes already covered by the output schema, which costs a point, but every sentence carries information.
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 two-param read tool with a published output schema, the description covers everything an agent needs: selection criteria, argument precedence, validation limits, truncation handling, and error-code triage. Nothing material to invoking it correctly is left implicit.
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, but the description adds meaning the schema does not: the "provide exactly one of id or path, path takes precedence if both are supplied" precedence rule, the neither-supplied error behavior, and the constraint that only lessons/<topic>/<slug>.md files are readable. These resolve genuine ambiguity in the oneOf schema (which oddly permits both).
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?
States a specific verb+resource ("Fetch one public MisakaNet lesson by repository path or lesson ID") and immediately differentiates itself from the sibling misakanet_search by naming the handoff relationship. An agent can separate this retrieval tool from search/write siblings without reading 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?
Explicitly says when to use it ("after misakanet_search returns a promising result to pull the full fix content") and encodes the alternative in the error guidance itself ("lesson_not_found — do not retry, search instead"). When-not-to-retry conditions are spelled out per error code, which is unusually actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_me_eventsARead-onlyIdempotentInspect
[READ-ONLY EVIDENCE] Return evidence of a lesson being reused. E4 is observed reuse: search_signals shows two or more distinct clients actually retrieved the lesson — a count of requests, never of prose. Regression-benchmark citations, helpful votes and a lesson's own verified by: line are E3 hints: a citation is sandbox-level evidence, a vote is one person's opinion, and a provenance line is the lesson talking about itself, so none of them can confer E4. Use to check whether a lesson is proven by real usage, not just self-reported. Provide lesson_id or lesson_path — if neither is supplied the tool returns {error}. Semantically 'misakanet_get_my_events' (evidence for the lessons your node submitted/used); kept as me_events for backward compatibility. No auth required (read-only, rate-limited).
Returns: object {lesson_id, events: [{type, count|queries|sources, evidence_level}], evidence: 'E0'|'E3'|'E4', note}.
Example: misakanet_me_events(lesson_id='dco-auto-fix-workflow')
| Name | Required | Description | Default |
|---|---|---|---|
| lesson_id | No | Lesson ID (filename stem), e.g. dco-auto-fix-workflow. Either lesson_id or lesson_path is required. | |
| lesson_path | No | Optional full path, e.g. lessons/core/dco-auto-fix-workflow.md. Either lesson_id or lesson_path is required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| error | No | |
| events | No | |
| evidence | No | |
| lesson_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds traits not in them: no auth required, rate-limited, explicit {error} response when neither lesson_id nor lesson_path is given, and the E0/E3/E4 output levels. The return-shape paragraph is partially redundant with the existing output schema, which keeps this from a 5.
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?
Front-loaded with the [READ-ONLY EVIDENCE] tag and the core purpose in the first sentence, and most of the length is load-bearing E4/E3 definition rather than filler. The return-shape sentence duplicates the output schema and the backward-compatibility aside is a minor detour, but overall the structure is disciplined for the amount of semantics it must carry.
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 an output schema present, the description needn't explain return values, and it does cover the genuinely important gaps: the parameter-required error case, no-auth/rate-limit behavior, and the evidence-level semantics that an agent cannot infer from the schema. The remaining unanswered question is how a lesson_id resolves against a lesson_path, which is a small gap for a two-parameter lookup.
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% and both parameters are documented inline, so the baseline is 3. The description adds only the invocation rule already implied by the schema's oneOf ('Provide lesson_id or lesson_path') plus an example; it contributes no format, resolution-order, or precedence detail (e.g. what happens if both are supplied).
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?
States a specific verb and resource — return evidence of lesson reuse — and goes further by defining exactly what qualifies as E4 (two or more distinct clients retrieved the lesson) versus E3 hints (citations, votes, provenance lines). It differentiates itself from its own alias ('misakanet_get_my_events') but never explicitly contrasts with siblings like misakanet_get_lesson or misakanet_search, so it stops short of full sibling differentiation.
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?
'Use to check whether a lesson is proven by real usage, not just self-reported' gives a clear selection criterion against other evidence-gathering paths. It does not name an explicit alternative tool to call for weaker/sandbox-level evidence, but the E3-vs-E4 boundary effectively tells the agent when this tool applies and when it does not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_me_inboxARead-onlyIdempotentInspect
[AGENT READABLE INBOX] Check the status of a previously submitted intake (question, missing_lesson, etc.) without re-submitting. Accepts an intake_id (e.g. 'issue-1234' or '1234') from a prior misakanet_submit_intake response, or a dedup_key (the 16-char hash). Returns: {status: 'answered'|'pending'|'converted'|'not_found', ...} — 'answered' includes the maintainer's answer, 'converted' includes the lesson_id this intake became. Read-only, rate-limited, no auth required. Returns: object {intake_id, status, answer?, lesson_id?, issue_url?, note}. Example: misakanet_me_inbox(intake_id='issue-1528') or misakanet_me_inbox(dedup_key='a1b2c3d4e5f67890')
| Name | Required | Description | Default |
|---|---|---|---|
| dedup_key | No | The dedup_key (16-char hash) from a prior submit_intake response. Either intake_id or dedup_key is required. | |
| intake_id | No | Intake ID from a prior submit_intake response, e.g. 'issue-1528' or '1528'. Either intake_id or dedup_key is required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| answer | No | |
| status | No | |
| intake_id | No | |
| issue_url | No | |
| lesson_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly/idempotent/non-destructive), it discloses rate limiting, no-auth requirement, and the semantic meaning of each status value ('answered' carries the maintainer answer, 'converted' carries the resulting lesson_id). Those are exactly the operational facts an agent needs before calling.
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?
Front-loaded and readable, but it declares the return shape twice ('Returns: {status: ...}' followed by 'Returns: object {intake_id, status, ...}') and repeats read-only/no-auth facts. That redundancy is wasted space in an otherwise tight definition.
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 two-parameter lookup tool with a full output schema and annotations, nothing an agent needs is missing: valid identifier forms, an example call, status vocabulary, and the read-only/no-auth posture are all present.
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%, so both parameters are already documented with examples in the schema. The description restates the accepted formats ('issue-1234' or '1234', 16-char hash) without adding syntax or constraints beyond that, so baseline 3 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?
States a specific verb+resource ('Check the status of a previously submitted intake') and immediately distinguishes the scope from re-submitting. An agent can tell this apart from misakanet_submit_intake without opening either 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 phrase 'without re-submitting' plus the requirement to pass an ID from a prior submit_intake response clearly establishes when to use this instead of the submit sibling. It does not spell out an explicit 'do not use when...' exclusion, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_preflightARead-onlyIdempotentInspect
[GUARD / RISK CHECK] 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. No side effects — safe to call multiple times before acting. Requires a Bearer token (misakanet_register first, and pass the same client_id to keep your node): an anonymous call is refused with JSON-RPC -32000 Unauthorized plus a recovery hint, which this sentence exists to keep you from discovering the hard way.
Returns: object {risk_level: 'low'|'medium'|'high', intent, matched_lessons: [{id, title, domain, relevance}], guards: [string]}.
Example: misakanet_preflight(intent='build RAG pipeline with ChromaDB')
| Name | Required | Description | Default |
|---|---|---|---|
| intent | Yes | Required: what you plan to do (e.g. 'build RAG pipeline with ChromaDB'). | |
| context | No | Optional: additional context about the environment or setup. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| guards | No | |
| intent | No | |
| risk_level | No | |
| matched_lessons | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is largely covered; the description's 'no side effects — safe to call multiple times' restates them. Genuine added context is the auth requirement: anonymous calls are refused with JSON-RPC -32000 Unauthorized plus a recovery hint. However, it discloses nothing about cost, latency, or behavior when no lesson matches the intent — a meaningful gap for a guard tool that gates other operations.
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?
Front-loaded with the bracket tag, then when-to-use, then safety, then auth, then return shape — a logical order. It is slightly padded: the parenthetical aside 'which this sentence exists to keep you from discovering the hard way' is self-referential filler and the Returns line duplicates the output schema.
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 two-parameter, output-schema-backed guard tool, the description covers purpose, triggering conditions, idempotency, the authentication prerequisite and its failure mode, and even sketches the return shape. There is essentially nothing an agent needs in order 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 coverage is 100%, including the required-intent description, so the baseline is 3. The description earns an extra point by explaining what intent means functionally — the agent's planned action, matched against lesson triggers — and supplying a concrete example call (intent='build RAG pipeline with ChromaDB') that demonstrates the expected specificity level.
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 gives a specific verb and resource — 'Check risk level' as a preflight gate that 'Matches agent intent against lesson triggers' — and leads with a bracketed tag '[GUARD / RISK CHECK]' that separates it from the storage/search siblings (misakanet_search, misakanet_get_lesson, misakanet_write_lesson). An agent can tell immediately that this is a pre-action safety check rather than a data retrieval tool.
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 trigger contexts ('before RAG builds, WSL/GPU tasks, bulk imports, or any operation that might fail') and explicitly permits repeated calls ('safe to call multiple times before acting'). It also names the prerequisite path — call misakanet_register first and pass the same client_id — which is the alternative-action guidance an agent needs before invoking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_registerAInspect
[ONBOARDING] Get a Bearer token for authenticated access (unlocks misakanet_write_lesson and higher rate limits). Reading needs no registration and has no daily cap: misakanet_search / misakanet_get_lesson work anonymously (a per-address burst limit protects the index; it is a speed limit, not a quota). No GitHub account or email needed, and no personal data is collected — the node is a pseudonym, not an account.
Token lifetime: valid ~30 days. Pass client_id (a random UUID you generate once and keep private) to get the SAME node_id and token back on every later call and to renew them; without client_id every call creates a new node, which means your reuse evidence, receipts and history start over. Treat client_id as the node's key: presenting it returns that node's token, so don't publish it, commit it, or build it from something already public (a hostname or workspace id is guessable and usually visible) — generate a random UUID and store it like a token.
Returns: object {node_id: string, token: string, registered_at: string, agent_type: string, reused?: boolean} — reused=true means an existing node was found for this client_id.
Example: misakanet_register(agent_type='claude-code', client_id='8f14e45f-2b1c-4f3a-9d2e-7c6b5a4d3e2f')
Optional referral_code: the code of the node that invited you (misakanet referral code, 4-16 letters/digits). Recorded against your node and counted for that code — the only place a referral has ever been recorded, since the invitation otherwise never leaves the inviting machine. Counted once per new node: calling register again with the same client_id renews the same node and does not add to the count.
| 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 | Yes | Agent type (e.g. claude-code, codex, cursor, dsh, other) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| token | No | |
| node_id | No | |
| agent_type | No | |
| referral_code | No | Optional: the referral code of the node that invited you (4-16 of A-Z a-z 0-9). Recorded on this node and counted once for that code; ignored when it is not that shape, and never blocks a registration. |
| registered_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide hints about side-effect profile (readOnly=false, destructive=false, idempotent=false). The description adds substantial behavioral context beyond that: token lifetime (~30 days), the node/pseudonym model, what happens without client_id (new node each call), and the effect of referral_code (counted only on new node). It also warns about what to keep private and what happens to evidence/history.
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?
Densely informative but all content is functional: onboarding instruction, security warning, return shape, usage example, and referral semantics. It is front-loaded with the core purpose and then builds logically. Every sentence earns its place; no fluff or redundant restatement of the title.
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 an output schema present, the description does not need to list every return field, but it goes further and explains the subtle semantics of reused, token lifetime, renewal, and referral counting. Given the tool has multiple behavioral traps (client_id regeneration, referral double-counting, privacy), the description is complete enough for correct invocation.
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 already covers both parameters at 100%, including constraints and purpose for client_id and agent_type. The description adds deeper meaning for client_id (same node/token on later calls, treat as key, don't publish), and layers the referral_code meaning on top. The only small shortfall is that fractional aspect of describing agent_type example values is already in schema, so top scores for schema-heavy descriptions are not needed; 4 reflects the added semantic 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 states a specific verb ('Get a Bearer token') and resource (authenticated access), with an explicit result (`{node_id, token, ...}`). It also differentiates from reading tools (misakanet_search / misakanet_get_lesson) that don't need registration, so the agent can immediately identify this as the onboarding/auth tool and not a content access tool.
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 is explicit about when to use it ('Get a Bearer token for authenticated access'), when not to use it (reading needs no registration), and names alternatives (misakanet_search / misakanet_get_lesson). It also covers renewal behavior, client_id reuse, and optional referral_code semantics, giving the agent complete routing and usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_searchARead-onlyIdempotentInspect
[RETRIEVAL / READ] Search MisakaNet's public failure-lesson index by error text, keyword, or topic. This is the primary read path — run it first when you hit an error, before deciding to submit anything. For a known lesson ID or path, prefer misakanet_get_lesson — it skips ranking and returns the full content. detail controls progressive disclosure: compact (default, ~80 tok/lesson) for broad scans, summary (~200 tok) adds domain/tags/fix, full returns complete lesson data.
FAQ: results may also include answered questions (type="faq", issue_url + answer) — if a maintainer already answered the same question, the answer surfaces here.
Returns: object {results: [compact: {id, title, problem, freshness, evidence_level, score} | summary: + {domain, tags, fix} | full: the record], source, detail, query}; score is the ranker's relevance for that result and is omitted on the unranked fallback path. On no match: {no_match: true, suggestion, intake}. When the answer is degraded — no index loaded, or the live store refused the read and the corpus came from the snapshot — the response also carries degraded: true, degraded_reasons and a one-sentence notice; read it before concluding that no lesson exists.
Example: misakanet_search(query='pip install timeout', domain='python', top=3)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Maximum ranked results to return. Defaults to 5; keep small for MCP context and latency. | |
| kind | No | Filter by kind: 'lessons' (lesson files only), 'evidence' (results with evidence_refs or verification), 'related' (cross-referenced/tag-overlap), 'all' (default). Auto-detected from query intent when omitted. | |
| query | Yes | Required redacted error message, keyword, or topic (e.g. 'pip install timeout' or 'DCO sign-off failed'). | |
| detail | No | Progressive disclosure: compact (default, ~80 tok) includes id/title/problem/freshness/score; summary (~200 tok) adds domain/tags/fix; full returns complete lesson data with path. | |
| domain | No | Optional domain filter such as devops, python, network, feishu, rag, fanuc, or mcp. | |
| bm25_weight | No | Override BM25 keyword weight (0-1). Higher favors exact keyword match. Default: 0.65. All weights must sum to 1.0. | |
| baseline_weight | No | Override baseline score weight (0-1). Higher favors proven/popular lessons. Default: 0.15. | |
| metadata_weight | No | Override metadata bonus weight (0-1). Higher favors matching domain/tags. Default: 0.20. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | No | |
| detail | No | |
| intake | No | |
| source | No | |
| results | No | |
| no_match | No | |
| suggestion | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld), yet the description adds genuinely non-obvious behavior: the degraded-mode flags (degraded, degraded_reasons, notice) when the index is missing or the live store refused the read, the unranked fallback where `score` is dropped, and the no_match/suggestion/intake shape. That is real value beyond the annotations, though the FAQ aside is narrower in importance.
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?
Front-loaded with the action guidance and following with the alternative and a worked example, so the important routing information comes first. However, the multi-line 'Returns' enumeration is redundant for a tool that already ships an output schema, which is wasted length.
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?
An output schema and full annotations exist, and the description still supplies the pieces those do not: the degraded-answer path, the no-match path, the FAQ result type, and the ranked-vs-unranked score distinction. Nothing an agent needs to interpret a surprising response 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%, so the baseline is 3. The description's `detail` tiers and token estimates largely restate what the schema already documents (including the compact key list and the weight sum-to-1.0 constraint), so it adds little parameter meaning the agent cannot already read.
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?
States a specific verb (Search) plus the exact resource (MisakaNet's public failure-lesson index) and the match dimensions (error text, keyword, topic). It also names the sibling it is not — misakanet_get_lesson — for the known-ID case, so an agent can route without opening a 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?
Explicitly declares itself the primary read path and says to run it first on an error before submitting anything, then carves out the alternative: prefer misakanet_get_lesson for a known lesson ID or path because it skips ranking. That is when-to-use, when-not, and the alternative in one place.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_submit_intakeAInspect
[OPEN TRIAGE / INTAKE] Use misakanet_submit_intake when you only have a partial failure description or want to ask a question; use misakanet_write_lesson (Bearer required) once you already have structured title/domain/problem/root_cause/fix. submit_intake is open, rate-limited, no Bearer — output is a GitHub issue (intake,mcp-intake,pending-review) for maintainer triage, NOT a merged lesson. Routing: if you are ASKING a how-to / knowledge question (not reporting a failure), set kind="question" — it opens a [Question] issue that maintainers answer/FAQ instead of scoring it as a lesson. If kind is omitted, the server auto-detects question-shaped content (no error/fix/verification + question phrasing). Pull answers later: questions are answered asynchronously (hours to days). Re-call this tool with the SAME problem text later and follow the returned poll_hint — the dedup response returns the maintainer's answer once it exists ({answered:true, answer}), and once your report has become a lesson it returns a conversion receipt ({converted:true, receipt, events}) naming the lesson, its path and its evidence_level; or re-run misakanet_search on the topic for FAQ hits. Every response also carries dedup_key, and poll_hint.recheck_after_seconds says when re-checking is worth it (21600s for questions, 86400s for failure reports). Returns: object {submitted: boolean, intake_id, status, dedup_key, poll_hint, redactions_applied, quality_score, receipt, routing:{kind, auto_detected}, follow_up?}; duplicates: {submitted: false, duplicate: true, previous_issue, dedup_key} or {answered: true, answer, dedup_key} for answered questions, plus {converted: true, receipt, events} when a lesson now cites the intake. Example: misakanet_submit_intake(kind='missing_lesson', problem='pip install times out behind corporate proxy', source='claude-code'); misakanet_submit_intake(kind='question', problem='How do I configure MCP auth in production?', source='claude-code')
| Name | Required | Description | Default |
|---|---|---|---|
| fix | No | Optional: how it was resolved. | |
| kind | No | missing_lesson (knowledge gap), stale_lesson (outdated lesson), new_lesson_candidate (new failure mode), or question (ask for help). | |
| error | No | Optional: short error message (auto-redacted). | |
| source | No | Calling client: codex, claude-code, cursor, dsh, curl, or other. | |
| problem | Yes | Required: short description of the failure, gap, or question (max 2000 chars). | |
| what_tried | No | Optional: what was attempted. | |
| contributor | No | Optional: contributor identity (GitHub username, agent name, or email). Included in issue body for attribution. | |
| verification | No | Optional: how to confirm the fix works. | |
| matched_lesson_id | No | Optional: lesson ID that was checked but didn't help. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| error | No | |
| answer | No | |
| events | No | |
| status | No | |
| pending | No | |
| receipt | No | |
| routing | No | |
| answered | No | |
| converted | No | |
| dedup_key | No | |
| duplicate | No | |
| follow_up | No | |
| intake_id | No | |
| issue_url | No | |
| poll_hint | No | |
| submitted | No | |
| answer_url | No | |
| dedup_hash | No | |
| previous_issue | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-read-only, non-destructive, non-idempotent, closed-world, but the description adds behavior the annotations cannot convey: open auth (no Bearer), rate limiting, auto-redaction, dedup_key semantics, poll_hint.recheck_after_seconds timings (21600s questions, 86400s failures), and the GitHub-issue triage pipeline. This is well beyond the structured fields.
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?
Long but densely front-loaded: the primary decision (this tool vs write_lesson) and the question-vs-report routing come first, then polling/return details, then examples. Nearly every sentence carries operational information, though the return-shape enumeration is heavier than strictly needed given an output schema exists.
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 9-parameter, open, asynchronous submission tool, the description covers the key decision points: when to use it, auth posture, what artifact it produces, how duplicates and answers surface, and how to poll. 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?
Schema coverage is 100%, so the baseline is 3, but the description adds value beyond the schema by explaining the kind enum's routing consequence (question vs lesson, and the server-side auto-detection when kind is omitted) and demonstrating real parameter values in the worked examples.
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+resource and an explicit scope statement: submit an open, rate-limited intake that produces a GitHub issue rather than a merged lesson. It directly names the sibling it is not (misakanet_write_lesson) and the condition that separates them, so an agent can distinguish it without opening either 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?
Explicit when-to-use rules: use this when you only have a partial failure description or want to ask a question; use misakanet_write_lesson (Bearer required) once you have structured title/domain/problem/root_cause/fix. It further routes kind='question' vs failure reports and explains the auto-detection fallback and the asynchronous answer/poll workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
misakanet_write_lessonAInspect
[STRUCTURED COMMIT / VALIDATED SUBMISSION] Submit a complete, structured failure lesson (title/domain/problem/root_cause/fix) as a formal submission. Requires authentication (Bearer token in header) — this is the 'validated author' path, not open triage. Output goes through lesson-gate/lint/review and becomes a versioned lesson in the git repo. For quick open reports when you only have a partial failure description, use misakanet_submit_intake instead (no Bearer). Lessons are immutable once merged — corrections go through a new intake/PR, so there is intentionally no misakanet_update_lesson/misakanet_delete_lesson. Returns: object {lesson_id: string, status: 'pending_review', quality_score: number}; or {submitted: false, error}. Example: misakanet_write_lesson(title='pip timeout behind proxy', domain='python', problem='...', root_cause='...', fix='...')
| Name | Required | Description | Default |
|---|---|---|---|
| fix | Yes | How to fix it (required). | |
| tags | No | Comma-separated tags. | |
| title | Yes | Short descriptive title. | |
| domain | Yes | Domain: devops, python, network, feishu, rag, fanuc, mcp, etc. | |
| source | No | Source: codex, claude-code, cursor, etc. | |
| problem | Yes | What failed (required). | |
| root_cause | Yes | Why it failed (required). | |
| contributor | No | Optional: contributor identity (GitHub username, agent name, or email). Included in lesson frontmatter for attribution. | |
| verification | No | How to confirm the fix works. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| status | No | |
| lesson_id | No | |
| submitted | No | |
| quality_score | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: it requires authentication, routes through lesson-gate/lint/review, persists as a versioned git lesson, and becomes immutable once merged. It also documents the return shape including error format, which is valuable for agent expectations.
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 every sentence earns its place: structured labeling, auth requirements, alternative routing, immutability policy, return type, and an example. It is front-loaded with the core purpose and spends no words on 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?
For a tool with 9 parameters, 5 required fields, an output schema, and sibling alternatives, this description is complete. It covers auth, validation pipeline, immutability, correction workflow, return values, and the intended alternative route. Nothing needed to invoke 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?
The input schema covers all 9 parameters with descriptions, so the baseline is 3. The description names the five required fields and provides a realistic example call, but does not add deeper meaning to individual parameters beyond what the schema already provides. This is acceptable given the high schema 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 and resource: 'Submit a complete, structured failure lesson ... as a formal submission.' It also distinguishes itself from sibling misakanet_submit_intake, and explains there is intentionally no update/delete sibling because lessons are immutable once merged. This 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?
Usage guidance is explicit: use this for validated, complete submissions requiring a Bearer token, and use misakanet_submit_intake instead for quick open reports with partial failure descriptions. The description also prescribes how corrections should be handled (new intake/PR) rather than using this tool again.
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
- Added
misakanet_me_inbox
2 tool updates
- Changed
misakanet_get_lesson2 fields changed- removed
Input schema / minPropertiesRemoved value: -1 - added
Input schema / oneOfAdded value: +[ + { + "required": [ + "path" + ] + }, + { + "required": [ + "id" + ] + }, + { + "required": [ + "path", + "id" + ] + } +]
- Changed
misakanet_me_events2 fields changed- removed
Input schema / minPropertiesRemoved value: -1 - added
Input schema / oneOfAdded value: +[ + { + "required": [ + "lesson_id" + ] + }, + { + "required": [ + "lesson_path" + ] + }, + { + "required": [ + "lesson_id", + "lesson_path" + ] + } +]
1 tool update
- Changed
misakanet_search1 field changed- changed
Input schema / properties / detail / descriptionPrevious value: -"Progressive disclosure: compact (default, ~80 tok) includes id/title/problem/freshness; summary (~200 tok) adds domain/tags/fix; full returns complete lesson data with path."New value: +"Progressive disclosure: compact (default, ~80 tok) includes id/title/problem/freshness/score; summary (~200 tok) adds domain/tags/fix; full returns complete lesson data with path."
1 tool update
- Changed
misakanet_submit_intake4 fields changed- added
Output schema / properties / convertedAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / dedup_keyAdded value: +{ + "type": "string" +} - added
Output schema / properties / eventsAdded value: +{ + "items": { + "properties": { + "evidence_level": { + "type": "string" + }, + "intake": { + "type": "string" + }, + "lesson_id": { + "type": "string" + }, + "lesson_path": { + "type": "string" + }, + "search": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / poll_hintAdded value: +{ + "properties": { + "argument": { + "type": "string" + }, + "how": { + "type": "string" + }, + "recheck_after_seconds": { + "type": "number" + }, + "tool": { + "type": "string" + } + }, + "type": "object" +}
Publisher details
- Operator
- Independent individual developer and operator. · Publisher source
- Operator website
- https://github.com/Ikalus1988/MisakaNet
- Vendor relationship
- First-party
- Trust center
- Not available
- Restrictions
- Not available
Related MCP Connectors
Check what other agents hit the same tool failure — and what recovery worked. Ask before retrying.
Diagnose why an AI agent failed and get the verified fix instantly. Free, no token.
Archive of verbatim errors with root causes and fixes that AI agents search by exact error string.
Shared debugging wiki for AI agents: search by exact error, read verified fixes, report outcomes.
Related MCP Servers
- AlicenseAqualityAmaintenanceAgent failure memory network. Search 235+ verified debugging lessons from real engineering sessions. Includes guided prompts for failure triage and release auditing.112,151 npm1,179 PyPI543Apache 2.0
- AlicenseAqualityBmaintenanceAutomatically provides AI agents with proven instructions and past failure warnings for common tasks like deployment, auth, and payments, enabling flawless execution without manual configuration.1031 npm3MIT
- AlicenseAqualityAmaintenanceHelps AI agents avoid repeating known failures by providing deterministic lookup of dead ends for coding errors and country-specific real-world rules.1137 PyPIMIT
- AlicenseNot gradedqualityBmaintenanceEnables agents to query a registry of documented AI-agent failures for debugging incidents, deployable on Cloudflare Workers.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.