MCP server intelligence profile

rabbithole MCP Server

Rabbithole provides an infinite canvas for learning by allowing users to open documents, select text, ask questions, and receive answers that open as child documents, all running locally via an MCP server

Local Onlyshlokkhemani
Awaiting current scanNpm · 0.1.0

The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.

1Distribution channel
3Independently observed tools
0Linked remote endpoints
AvailableVersion intelligence

Detailed security scan evidence is not public for this MCP yet. Public identity, registry metadata, and independently observed protocol inventory remain available.

Install and connect

Installation and connection instructions are shown only when supported by retained package, repository, or endpoint evidence.

Install @shlokkhemani/rabbithole from npm

Install exact version 0.1.0. No verified executable entrypoint is available, so use the package documentation to launch it.

npm install --save-exact @shlokkhemani/rabbithole@0.1.0

Identity

Canonical slugrabbithole-2b398973DeploymentLocal Only
Canonical packagenpm:@shlokkhemani/rabbitholeRepositoryshlokkhemani/rabbithole
First publishedLatest release
Last security verificationClassification confidence90%
PublicationDraftOfficial distributionNot verified

Distributions

ChannelIdentifierCurrent versionVersionsSource
npm@shlokkhemani/rabbithole0.1.01Repository

Current release

PackageVersionPublished / observedInventorySecurity scan
npm@shlokkhemani/rabbithole0.1.0CurrentSep 5, 20263 toolsSucceeded · 0 resources · 0 promptsEvidence restricted
Enterprise protection

Continuously monitor this MCP for security risk

Independently scan the exact version your agents use, receive alerts when its risk changes, and investigate every finding with retained version evidence.

  • Independent exact-version security scans
  • Continuous release and vulnerability monitoring
  • Risk-change alerts with capability context
  • Historical evidence and API exports
Custom pricingContact salesTailored to your organization, integrations, data needs, and support requirements.

Current version evidence

No public current-version evidence is available yet.

Current protocol inventory

2025-06-18Negotiated protocol
rabbitholeServer-reported name
1Capability groups
Aug 23, 2026Observed

Tools 3

ToolCategoryAnnotationsRisk
answer_branchAnswer one pending branch_request or convert_request from an open Rabbithole. For convert_request, read every pages[].image_path in order, follow rules exactly, stream transcription chunks, and emit figure: refs rather than cropping. For branch_request, write a focused answer using the supplied selection context; when region.image_path is present, it may be the new selection clip or the immediate parent's clip, so read it and trust it over extracted text. Authoring vocabulary: - Base notation: GFM markdown, $...$/$$...$$ and \(...\)/\[...\] math, and highlighted language-tagged code fences. - If the answer is content fetched from a URL or repo, pass its document URL as base_url so relative images and links resolve. - If the answer uses a local image, pass assets: [{ name, file_path }] and reference it as ![alt](asset:name.png); use this for screenshots, generated diagrams, and other non-web images. - Use standard ```mermaid fences for flowcharts, sequence, class, state, and entity-relationship diagrams. - Use ```show for bespoke spatial explanations that Mermaid cannot express well: architecture layouts, memory diagrams, comparisons, and custom relationships. - show dialect: HTML/CSS/inline-SVG only; no scripts. Scripts and unsafe attributes are stripped. - show craft: prefer HTML/CSS layout with flexbox/grid over absolute SVG coordinates. - Design visuals for about 380px card width; make them fluid and keep labels short. - Use theme tokens, never hardcoded colors, so visuals match light and dark themes: --fg, --fg-bold, --fg-dim, --fg-faint, --node-bg, --bar-bg, --border, --border-focus, --accent, --accent-contrast, --code-bg, --hl, --hl-strong, --warn, --font-ui, --font-doc, --font-mono. - Example show: ```show <style>.flow{display:grid;gap:8px}.box{border:1px solid var(--border);padding:8px;border-radius:6px}</style> <div class='flow'><div class='box'>Parse</div><div class='box' style='background:var(--hl)'>Render</div></div> ``` - Example Mermaid: ```mermaid flowchart LR Question --> Explore --> Understand ``` - Mermaid mindmap, architecture, and Mermaid-side KaTeX syntax are not supported; use ```show or ordinary math around the diagram instead. - Streaming choreography: send prose in 1-3 sentence chunks as usual. - Emit each visual fence contiguously, ideally in one chunk; readers see a placeholder until the fence closes. - Interleave prose -> visual -> prose when useful. Use a visual only when it genuinely carries the explanation. Finish streaming by sending the remaining final chunk in a normal call with a short 'title'. Partial chunks concatenate verbatim: include your own spacing/newlines and never repeat text already sent. The final call blocks and returns the next event. If it returns status='keep_listening', immediately call open_rabbithole { hole_id }; if the host reports a tool timeout (e.g. timed out awaiting tools/call), do the same. Do not re-send content; asks are saved.
Input schema
{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "maxLength": 200,
      "description": "Active session ID from open_rabbithole"
    },
    "request_id": {
      "type": "string",
      "maxLength": 200,
      "description": "The request_id of the branch_request being answered"
    },
    "title": {
      "type": "string",
      "maxLength": 2000,
      "description": "Short label for the new node (a few words; required on the final call)"
    },
    "content": {
      "type": "string",
      "maxLength": 10485760,
      "description": "Markdown chunk (partial) or the remaining markdown (final call)"
    },
    "base_url": {
      "type": "string",
      "maxLength": 2000,
      "description": "Document URL used to resolve relative markdown links/images; absolute http(s) only"
    },
    "assets": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 300,
            "description": "Filename to use in markdown asset: references, e.g. diagram-1.png"
          },
          "file_path": {
            "type": "string",
            "maxLength": 4096,
            "description": "Local path to the image file to copy into this Rabbithole"
          }
        },
        "required": [
          "name",
          "file_path"
        ],
        "additionalProperties": false
      },
      "maxItems": 50,
      "description": "Local image files to attach to this hole; reference them in markdown as asset:name.png images"
    },
    "partial": {
      "type": "boolean",
      "description": "true = stream this chunk into the pending answer and return immediately; omit/false = finish the answer and block for the next event"
    }
  },
  "required": [
    "session_id",
    "request_id",
    "content"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
list_rabbitholesList saved Rabbitholes (most recently updated first) so you can resume one by hole_id via open_rabbithole. Returns id, title, last-updated time, and node count for each.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {}
}
open_rabbitholeOpen a document on an infinite canvas so the human can read it and dive down rabbit holes. Start a NEW hole with { title, content } (or { title, file_path }), or RESUME a saved one with { hole_id } (use list_rabbitholes to find it). When opening content fetched from a URL or repo, pass the document's own URL as base_url so relative images and links resolve. For local images that are not on the web, pass assets and reference them as ![alt](asset:name.png). For a local PDF, pass its path directly as file_path; Rabbithole extracts text and opens native JPEG pages automatically. For arXiv, prefer the HTML version with base_url when available. The canvas opens in the browser and this call BLOCKS until the human acts. It returns status='branch_request' when the human selects text and asks a question — answer it with answer_branch. A branch_request with EMPTY selected_text is a follow-up question about the parent document as a whole (a chat reply beneath it) — answer conversationally in that document's context. A branch_request may carry a 'lens' (explain | eli5 | example | deeper) — the question text spells out the style the human tapped; honor it. One marked saved=true was asked while no agent was listening — answer it like any other. When region.image_path is present, it is either this selection's clip or the immediate parent's clip; read that image before answering and trust it over extracted text for math, tables, and figures. A convert_request asks you to transcribe the listed page image_path files under its inline rules; stream the document through answer_branch with that request_id. On a resumed hole the first branch_request carries a 'rehydration' field with the whole tree (and any saved_asks); read it to reload your context. Long waits periodically return status='keep_listening' with hole_id; immediately call open_rabbithole { hole_id } to keep listening, and do not re-send content. If the host reports a tool timeout (e.g. timed out awaiting tools/call), also re-call open_rabbithole { hole_id }; nothing is lost and asks are saved. It returns status='session_closed' when the human clicks Done or closes the tab.
Input schema
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "maxLength": 2000,
      "description": "Document title (required for a new hole)"
    },
    "content": {
      "type": "string",
      "maxLength": 10485760,
      "description": "Raw markdown for the starting document"
    },
    "file_path": {
      "type": "string",
      "maxLength": 4096,
      "description": "Path to a markdown or PDF file (PDF title is optional)"
    },
    "base_url": {
      "type": "string",
      "maxLength": 2000,
      "description": "Document URL used to resolve relative markdown links/images; absolute http(s) only"
    },
    "assets": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 300,
            "description": "Filename to use in markdown asset: references, e.g. diagram-1.png"
          },
          "file_path": {
            "type": "string",
            "maxLength": 4096,
            "description": "Local path to the image file to copy into this Rabbithole"
          }
        },
        "required": [
          "name",
          "file_path"
        ],
        "additionalProperties": false
      },
      "maxItems": 50,
      "description": "Local image files to attach to this hole; reference them in markdown as asset:name.png images"
    },
    "hole_id": {
      "type": "string",
      "maxLength": 200,
      "description": "Resume a saved hole instead of starting a new one"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Resources 0

  • None observed.

Resource templates 0

  • None observed.

Prompts 0

  • None observed.

Remote endpoints

EndpointTransportAuthenticationHealthObserved
No verified remote endpoint is linked.

rabbithole MCP Server questions

How do I install rabbithole MCP Server?

Install the selected package version with: npm install --save-exact @shlokkhemani/rabbithole@0.1.0

What tools does rabbithole MCP Server provide?

rabbithole MCP Server exposed 3 tools during independent protocol observation, including answer_branch, list_rabbitholes, open_rabbithole.

Is rabbithole MCP Server secure?

The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.

Explore related MCP server guides

Curated product and capability guides containing this catalog record.

Official vs Community MCP Servers

Let’s talk about MCP security.

Share your details and our security team will contact you.