fushiguro-mcp
Fushiguro is an MCP server that triages tasks, assembles specialist briefs, and remembers how you like work done — without ever calling a model itself.
Brief tasks for delegation —
briefdecides whether to handle directly, spawn one specialist, or run a planner → executor → tester → reviewer pipeline, and returns the appropriate system prompt.Fetch pipeline stages —
get_stagebuilds prompts for later stages, briefed on the previous stage's output.Explore and retrieve knowledge —
list_catalogandget_entryshow configured agents, skills, runbooks, topics, tools, and connectors;search_knowledgedoes keyword/hybrid retrieval from your documentation.Manage durable preferences —
remember,recall, andforgetstore constraints, corrections, preferences, styles, and facts that shape future briefings.Improve routing over time —
record_outcomereports whether the chosen agent was right, reweighting term-to-agent affinities.Persist conversation context —
save_thread,recall_thread,resume_thread, andforget_threadlet you safely clear context and resume a topic later.Get an operational overview —
statusshows what is loaded, what is indexed, and which runbooks are still templates.Scaffold and extend a catalog — via CLI:
initcreates a business catalog, andskills addinstalls ecosystem Agent Skills into it.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fushiguro-mcpBrief an agent to create a booking website for a dental clinic"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Fushiguro
An MCP server that routes a task to the right specialist agent, assembles everything that agent needs to do it well, and remembers how you want work done.
It is built to be dropped into any business adopting AI. The packaged catalog gives you a working set of agents, skills, tools, connectors, topics, and runbook templates on day one; your own catalog layers on top of it without forking anything.
What it does
Call one tool, brief, with a task. It first decides how much delegation the task deserves, which is as much about spending less as spending more:
Verdict | What you do | Example |
| Nothing — do it yourself, no subagent | "fix a typo in the README" |
| Spawn one specialist | "add an index to speed up this slow query" |
| Ask the intake questions, then run planner → executor → tester → reviewer | "create a booking website for a dental clinic" |
Wrapping a one-line fix in a four-stage pipeline burns tokens and adds latency for nothing, so the triage refusing to delegate is a feature, not a fallback.
For anything it does delegate, you get a system prompt ready to hand to a subagent, assembled from:
the right agent for the task, chosen by a router that improves as you correct it
the skills that apply — reusable procedures like citation discipline or data-quality checks
the runbooks that govern this kind of work, with their owners and escalation conditions
retrieved knowledge from your own documentation, cited by chunk id
the tools and connectors it may use, with the guardrails on each
your standing preferences, learned over previous sessions
The host spawns the subagent. Fushiguro never calls a model itself, so there is no API key and no separate bill — it runs on whatever session you already have.
Related MCP server: DriftOS MCP Server
Install
Requires Node 22.5+. It uses the built-in node:sqlite, so nothing compiles and the whole package is 80KB.
Try it
npx -y fushiguro-mcp --helpRegister it with your host
For Claude Code, the scope decides who gets it:
# Just you, just this project
claude mcp add fushiguro -- npx -y fushiguro-mcp
# Just you, every project you open
claude mcp add fushiguro --scope user -- npx -y fushiguro-mcp
# Your whole team — writes .mcp.json, which you commit
claude mcp add fushiguro --scope project -- npx -y fushiguro-mcpFor any other MCP host, the equivalent config block:
{
"mcpServers": {
"fushiguro": {
"command": "npx",
"args": ["-y", "fushiguro-mcp"],
"env": { "FUSHIGURO_CATALOG": "/absolute/path/to/your/catalog" }
}
}
}From source
git clone <this repo> && cd Fushiguro-mcp-mem
npm install && npm run build && npm test
claude mcp add fushiguro -- node "$PWD/dist/index.js"Setting it up for a business
cd your-repo
npx -y fushiguro-mcp init # scaffolds .fushiguro/catalogThen, in rough order of payoff:
Knowledge first — this is the highest-leverage step by a wide margin. Put your real policy and product documents in
knowledge/<collection>/. Everything else is scaffolding around this. Without it, agents are generic; with it, they cite your actual refund policy.Describe your connectors and delete the packaged ones you do not use. Record env var names, never secret values.
Fill in one runbook — escalation is usually the one that hurts most today. Set
template: falsewhen done.Extend one agent with your house rules, or add a role the base set does not cover.
Commit the catalog. It is a shared business asset, and it belongs in version control like any other.
Run the status tool at any point to see what loaded and what is still an unfilled template.
Sharing it across a business
The server is just a runtime — the catalog is the thing worth sharing. Three topologies, by org size:
One team, one repo
Commit .fushiguro/catalog/ and a project-scoped .mcp.json to the repo. Anyone who clones it is prompted to enable the server and gets the catalog automatically. Nothing to install, nothing to configure.
npx -y fushiguro-mcp init
claude mcp add fushiguro --scope project -- npx -y fushiguro-mcp
git add .fushiguro .mcp.json && git commit -m "Add AI catalog"Several teams, many repos
Keep the catalog in its own repo — acme-ai-catalog — so one set of policies, runbooks, and agents serves every project. Clone it once per machine and point the server at it:
{ "env": { "FUSHIGURO_CATALOG": "/Users/you/work/acme-ai-catalog" } }Or vendor it into each repo as a git submodule, so a project pins a known-good catalog version. Changes go through pull request, which is the point: a change to an escalation path or a refund policy should be reviewed like a change to code.
Larger organisations
Publish the catalog as a private npm package (@acme/ai-catalog) and depend on it. You get versioning, a changelog, and staged rollout — teams upgrade when they choose rather than being moved underneath. Point FUSHIGURO_CATALOG at node_modules/@acme/ai-catalog.
You can also publish a fork of the server itself with your catalog baked in as the base layer, so npx @acme/ai is the entire setup for a new hire.
What is shared and what is not
This distinction matters, and it is the one people get wrong:
Where it lives | Who sees it | |
Catalog — agents, skills, knowledge, runbooks, connectors | Your repo, in git | Everyone, reviewed via PR |
Memory — learned preferences |
| Only that person |
A rule that applies to everyone belongs in the catalog, where it is reviewable and versioned. A preference that is one person's working style belongs in memory, captured through remember. Putting an org policy in memory means only one person's agent follows it — and nobody can see that it exists.
Memory is per-user by design. There is no shared memory database, and adding one would let a single person's habit silently become everyone's policy without review.
The catalog
Seven kinds of entry, each a markdown file with YAML frontmatter.
Kind | What it is |
| A specialist: a system prompt plus the tools, skills, runbooks, and connectors it works with. The router picks one per task. |
| A reusable procedure attached to an agent's prompt when relevant. |
| Your own documentation, chunked and full-text indexed. The folder name is the collection, which is how agent access is scoped. |
| A team or project process guide — steps, owner, SLA, escalation. Shipped as templates for you to complete. |
| A business domain that ties agents, skills, knowledge, runbooks, and connectors together. |
| A host capability and, more importantly, when to reach for it. |
| An external system described declaratively: capabilities, required env var names, and what must never be automated. Never holds a secret value. |
Two layers, merged
Entries shipped with the package are base. Entries in your own catalog are custom. When both exist under one name they merge into base+custom: your scalar fields win, list fields union, and your body is appended under an "Organisation-specific additions" heading.
---
name: customer-support # same name as a base agent
model: opus # overrides the base model hint
keywords: [overage, seat] # added to the base keywords
connectors: [acme-helpdesk]
---
## Acme specifics
Acme sells three plans. Entitlement differs sharply between them...That is the whole customisation. You keep receiving improvements to the base prompt underneath your additions. Set override: true in your frontmatter to replace the base body outright instead.
Every listing tags each entry [base], [custom], or [base+custom], so it is always clear what is in play.
See examples/acme-corp/catalog/ for a worked custom catalog.
Runbooks are templates
The packaged runbooks are process templates, not policy. Their structure is the general shape of the process; the owners, thresholds, and escalation paths are decisions your business has to make.
Every unmade decision is marked [FILL: ...]. While a runbook still has template: true, agents are told to treat it as guidance and to refuse to invent values for the gaps rather than proceeding as though a policy existed. Once you have filled it in, set template: false.
status lists every runbook still awaiting completion, with a count of remaining fields.
Start from catalog/runbooks/_TEMPLATE.md, copy it to .fushiguro/catalog/runbooks/, and fill it in. The section that pays for itself is Decision points — the places where the answer is a judgement rather than a lookup. Those are exactly where an agent must stop and hand over.
Memory
Memory is separate from the catalog: the catalog is what your organisation configured, memory is what the system learned about how this user wants work done.
remember("Never quote a renewal date from memory", kind: "constraint", agent: "customer-support")Five kinds, and they are not equal:
constraint— a hard rulecorrection— fixing a past mistakepreference/style— a soft tastefact— context about the user or business
Behaviour that follows from that:
Restating reinforces, it does not duplicate. Saying the same thing in different words updates the existing memory and raises its confidence.
A constraint retires the softer memory it contradicts, keeping the trail rather than leaving both to fight.
Constraints and corrections are always injected, whether or not they match the task's wording. A rule that only surfaces when you happen to use the same word is not a rule.
Scope:
globalfollows you everywhere,projectis keyed to one codebase or workspace.
Delegation and pipelines
The triage
Complexity is scored from the shape of the request: creation verbs (build, implement) against change verbs (fix, add), whole-system nouns (website, platform), open-ended scope (from scratch, production-ready), how many specialists credibly match, question phrasing, length, and conjunction count. The score, the bucket, and every signal are returned, so the decision can be argued with rather than trusted:
PIPELINE — 4 stages. Assessed complex (score 5): produces an artifact (create);
whole-system noun (website); a whole system to be built, not a change to an
existing one; spans two specialisms.Override it any time with mode: "handle_directly" | "single_agent" | "pipeline".
The stages
Agents declare which positions they can fill via roles: [planner, executor, tester, reviewer]. The routed specialist always takes executor — it was chosen for the subject matter — and the other positions go to the best-scoring agent declaring that role. A reviewer is never the same agent as the executor, because reviewing your own work is not reviewing.
Each stage's prompt states its role, what it receives, and what it must hand on, with an instruction to stay inside that role: a planner that starts implementing produces work the executor will redo differently, and that hides the disagreement rather than settling it.
brief composes only stage 1. Fetch each later stage with get_stage, passing the previous stage's output as context — later stages are briefed on what they are actually receiving, and you never pay for prompts you may not use.
Intake questions
Agents declare intake: questions to put to the user before work of that kind starts. "Create a booking website for a dental clinic" is missing a great deal — platform, existing stack, integrations, whether it handles personal data.
Questions the request already answers are dropped, so answering in the first message means you are not asked again. Asking about a stack the user already named is the fastest way to get an intake step ignored entirely.
Installing skills from the ecosystem
There is a growing body of open Agent Skills, and this reads that format directly. Seven collections are curated in:
fushiguro-mcp skills # what is available
fushiguro-mcp skills show emil-kowalski # what is in one
fushiguro-mcp skills add emil-kowalski # install all of them
fushiguro-mcp skills add jakub-krehel better-typography better-layoutSource | Author | Covers |
| Emil Kowalski | Animation, motion craft, Apple-flavoured design engineering |
| Jakub Krehel | Typography, colour, layout, accessibility, interface review |
| Meng To | Design+Code skills for UI, web, media, games |
| ConardLi | Web design engineering, knowledge retrieval, image generation |
| Elaya Design | Landing page design |
| codeswithroh | Grounding UI in reference images and a persistent taste profile |
| Owl-Listener | Research, systems, UI, interaction, delivery |
All MIT licensed. Nothing is vendored into this package — installing fetches from the author's repository, so they keep authorship and you get the current version rather than a fork frozen at whenever this was published. Each installed skill carries a _SOURCE.md recording its origin, licence, and fetch date.
Between them these sources offer around 270 skills. Install selectively: skills are chosen per task, but a catalog of hundreds makes that choice noisier and gives you more to review. Start with the handful matching work you actually do.
Set GITHUB_TOKEN if you install several collections in one sitting — unauthenticated GitHub allows 60 requests an hour.
How they fit
A folder containing SKILL.md is one skill; the files beside it are resources it references, not separate entries. Skills in that format declare only name and description, so keywords are derived from those — without that they would sit below the selection floor and never attach to anything.
Installed skills land in your custom catalog, so they merge and layer like anything else you write.
Conversation threads
A long conversation about one subject costs its full length on every subsequent turn. Switch topic and you keep paying for context nobody is using.
What this server cannot do: clear your context. No MCP server can — none of them has access to your conversation window. Only you can run /clear.
What it does instead is make clearing safe, by remembering the subject for you:
User has been working on a booking site, then switches subject.
brief → NEW TOPIC — this does not look like a continuation of
"Dental clinic booking site" (similarity 0).
To save tokens: summarise what was covered and call `save_thread`,
then tell the user they can run /clear.
... much later, the subject comes back ...
brief → RESUMES thread #1 "Dental clinic booking site" (score 1) —
you discussed this before. Context recovered:
Building a booking site for a dental clinic. Next.js + Postgres,
Google Calendar sync for slots.
Decided:
- Next.js + Postgres
- Google Calendar for availability
Still open:
- Which payment provider?The decisions are the part that matters. A cleared conversation loses the reasoning, and re-deriving "why Postgres" costs far more than storing the sentence.
brief reports one of three relations on every call: continues the current subject, new subject, or resumes an older one. Topic matching uses the same keyword-and-semantic machinery as knowledge retrieval, so "the clinic appointment app" finds a thread titled "Dental clinic booking site".
Tools: save_thread, recall_thread, resume_thread, forget_thread.
The thresholds lean toward staying put. Wrongly declaring a new topic suggests clearing context that was still useful; wrongly missing one just means the conversation runs a bit long. The first mistake is much more expensive, so FUSHIGURO_SAME_TOPIC defaults low (0.25).
Summaries are written by the host, not this server — it cannot see your conversation, so it cannot summarise it for you.
Retrieval: keyword and semantic
By default search_knowledge uses BM25 — keyword matching. That fails on a question phrased differently to the document that answers it:
Asked: "how long do I have to get my money back on the yearly plan" Document: "Annual: pro-rated refund within 30 days of the initial charge."
Not one meaningful word in common. Enabling embeddings turns retrieval hybrid: both retrievers run, and results are fused by rank.
Enabling it
npm install @huggingface/transformers # local model, no key, no billThat is the whole setup — the server detects it and starts embedding. Or use a hosted embedder instead, which needs no install:
export VOYAGE_API_KEY=... # or OPENAI_API_KEYFUSHIGURO_EMBEDDINGS takes auto (default — hosted key if set, else local if installed, else off), local, voyage, openai, or off.
The model runtime is deliberately not a dependency. It is ~390MB, and a business that only needs keyword search should not pay for it. Without it, the package stays under 100KB and retrieval works exactly as it did before.
What it does and does not fix
Measured against the sample corpus with all-MiniLM-L6-v2:
Keyword only | Hybrid | |
"money back on the yearly plan" | ranks an unrelated doc first | refund policy first |
| correct | still correct |
Both halves matter. A small embedding model is noise on exact tokens — error codes and plan names score ~0.07 against everything — and it blurs discriminating detail, ranking the Starter passage above the Annual one for an annual-plan question. BM25 is precise about exactly those. Neither retriever is good enough alone, which is why this fuses rather than replaces.
Fusion is Reciprocal Rank Fusion on rank, not score. BM25 scores and cosine similarities are incomparable scales, and normalising between them means a fudge factor that needs retuning whenever the corpus changes.
Operationally
Embedding runs in the background. The first run downloads a model (~90MB, roughly 80 seconds), and during that time searches are keyword-only — a worse answer, never a hung tool call. status reports which mode is live, and every result says which retriever found it (keyword, semantic, or keyword+semantic).
Vectors are cached in the same SQLite file and reused across restarts. Changing model or corpus re-embeds rather than mixing incompatible vector spaces. Search is brute-force cosine over normalised vectors — 3ms on a small corpus, and fine into the low tens of thousands of chunks.
How routing works
Each agent is scored on: keyword matches weighted by how distinctive the keyword is across the catalog (IDF), hand-written regex patterns, similarity to its example triggers, whether a matched topic vouches for it, and how past outcomes for those terms have gone.
That last signal is what improves with use. After a task, call record_outcome:
record_outcome(task: "...", agent: "docs", outcome: "wrong_agent", correct_agent: "process-automation")This reweights the term-to-agent affinities, so your business's own vocabulary — an internal system name, a product codename — starts routing correctly without anyone adding it as a keyword.
When the top two agents score within 85% of each other, the briefing says so instead of picking silently. When nothing scores above the floor, it says that too rather than forcing a match.
Tools
Tool | Purpose |
| Triage a task, then return either "handle it yourself", one specialist's prompt, or a staged plan. The main entry point. |
| The prompt for a later pipeline stage, briefed on the previous stage's output. |
| What this organisation has configured, by kind and layer. |
| One entry in full — an agent's prompt, a runbook with its table of contents. |
| Direct retrieval from your documentation, for a factual lookup. |
| Manage learned preferences. |
| Report how a briefed task went, so routing improves. |
| Store a summary of the current topic so context can be cleared safely. |
| Find, pick back up, or delete a past conversation. |
| What is loaded, what is indexed, and which runbooks are still templates. |
Also exposes the delegate prompt and a fushiguro://catalog resource.
Command line
fushiguro-mcp Start the MCP server on stdio (what a host runs)
fushiguro-mcp init [dir] Scaffold a business catalog, safe to re-run
fushiguro-mcp skills List curated skill collections
fushiguro-mcp skills show <source>
fushiguro-mcp skills add <source> [skill...] [--force]
fushiguro-mcp --helpConfiguration
Variable | Default | Purpose |
|
| Your business's catalog — the custom layer. |
|
| The packaged catalog. Rarely changed. |
|
| Memory and knowledge index. |
|
| Keys |
|
| Below this, no confident match. |
|
| Top two within this ratio are reported ambiguous. |
|
|
|
| per provider | Override the model. |
|
| Texts per embedding call. |
|
| Above this similarity, a task continues the active thread. |
|
| Above this, an older thread is offered as a resumption. |
Catalog files are re-read when they change on disk, and the knowledge index rebuilds when the corpus hash changes — edit an agent or a policy document and the next brief picks it up without a restart.
Limitations, stated plainly
Retrieval is keyword-only until you enable embeddings, and a keyword search misses passages phrased differently to the question. With them enabled it is hybrid, but a small local model still blurs the details that distinguish two similar passages — see the table above. A hosted embedder is meaningfully better on domain jargon.
Topic detection is a similarity score, not comprehension. A task that changes subject while reusing the old vocabulary reads as a continuation; a genuine continuation phrased in fresh words can read as new. Both thresholds are tunable, and the similarity is always reported so the call can be second-guessed.
Vector search is brute force. Every query scores every chunk. That is milliseconds up to the low tens of thousands of chunks and will not scale past that without a real vector index.
Complexity assessment is lexical. It reads the shape of the request, not its meaning. An innocuous-sounding sentence hiding a quarter of work will be under-scored, and a verbose request for something small will be over-scored. The signals are always shown and
modealways overrides.Routing is lexical too, plus learned outcome weights. It has no understanding of the task; it matches configured signal. A catalog with thin keywords routes badly, and the fix is better keywords and more
record_outcomecalls.Deduplication of memories is lexical. Two preferences that overlap heavily in wording but differ in object may merge. Requiring three shared distinct tokens keeps this rare, not impossible.
The host executes everything. Fushiguro assembles and returns prompts; it never calls a model, never spawns a process, and never reaches a connector itself.
Layout
src/
index.ts launcher and CLI (server | init | --help)
init.ts scaffolds a business catalog
complexity.ts triage: how much delegation a task deserves
main.ts stdio transport and lifecycle
server.ts MCP tool, prompt, and resource surface
catalog.ts loads and layers the seven entity kinds
router.ts scoring, selection, and prompt composition
memory.ts preferences, reinforcement, outcome learning
knowledge.ts chunk index, hybrid retrieval, rank fusion
embeddings.ts pluggable embedding providers (local, voyage, openai)
threads.ts conversation topics, continuity detection, resumption
skill-sources.ts / skill-install.ts / skills-cli.ts
curated ecosystem skill collections and their installer
text.ts tokenising and similarity helpers
catalog/ the packaged base catalog
examples/ a worked custom catalog, and an .mcp.json template
test/smoke.mjs end-to-end checks over the real catalogAvailable Tools
10 toolsbriefDecide how to handle a task, and brief whoever handles itA
Assess how much machinery a task deserves, then return either 'handle it yourself', one specialist's system prompt, or a multi-stage plan (planner → executor → tester → reviewer) with intake questions to ask first. Call this before starting any non-trivial task. Respect a 'handle_directly' verdict — spawning a subagent for small work wastes tokens and time.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Force a delegation shape, bypassing the complexity assessment. | |
| task | Yes | The user's request, in their own words. | |
| agent | No | Force a specific agent, bypassing the router. | |
| scope | No | both | |
| context | No | Extra signal: file paths, stack, system names, error text, answers to earlier intake questions. | |
| memory_limit | No | ||
| knowledge_limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals meaningful behavioral traits beyond the annotations: it performs a complexity assessment, returns one of three artifact types, and may include intake questions to ask first. It also warns about cost of unnecessary delegation. It does not disclose whether the tool has side effects or executes the plan itself, but the annotations offer no contradiction.
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?
Three dense sentences deliver the core workflow, when to invoke, and a cost-awareness guardrail. Every sentence earns its place, and the most important behavioral signal (what the tool returns) 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?
Given the lack of an output schema and sparse annotations, the description does a good job explaining the three possible return shapes and the 'ask intake questions first' behavior. It is less complete on how to interpret or execute the returned plan, and it leaves the numeric limit parameters unexplained, but the core calling workflow is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-specific meaning; all parameter semantics must come from the schema, which covers only 57% of parameters. Notably, memory_limit, knowledge_limit, and scope have little or no explanation in the schema, and the description does not compensate by explaining how limits or scope affect the delegation assessment.
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 identifies the tool's purpose with specific verbs: assess a task's complexity, then return a delegation shape (handle directly, single specialist, or multi-stage pipeline). It clearly distinguishes this from the sibling tools by framing it as the pre-task router/briefer, though it never names a sibling explicitly.
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 says when to call the tool ('before starting any non-trivial task') and when not to delegate ('Respect a handle_directly verdict — spawning a subagent for small work wastes tokens and time'). This gives the agent both an inclusion and an exclusion criterion in one short passage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forgetDelete a stored preferenceADestructiveIdempotent
Permanently delete one memory by id. Use when the user says a preference is wrong or obsolete.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Memory id, as shown by recall. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'permanently' to the delete operation, conveying irreversibility beyond the destructiveHint annotation. It also clarifies the scope ('one memory by id') and that the deletion targets a single stored preference. No contradictions with the annotations were found.
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?
Two short sentences, each earning its place: one states the action and target, the other states when to invoke the tool. No filler or redundant information is present, and the content is front-loaded with the core operation.
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 single-parameter destructive tool with full schema coverage and relevant annotations, the description is complete. It covers what the tool does, when to use it, and the permanence of the action. No output schema exists, and none is needed for such a simple operation.
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 the schema already explains that id is the 'Memory id, as shown by recall.' The description only says 'by id,' adding no new meaning beyond the structured schema. Baseline 3 is appropriate because the schema fully documents the parameter.
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 uses a specific verb and resource: 'Permanently delete one memory by id.' It clearly distinguishes the tool from siblings like remember, recall, and search_knowledge by defining its exact operation. The title and description are largely consistent, with 'preference' as the stored memory item.
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 an explicit trigger: 'Use when the user says a preference is wrong or obsolete.' It does not explicitly name alternative tools or state when not to use this tool, but the given condition is specific and actionable. The context signals and sibling list allow an agent to infer that remember or recall are the alternatives, but they are not named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entryRead one catalog entry in fullARead-only
Fetch the full content of one catalog entry — an agent's prompt, a skill, a runbook with its table of contents, a connector's guardrails.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| name | Yes | The entry's slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, which covers the safety profile. The description adds some useful context about what 'full content' includes for different kinds, but it does not mention error behavior, missing slugs, or return format. This is acceptable given the annotation coverage but not especially rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence states the action and scope, with an em-dash list of examples. There is no wasted wording, and the most important information appears first.
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 simple two-parameter tool with readOnly annotations, the description provides enough to call it correctly. The absence of an output schema is partially mitigated by the description's examples of what 'full content' means, though a note about nonexistent entries or return format would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents both parameters and the enum, but only 'name' has a description. The description compensates for the low schema description coverage by mapping kind values to concrete content examples (agent prompt, runbook TOC, connector guardrails), adding semantic depth beyond the bare enum names.
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 a specific verb and resource: 'Fetch the full content of one catalog entry.' It also enumerates example content types (prompt, skill, runbook with TOC, connector guardrails), which disambiguishes it from siblings like brief, list_catalog, and search_knowledge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: whenever the full content of a specific catalog entry is needed. It does not explicitly name alternatives or exclusions, but the 'full content' contrast with sibling tools like 'brief' and 'list_catalog' gives clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stageGet the prompt for a later pipeline stageB
Fetch the system prompt for one stage of a plan returned by brief. Call it when the previous stage is finished, passing that stage's output as context so this one is briefed on what it is receiving.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Which stage to brief. | |
| task | Yes | The original task, unchanged. | |
| scope | No | both | |
| context | No | Output of the previous stage, plus the user's intake answers. | |
| memory_limit | No | ||
| knowledge_limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark readOnlyHint false, meaning the tool should not be treated as side-effect-free, but the description presents it purely as a fetch and never mentions any state changes, counters, or pipeline advancement. This contradicts the annotation, so the score is 1 per rubric.
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?
Two sentences, front-loaded with the core purpose and then the call pattern. No filler or repetition of schema fields.
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 6-parameter tool with no output schema and a false read-only hint, the description omits return-value details, ordering constraints beyond 'previous finished', and any warning about side effects or limits. It's enough for a happy-path call but incomplete for safe and correct use.
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 covers only 3 of 6 properties, so the description must compensate. It adds meaningful semantics for `context` (the previous stage's output) and implies `role` selects the stage, but it leaves `scope`, `memory_limit`, and `knowledge_limit` unexplained. Net moderate 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 names a specific verb ('Fetch'), a specific resource ('system prompt for one stage of a plan returned by brief'), and ties it to the sibling 'brief' by referencing the plan it operates on. This clearly distinguishes it from list/get_entry/search 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?
The description gives concrete call timing: call when the previous stage is finished, and instructs to pass that stage's output as context. It doesn't enumerate alternatives or exclusions, 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.
list_catalogList what this organisation has configuredARead-only
Show catalog entries — agents, skills, knowledge, runbooks, topics, tools, connectors — each tagged base, custom, or base+custom.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Limit to one kind. Omit for a summary of everything. | |
| topic | No | Limit to entries in one topic. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context by specifying that results are tagged base/custom/base+custom. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence that front-loads the verb and resource, then enumerates scope and tagging. Every phrase adds information; there is no 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 read-only list tool with two optional parameters and no output schema, the description plus schema is complete: it states what is returned (catalog entries with tags), what filters exist (kind, topic), and the summary behavior when kind is omitted. Safety is covered by annotations.
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% ('Limit to one kind. Omit for a summary of everything.', 'Limit to entries in one topic.'), so the schema carries the parameter semantics. The description's enumeration of kinds overlaps with the schema enum but adds no new meaning beyond it.
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 uses a specific verb ('Show') and a specific resource ('catalog entries'), then enumerates the seven kinds ('agents, skills, knowledge, runbooks, topics, tools, connectors') and the tagging dimension ('base, custom, or base+custom'). This clearly distinguishes list_catalog from siblings like get_entry or search_knowledge.
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 and title provide clear context: use this to list what the organisation has configured. The schema adds parameter-level guidance ('Limit to one kind. Omit for a summary of everything.'). It does not explicitly name alternatives or when-not-to-use conditions, so it misses the top bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recallSearch stored preferencesBRead-only
Search remembered preferences, ranked by relevance and how binding they are.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | ||
| limit | No | ||
| query | No | Omit to list the most recent memories. | |
| scope | No | both |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so no credit is needed for read-only safety. The description adds useful behavioral detail that results are 'ranked by relevance and how binding they are', going beyond the schema. However, the concept of 'binding' is vague and not elaborated, and behavior like pagination or default limits is not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. It front-loads the key action and resource, then adds a distinguishing detail on ranking. Every word earns its place; no redundant or vague phrasing beyond the inherent 'binding' term.
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 four parameters and no output schema, the description needs to explain what results look like, what 'scope' and 'agent' mean, and how 'binding' affects ranking. None of that is present. The tool has no output schema, so return-value details are absent from both description and structured data, leaving an agent under-informed for 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 description coverage is only 25% (only 'query' is described). The tool description adds no parameter insight: it does not explain 'scope', 'limit', or 'agent'. Since coverage is low, the description should compensate but fails to clarify parameter meaning beyond what the schema already provides.
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 ('Search') and a clear resource ('remembered preferences'), which distinguishes it from siblings like search_knowledge (knowledge) and list_catalog (catalog listing). However, it does not explicitly name the sibling for contrast, so differentiation is implicit rather than explicit.
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 clearly implies this tool is for searching preferences, and the phrase 'remembered preferences' gives context for when to use it. But there is no explicit guidance on when to choose recall over search_knowledge or list_catalog, and no exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_outcomeReport how a briefed task wentA
Tell the router whether the agent it chose was right. This adjusts the term-to-agent weights it consults, so routing improves with use. Call after the user reacts to a subagent's work.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | The original task text, so the same terms get reweighted. | |
| agent | Yes | The agent that was used. | |
| notes | No | ||
| outcome | Yes | accepted = good; revised = needed edits; rejected = unusable; wrong_agent = wrong specialist. | |
| correct_agent | No | For 'wrong_agent': the agent that should have handled it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the key side effect: it 'adjusts the term-to-agent weights it consults, so routing improves with use.' This goes beyond the annotations, which only mark the tool as not read-only. It tells the agent that calling this mutates internal routing state, which is valuable behavioral context.
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 three short sentences, each earning its place: what the tool does, what effect it has, and when to call it. It is front-loaded with the primary action and has zero 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 simple feedback tool with no output schema, the description covers the core purpose, the consequential side effect, and the triggering condition. All parameters are already described in the schema, and the annotations cover the safety profile. The only minor gap is that it does not describe what response or acknowledgment the agent can expect after calling.
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 80%, so the schema already documents most parameters (task, agent, outcome, correct_agent). The description adds high-level context about reweighting terms but does not elaborate on individual parameters or their expected values. With coverage that high, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Tell the router whether the agent it chose was right.' This clearly identifies the tool's function and distinguishes it from siblings like remember, forget, and status, which handle knowledge storage or state queries. The purpose is immediately obvious and not a tautology.
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 states when to call: 'Call after the user reacts to a subagent's work.' This gives a clear timing cue relative to user activity. It does not spell out when not to call or name alternatives, but the timing and purpose make the intended context unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rememberStore a durable preferenceA
Record a preference, rule, or correction so future briefings honour it. Restating an existing preference reinforces it rather than duplicating; a constraint or correction that contradicts a softer memory retires the old one. Use for standing rules, never for one-off task instructions.
| Name | Required | Description | Default |
|---|---|---|---|
| why | No | The reason behind it — carried into briefings. | |
| kind | No | constraint = hard rule; correction = fixing a past mistake; preference/style = soft taste; fact = context about the user or business. | preference |
| text | Yes | The preference, stated as a durable rule. | |
| agent | No | Agent slug this applies to. Omit for all agents. | |
| scope | No | 'project' keys the memory to this codebase or workspace only. | global |
| confidence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a write operation and not read-only. The description adds valuable behavioral context beyond annotations: restating reinforces rather than duplicating, and contradictory corrections/constraints retire softer memories. This discloses conflict-resolution behavior that the schema and annotations do not.
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?
Three sentences with no filler; each sentence earns its place: primary action/purpose, dedup/retirement behavior, and usage boundary. There is no redundant repetition of schema or annotation 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 six-parameter write tool with no output schema, the description plus well-documented schema provides enough context to invoke correctly. It covers purpose, durability semantics, conflict handling, and when not to use it. A short example could push it to a 5, but nothing essential 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 high at 83%, so the baseline is 3. The description slightly reinforces parameter concepts ('preference', 'constraint', 'correction') but adds no new meaning beyond the schema's own parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Record') and names the resource ('a preference, rule, or correction') with an explicit purpose ('so future briefings honour it'). It clearly distinguishes the tool from sibling read/delete tools like recall and forget by emphasizing durable preference storage.
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 states when to use it: 'Use for standing rules, never for one-off task instructions.' It provides a clear exclusion, though it does not explicitly name alternative tools for the excluded cases; the sibling set makes those alternatives inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_knowledgeSearch the organisation's knowledge baseARead-only
Retrieve passages from the organisation's own documentation. Use for a direct factual lookup. Cite the returned chunk id when you use a passage, and say so plainly when the answer is not in the corpus rather than filling the gap.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| collections | No | Limit to these knowledge collections (the folder under knowledge/). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, it discloses two key behavioral rules: cite the returned chunk id when using a passage, and state plainly when the answer is absent rather than filling the gap. These materially shape agent behavior.
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?
Three concise sentences with the core action front-loaded. Every sentence carries distinct operational value: purpose, usage context, and honesty/citation requirements.
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 read-only search tool, it covers purpose, usage context, citation behavior, and missing-answer handling. It leaves some return-shape detail implied, but annotations and schema cover safety and parameter constraints.
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 only 33%, and the description adds no parameter-level detail for query or limit. It implies a direct query but does not compensate for the undocumented 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?
States a specific action — retrieve passages — and a clear resource — the organisation's own documentation. Framing it as a direct factual lookup distinguishes it from memory-oriented 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?
Explicitly says 'Use for a direct factual lookup,' giving clear invocation context. It does not name alternatives or exclusions, so it falls just short of full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusCatalog and memory overviewARead-only
What is loaded: catalog counts by kind and layer, knowledge index size, stored preferences, and any files that failed to parse.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation, and the description does not contradict it. The description adds useful transparency by stating exactly which state areas are covered: catalog counts by kind and layer, knowledge index size, stored preferences, and parse failures. This helps set expectations beyond the bare annotation.
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, front-loaded sentence that lists exactly what will be reported. Every element earns its place and there is no filler, making it easy for an agent to parse quickly.
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 that there is no output schema and no parameters, the description does the necessary work by enumerating the main categories of returned information. It is sufficiently complete for a read-only status/overview tool, though additional detail about the exact shape of counts or failure entries could make it even more precise.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so parameter semantics are not a burden for the description. The baseline of 4 applies because there is no parameter schema detail missing and no parameter-level explanation needed.
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 conveys that this tool reports the current state of what is loaded, including catalog counts, knowledge index size, stored preferences, and parse failures. It is specific about the resource and content, and the title reinforces that it is an overview. It does not use an explicit verb like 'returns' or 'shows', but the intent is unmistakable and distinguishable from sibling list/search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: whenever an agent needs a high-level summary of loaded catalog and memory state. However, it gives no explicit when-to-use or when-not-to-use guidance, nor does it contrast itself with siblings such as list_catalog or search_knowledge, so the agent must infer the best choice.
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.
10 tool updates
v0.2.0- First observed
brief - First observed
forget - First observed
get_entry - First observed
get_stage - First observed
list_catalog - First observed
recall - First observed
record_outcome - First observed
remember - First observed
search_knowledge - First observed
status
TDQS
Scored across 10 tools
Each tool targets a distinct phase or store: planning, stage prompts, catalog browsing, memory CRUD, knowledge search, router feedback, and status. The only mild ambiguity is between recall (personal preferences) and search_knowledge (organizational docs), but the descriptions clearly separate the two corpora.
Tool names are all lowercase and mostly follow an imperative verb style, with clear verb_noun names like get_stage, list_catalog, and record_outcome. Minor deviations like bare 'brief' and the noun 'status' break the pattern slightly but remain readable and predictable.
10 tools is a well-scoped size for an orchestration and memory server; each tool earns its place by covering a distinct concern without redundancy. The count feels intentional rather than bloated or thin.
The surface covers planning, staged execution, catalog lookup, preference memory, knowledge retrieval, and router feedback, so core workflows are supported. Minor gaps exist: catalog and knowledge are read-only, and there is no explicit way to list or cancel active plans.
Maintenance
Related MCP Connectors
The system of record for AI agent authority: playbooks, routed policy questions, reusable rules.
Connect, monitor, and control AI agents — tasks, approvals, schedules, and governance.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Task-first cross-agent collaboration for discussions, review, referrals, and reusable knowledge.
Related MCP Servers
- AlicenseCqualityDmaintenanceIntelligent routing layer that analyzes tasks and guides your AI agent to delegate work to specialized tools (Gemini, Aider, Copilot) using rule-based and capability-based routing.3MIT

DriftOS MCP Serverofficial
FlicenseAqualityDmaintenanceEnables intelligent semantic conversation routing that automatically branches, maintains, and routes between conversation topics instead of relying on entire conversation histories for context.62-- AlicenseAqualityCmaintenanceEnables AI agents to autonomously manage and improve execution processes for repetitive task types by storing reusable task contexts with associated artifacts (practices, rules, prompts, learnings) and providing full-text search across historical best practices.81MIT
- AlicenseNot gradedqualityDmaintenanceEnables step-level routing of AI workflows by decomposing tasks, selecting the best model per step within constraints, executing steps, and providing full execution traces.1Apache 2.0