docs

Search and read the Free Battery Factory docs (LiteShip, batpak) as live MCP tools.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
72%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,133Tokens (tool definitions)
~1.4 KBTypical response size
Moderate attention impact (0.89% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "docs": {
      "url": "https://freebatteryfactory.com/mcp"
    }
  }
}

Remote endpoints

https://freebatteryfactory.com/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_products

List the Free Battery Factory products whose documentation is hosted here, each with a one-line blurb, current docs version, and canonical URLs. Presence here means the docs are published, not that the product is in active development — each blurb states its lifecycle. Call this first to discover the valid `product` ids used by the other tools.

Input Schema

{
  "type": "object",
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "products": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "blurb": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "docsUrl": {
            "type": "string"
          },
          "llmsFullUrl": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "label",
          "blurb",
          "docsUrl"
        ]
      }
    }
  },
  "required": [
    "products"
  ]
}
🟢search_docs(query, product, limit)

Full-text search across the product documentation. Returns the best-matching pages with title, description, canonical URL, matched section headings, and a snippet. Omit `product` to search every product at once, or pass one of the ids from list_products to scope it.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search terms, e.g. \"boundary hysteresis\" or \"deterministic replay\".",
      "minLength": 1
    },
    "product": {
      "type": "string",
      "description": "Optional product id from list_products to scope the search. Omit to search all products."
    },
    "limit": {
      "type": "integer",
      "description": "Maximum results to return (default 8, max 25).",
      "minimum": 1,
      "maximum": 25
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "product": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "section": {
            "type": [
              "string",
              "null"
            ]
          },
          "matchedHeadings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "snippet": {
            "type": "string"
          }
        },
        "required": [
          "product",
          "slug",
          "title",
          "url"
        ]
      }
    }
  },
  "required": [
    "results"
  ]
}
🟢get_doc(product, slug)

Fetch a single documentation page as Markdown, given a product id and a page slug (both come from list_products / search_docs results, or a doc URL like /liteship/overview). Returns the title, description, a heading outline, and the full Markdown body.

Input Schema

{
  "type": "object",
  "properties": {
    "product": {
      "type": "string",
      "description": "Product id from list_products (e.g. \"liteship\", \"batpak\")."
    },
    "slug": {
      "type": "string",
      "description": "Page slug, e.g. \"overview\" or \"factory\" (from search_docs results or the last path segment of a doc URL)."
    }
  },
  "required": [
    "product",
    "slug"
  ],
  "additionalProperties": false
}
🟢get_llms_full(product)

Return a link to the complete, source-linked agent reference (llms-full.txt) for a product — its entire prose, API surface, and examples in one document. This file is large, so it is returned as a resource link and canonical URL rather than inlined; use search_docs/get_doc for targeted lookups and this when you want the whole corpus.

Input Schema

{
  "type": "object",
  "properties": {
    "product": {
      "type": "string",
      "description": "Product id from list_products."
    }
  },
  "required": [
    "product"
  ],
  "additionalProperties": false
}
🟢describe_page_dimensions

Describe the adaptive dimensions of this site's pages: each named layout regime, the states it can occupy, and the signal and thresholds it is carved from. These are the same boundary definitions that emit the page's @container CSS, so this is the page's real state space rather than a description of it. Read-only — no tool here changes the page. Caveat: each dimension's `current` field is an SSR-time fallback (always the first state), NOT the requesting browser's live state — this manifest is compiled once, server-side, with no viewport to read. HOW to find the live state differs per dimension — some have a `data-czap-state` DOM attribute to read, some do not and must be derived from viewport width against the stated thresholds instead — so read each dimension's own `description` rather than assuming one mechanism for all of them.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "dimensions": {
      "type": "object",
      "description": "Dimension name -> { states, current, exclusive, description }. `current` is an SSR fallback (always states[0]), not the live browser state. How to find the real live state is NOT uniform across dimensions — it is a DOM attribute for some, viewport-derived for others — so each dimension's own `description` states which applies to it; do not assume one mechanism for every dimension."
    },
    "systemPrompt": {
      "type": "string",
      "description": "Rendered prose naming every dimension and its states."
    }
  },
  "required": [
    "dimensions",
    "systemPrompt"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools