docs
Search and read the Free Battery Factory docs (LiteShip, batpak) as live MCP tools.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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-httpWhat it can do
Tool inventory
Tools (5)
🟢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
Evidence