{"name":"kleisli-docs-mcp","version":"1.0.0","description":"Documentation MCP server for kleisli.io: search, fetch, and enumerate Kleisli.IO docs.","transport":{"type":"streamable-http","endpoint":"https://docs.kleisli.io/mcp/transport","spec":"2025-06-18"},"capabilities":{"tools":true,"resources":true},"tools":[{"name":"list_projects","description":"Enumerate the published documentation projects (drafts are excluded). Call\n   this first to orient when you don't yet know what documentation exists.\n   Returns a plain-text block listing one project per entry as \"{id}: {name}\"\n   followed by an indented description line. The returned project IDs are the\n   exact values to pass as the project argument to get_page and search_docs.","inputSchema":{"type":"object","properties":{}}},{"name":"get_page","description":"Fetch one documentation page as Markdown, given its project, section, and\n   page slugs. Returns the page as a \"# {title}\" heading, a blank line, then\n   the body; if no page matches those coordinates, returns the text \"Page not\n   found: {project}/{section}/{page}\". Use search_docs when you don't know a\n   page's coordinates; use list_projects to discover project IDs.","inputSchema":{"type":"object","properties":{"project":{"type":"string","description":"Project ID, e.g. \"kli\" or \"nix-effects\". One of the IDs returned by list_projects, or the project field of a search_docs hit."},"section":{"type":"string","description":"Section slug, e.g. \"diag-hints\". The section field of a search_docs hit."},"page":{"type":"string","description":"Page slug, e.g. \"pidom-not-a-type\". The page field of a search_docs hit."}},"required":["project","section","page"]}},{"name":"search_docs","description":"Find documentation pages by keyword or phrase across all projects — use this\n   when you don't already know the exact project, section, and page. Hybrid\n   lexical ranking (full-text + BM25 + trigram) returns the best-matching pages\n   first, each with a snippet (matched terms wrapped in **bold**) and per-page\n   metadata. Structured results carry project, section, page, title, score,\n   snippet, stability (stable or unstable), and markdownLink, plus summary,\n   mtime, sha, and buildHash when available. buildHash is the corpus provenance\n   stamp — cite it alongside any claim derived from these results. A plain-text\n   fallback lists the same hits. Use get_page to fetch a page once you know its\n   project, section, and page; use list_projects to enumerate available\n   projects.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Natural-language or keyword query (minimum 2 non-whitespace characters). Examples: \"linear types\", \"deploy install\", \"kli init\". Stopword-only or pure-negation queries return no results."}},"required":["query"]}}],"resources":{"uriScheme":"docs://kleisli/{project}/{section}/{page}","resourceTemplates":[{"uriTemplate":"docs://kleisli/{project}/{section}/{page}","name":"documentation-page","description":"Documentation page identified by project / section / page slugs. Returns rendered Markdown.","mimeType":"text/markdown"},{"uriTemplate":"docs://kleisli/nix-effects/diag-hints/{slug}","name":"diag-hint","description":"Per-key diagnostic Hint page for one nix-effects compile-error pattern. The `slug` is the slugified Hint key (e.g. `pidom-not-a-type` from `PiDom::not-a-type`); compiler Errors expose the canonical URL in `hint.docLink`, so a Hint resolves to focused agent-readable content in one fetch.","mimeType":"text/markdown"}],"count":342,"examples":["docs://kleisli/nix-effects/llms-full.txt","docs://kleisli/nix-effects/llms.txt","docs://kleisli/metaBuilder/llms-full.txt","docs://kleisli/metaBuilder/llms.txt","docs://kleisli/kli/llms-full.txt"],"corpusBuildHash":"1xxh55icdl0xpinnn69wz20wykrhjwds"},"humanExplainer":"https://docs.kleisli.io/mcp","wellKnown":"https://docs.kleisli.io/.well-known/mcp.json","spec":"https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1649"}