Skip to main content
Glama
Khiip
by KhiipAI

Khiip

This is the official Khiip repository.

Khiip's self-hosted distribution is paused while we restructure how Khiip ships. Existing installs keep working, and released versions remain AGPL. If you're affected, email jason@khiip.com — more when it's ready.

Website: khiip.com · Docs: docs.khiip.com

Available Tools

6 tools
capture_urlA

Capture a URL into the Khiip substrate.

Dispatches to the appropriate extractor (X, Reddit, web article, Wikipedia, YouTube, PDF). Stores raw source bytes at Source-tier plus a typed payload in the vault. Submits to Wayback Machine unless disabled. Idempotent by default (dedup by URL hash).

Args: url: The URL to capture. force_new: If True, skip dedup-by-url and force creation of a new capture (overrides the existing capture's superseded_by pointer). Defaults to False.

Returns: Capture record (id, source, vault_path, payload, archive_urls, etc.) on success; structured error dict on failure.

Inputs: url (required), force_new. Returns: object

daemon_statusA

Combined daemon health + metadata.

Aggregates GET /health (extractor + wayback liveness) and GET /api/v1/meta (version, configured extractors, embedder model + dimension). Useful as a first call when an agent connects, to confirm the daemon is reachable and to learn what sources + capabilities are available.

Returns: On success: {"health": {...}, "meta": {...}, "mcp_server_version": "0.1.1"}. On daemon-unreachable: structured error dict.

Inputs: no named parameters. Returns: object

get_captureA

Fetch a single capture by id, in the requested format.

Args: capture_id: The capture ULID. format: One of json (default; payload as JSON), markdown (vault markdown), vault-frontmatter (YAML frontmatter only), or legacy-markdown (pre-typed-payload format).

Returns: On success: payload in the requested format wrapped in a {"format": ..., "body": ...} envelope. On failure: structured error dict.

Inputs: capture_id (required), format. Returns: object

list_capturesA

List captures, newest first.

Args: source: Optional filter by source name (x, reddit, web, wikipedia, youtube, pdf). When None, returns all sources. limit: Page size (1-500; default 50). offset: Pagination offset.

Returns: On success: {"captures": [Capture, ...], "count": int}. On failure: structured error dict.

Inputs: limit, offset, source. Returns: object

recallA

Semantic recall over captured payloads by natural-language query.

Ranks captures by cosine similarity over typed-payload embed-text composition (per ADR-0009 §C7). Returns top-k captures with their scores.

Args: query: Natural-language recall query. limit: Maximum number of results to return (1-100; default 10).

Returns: Recall response with query, embedder_model, embedder_dimension, and results (list of {capture, score}).

Inputs: query (required), limit. Returns: object

refetch_captureA

Refetch one dimension of an existing capture.

Dimensions, per ADR-0010 commitment 6 + ADR-0009 §C2 replay (S42):

  • extraction (default): NETWORK re-fetch → new capture, old marked superseded (can observe a changed/deleted post).

  • re-extract: OFFLINE — re-derive the typed payload from the preserved source bytes with the current extractor (recovers under-extracted fields; survives source deletion). In place; same capture id.

  • re-render: OFFLINE — re-render the markdown body from the existing typed payload (apply an improved renderer / skin). In place.

  • media: re-walk MediaFetcherRegistry on existing payload; updates Media[].download_status in place; same capture id.

  • wayback: re-submit canonical URL to Wayback Save Page Now; updates archive_urls['wayback'] in place; same capture id.

Args: capture_id: The capture ULID to refetch. dimension: Which dimension to refetch (extraction | re-extract | re-render | media | wayback). Defaults to extraction.

Returns: Updated capture record on success; structured error dict on failure.

Inputs: capture_id (required), dimension. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool has a distinct purpose: capturing a URL, fetching a capture, listing captures, semantic recall, refetching dimensions, and checking daemon status. No overlap in functionality.

    Naming Consistency4/5

    Tools follow a verb_noun pattern with snake_case (e.g., capture_url, get_capture). 'daemon_status' is a noun phrase but still clear and consistent in style. Minor deviation from verb-first naming.

    Tool Count5/5

    6 tools is well-scoped for a URL capture and retrieval server. Each tool addresses a core operation without unnecessary redundancy.

    Completeness4/5

    Covers create, read, list, search, and update (via refetch). Missing a delete tool, which is a notable gap for a complete lifecycle, but the core workflows are covered.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      A
      maintenance
      Provides local-first web intelligence over MCP with tools for search, fetch, crawl, extract, cache, find-similar, research, and autonomous agent loops, requiring no API keys.
      10
      1,371 npm
      5,543
      AGPL 3.0
    • A
      license
      A
      quality
      B
      maintenance
      Persistent knowledge-base MCP server. Semantic search with source citations over saved YouTube videos, podcasts, articles and PDFs — one endpoint for every MCP-capable AI client.
      28
      Elastic 2.0
    • A
      license
      Not graded
      quality
      F
      maintenance
      MCP server enabling local-first web search, fetch, extract, and caching with citeable excerpts, no API key required. Supports research workflows for agents and apps.
      96 npm
      1
      MIT