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
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools