Read-only MCP server over 50 book-based agent skills: routes a task to the right framework.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
One guided journey as a phase plan: the ordered skills, the decision question each phase answers, the docs/ file it writes, and which phases are go/no-go gates. Pass slug for a known journey, or goal to have one picked.
Why are you calling this tool? One line on the user's actual task, in their words — not a restatement of the tool name.
What you are trying to achieve, if you do not know which journey fits
Journey slug, e.g. "grow-website"
One guided journey as a phase plan: the ordered skills, the decision question each phase answers, the docs/ file it writes, and which phases are go/no-go gates. Pass slug for a known journey, or goal to have one picked.
| Argument | Type | Description |
|---|---|---|
| goal | string | What you are trying to achieve, if you do not know which journey fits |
| slug | string | Journey slug, e.g. "grow-website" |
| context* | string | Why are you calling this tool? One line on the user's actual task, in their words — not a restatement of the tool name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"context"
],
"properties": {
"goal": {
"type": "string",
"description": "What you are trying to achieve, if you do not know which journey fits"
},
"slug": {
"type": "string",
"description": "Journey slug, e.g. \"grow-website\""
},
"context": {
"type": "string",
"description": "Why are you calling this tool? One line on the user's actual task, in their words — not a restatement of the tool name."
}
}
}Metadata for one skill or journey: its definition, when to use it, when not to, and related slugs. Deliberately cheap (~300 tokens) so you can check a candidate before committing context to it. Pass sections to widen, or sections:["all"] for the whole page. This does not return the skill instructions — load_skill does.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Skill or journey slug, e.g. "refactoring-ui" or "create-business" |
| context* | string | Why are you calling this tool? One line on the user's actual task, in their words — not a restatement of the tool name. |
| sections | array | Which parts to return. Default: definition, use_when, not_for, related. "all" returns the full page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug",
"context"
],
"properties": {
"slug": {
"type": "string",
"description": "Skill or journey slug, e.g. \"refactoring-ui\" or \"create-business\""
},
"context": {
"type": "string",
"description": "Why are you calling this tool? One line on the user's actual task, in their words — not a restatement of the tool name."
},
"sections": {
"type": "array",
"items": {
"enum": [
"definition",
"use_when",
"not_for",
"key_concepts",
"prompts",
"faqs",
"book",
"related",
"phases",
"all"
],
"type": "string"
},
"description": "Which parts to return. Default: definition, use_when, not_for, related. \"all\" returns the full page."
}
}
}The skill's actual instructions — the upstream SKILL.md, ready to follow in this session with nothing installed. The response also lists the skill's reference files with their token cost, so you can pull deeper material on demand by calling again with part set to a filename.
| Argument | Type | Description |
|---|---|---|
| part | string | "core" (default) for SKILL.md, or a reference filename from a previous response |
| slug* | string | Skill or journey slug |
| context* | string | Why are you calling this tool? One line on the user's actual task, in their words — not a restatement of the tool name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug",
"context"
],
"properties": {
"part": {
"type": "string",
"description": "\"core\" (default) for SKILL.md, or a reference filename from a previous response"
},
"slug": {
"type": "string",
"description": "Skill or journey slug"
},
"context": {
"type": "string",
"description": "Why are you calling this tool? One line on the user's actual task, in their words — not a restatement of the tool name."
}
}
}Route a task to the right skills. Describe the job in your own words and this returns which skills to load first, which to skip whenever a skill's own "not for" line rules it out for this task — quoted verbatim — and a guided journey when the task spans a whole project rather than one step. This is the tool to reach for first.
| Argument | Type | Description |
|---|---|---|
| max | integer | How many skills to return (default 3) |
| task* | string | The job to be done, in your own words — a full sentence beats a keyword |
| phase | string | Where in the work you are |
| stack | string | Language, framework or platform, if it narrows the answer |
| context* | string | Why are you calling this tool? One line on the user's actual task, in their words — not a restatement of the tool name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"task",
"context"
],
"properties": {
"max": {
"type": "integer",
"maximum": 6,
"minimum": 1,
"description": "How many skills to return (default 3)"
},
"task": {
"type": "string",
"minLength": 4,
"description": "The job to be done, in your own words — a full sentence beats a keyword"
},
"phase": {
"enum": [
"audit",
"build",
"launch"
],
"type": "string",
"description": "Where in the work you are"
},
"stack": {
"type": "string",
"description": "Language, framework or platform, if it narrows the answer"
},
"context": {
"type": "string",
"description": "Why are you calling this tool? One line on the user's actual task, in their words — not a restatement of the tool name."
}
}
}Search 51 book-based agent skills and 14 guided journeys by keyword or phrase. Each skill is matched against its own trigger text, so plain task language works ("my UI looks amateur", "pricing", "dark mode"). Returns compact hits, each quoting the line that matched. Use recommend_skills instead when you have a task rather than a keyword.
| Argument | Type | Description |
|---|---|---|
| kind | string | Restrict to single skills or guided journeys |
| limit | integer | Maximum hits (default 8) |
| query* | string | Keyword, phrase, slug or plain description of the problem |
| context* | string | Why are you calling this tool? One line on the user's actual task, in their words — not a restatement of the tool name. |
| category | string | Restrict to one domain |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query",
"context"
],
"properties": {
"kind": {
"enum": [
"skill",
"journey",
"all"
],
"type": "string",
"description": "Restrict to single skills or guided journeys"
},
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Maximum hits (default 8)"
},
"query": {
"type": "string",
"minLength": 2,
"description": "Keyword, phrase, slug or plain description of the problem"
},
"context": {
"type": "string",
"description": "Why are you calling this tool? One line on the user's actual task, in their words — not a restatement of the tool name."
},
"category": {
"enum": [
"design",
"marketing",
"sales",
"product",
"strategy",
"team",
"code",
"architecture"
],
"type": "string",
"description": "Restrict to one domain"
}
}
}