homestead-mcp
Supports importing Stack Exchange data dumps into the local library and searching their content alongside other documents.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@homestead-mcphow do I treat a deep cut if there's no doctor?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Homestead
An offline library of practical knowledge — first aid, water, food preservation, power, repair, livestock — that stays searchable when the internet does not.
Everything runs locally: the documents sit on your disk, the embedding model runs on your machine, and no query ever leaves it. It ships with an MCP server, so Claude or any other MCP-speaking assistant can search the library and file new documents into it.
$ homestead search "how do I treat a deep cut"
Wilderness First Aid Curriculum and Doctrine Guidelines [first-aid]
Control bleeding with direct pressure. Apply a gloved hand and firm,
steady pressure directly over the wound for at least ten minutes...Install
pip install 'homestead-library[all]' # the machine that hosts the library
homestead install # choose your shelves, pull the documents inhomestead install asks what you want on your shelves, downloads it from the
original publishers, and builds the search index:
What would you like on your shelves?
1) Essentials -- 9 documents, ~66 MB
Keeping people alive and fed when the power is out: first aid, water,
food preservation, emergency preparedness.
2) Growing & keeping food -- 8 documents, ~90 MB
3) Building & fixing -- 5 documents, ~75 MB
4) Everything -- 22 documents, ~200 MB
5) Choose shelf by shelfThen start it:
homestead serve # http://127.0.0.1:8021Where the documents come from
This project ships a catalog, not a corpus. Nothing is redistributed here.
Every entry in shelves.toml points at
the publisher's own copy — mostly US federal agencies (FEMA, CDC, NOAA, USDA,
the armed services), university extension services, and open-licence
publishers like Hesperian and the FAO. The catalog records the licence for each
one.
That keeps the repo small, keeps sources current, and keeps the licensing honest. It also means links rot: if a download fails, the installer says so, and a catalog fix is a welcome pull request.
Related MCP server: diamond
Using it from an AI assistant
The MCP server is dependency-free and starts instantly, so it can live on a different machine from the library if you like.
Claude Code
claude mcp add homestead -- homestead-mcpHermes
hermes mcp add homestead --command "$(command -v homestead-mcp)"Claude Desktop — add to claude_desktop_config.json:
{
"mcpServers": {
"homestead": {
"command": "homestead-mcp",
"env": { "HOMESTEAD_URL": "http://127.0.0.1:8021" }
}
}
}Query tools — talk to a running library:
Tool | What it does |
| Semantic search; returns documents with verbatim passages |
| Import a file, wait for indexing, report the result |
| List shelves, with counts and safety cautions |
| List documents, optionally by shelf |
| Is the library up, and how much is in it |
Lifecycle tools — set a library up from nothing, no shell required:
Tool | What it does |
| Is this machine ready? Returns a check per component and a |
| What can be installed: packs, shelves, sources, licences, sizes |
| Download and index chosen shelves. Returns a job id immediately |
| Rebuild the index from documents already present |
| Poll an install or index job to completion |
MCP tools are read at client start-up, so restart your assistant's session after adding the server.
For agents
This is built to be installed and driven by agents, not just people.
Nothing blocks. Installing takes minutes and the first index build downloads
a ~2 GB model, so homestead_install returns a job id straight away and you
poll homestead_job until status is done or error.
Start with homestead_status. It works with nothing running and no corpus
on disk, and every failing check carries its own remedy. The top-level next
field is the single command to run:
{
"ready": false,
"checks": {
"corpus": {"ok": false, "documents": 0, "remedy": "homestead install --pack essentials --yes"},
"index": {"ok": false, "remedy": "homestead index"},
"embeddings": {"ok": true, "remedy": null},
"server": {"ok": false, "remedy": "homestead serve"}
},
"next": "homestead install --pack essentials --yes"
}From a shell, every command takes --json, and errors carry the fix:
homestead doctor --json # same object as homestead_status
homestead install --list --json # the whole catalog, with licences
homestead bootstrap --pack essentials --json # install + index, one step
homestead search "water purification" --json
homestead --url http://other-host:8021 search "..." # target another libraryhomestead install never prompts when stdin is not a terminal. Without a
selection it exits 2 and tells you which flags would have worked, rather than
guessing or hanging:
{
"ok": false,
"error": "no shelves selected and stdin is not a terminal",
"remedy": "homestead install --pack essentials --yes --json",
"valid_packs": ["essentials", "growing", "fixing", "everything"]
}Downloads are idempotent — a finished file is never re-fetched, so re-running an install is safe and cheap.
Commands
homestead install choose shelves and download them
homestead install --list show the catalog and its licences
homestead index (re)build the search index
homestead serve run the library server (loopback only)
homestead serve --host 0.0.0.0 share it on your network
homestead search QUERY search from the terminal
homestead add FILE -c soil add a document of your own
homestead bootstrap install + index in one step (unattended)
homestead paths where everything lives
homestead doctor check the installation (--json for agents)Where things live
Defaults follow the XDG spec; every path is overridable.
Path | Holds | Override |
| downloaded documents |
|
| the vector index |
|
| documents you added |
|
| the embedding model |
|
Set HOMESTEAD_HOME to move all of it at once.
Local shelves
A library grows shelves the packaged catalog knows nothing about. Declare them
in site.toml (in HOMESTEAD_HOME, or set HOMESTEAD_SITE_CONFIG) rather than
forking:
[[category]]
slug = "boatbuilding"
label = "Boatbuilding"
icon = "~"
match = "boats" # any corpus path containing this lands on this shelfHow it works
Documents are split into overlapping ~1200-character passages and embedded with BAAI/bge-m3 locally. Search embeds the query and takes a cosine top-k, grouped by document. For PDFs the server keeps a chunk → page map, so an answer can tell you the page to turn to.
The corpus index is read-only. Anything you add later goes into a separate overlay that is searched alongside it, so adding documents can never corrupt the base index — and deleting the overlay loses only your additions.
A word on trust
This is reference material, gathered for the situation where better help is not available. It is not medical, legal, or engineering advice. Two shelves carry explicit cautions the software will show you — foraging (misidentification kills) and food preservation (follow current USDA process times, not the ones in century-old cookbooks). Semantic search has no idea a 1918 canning time has since been proven dangerous. Read accordingly.
Security
The server binds 127.0.0.1 by default and has no authentication. That
combination is safe: nothing off your machine can reach it.
To use the library from a phone or another computer, bind wider:
homestead serve --host 0.0.0.0 # or set HOMESTEAD_HOSTNow anyone who can reach that port can read your whole library and add
documents to it, so do this only on a network you trust — a home LAN, or
better, a private network like Tailscale. Loopback and Tailscale peers are
always trusted; other clients are challenged with Basic Auth if you set
credentials (.auth.env, or HOMESTEAD_AUTH_USER / HOMESTEAD_AUTH_PASS).
With none set there is no challenge at all. The server warns you on startup
when it is bound beyond loopback without credentials.
Contributing
Adding a source to the catalog is the most useful contribution. It must be free
to download from the publisher, correctly licensed, and recorded with its real
licence in shelves.toml. See the notes at the top of that file.
Installing
pip install homestead-library # CLI + MCP server, no dependencies
pip install 'homestead-library[server]' # + embeddings, to host a library
pip install 'homestead-library[all]' # + Stack Exchange dump supportThe command is homestead; the MCP server is homestead-mcp.
Licence
MIT. The documents the installer downloads carry their own licences, recorded per-entry in the catalog. The Stack Exchange corpora are CC BY-SA 4.0 — attribution belongs to Stack Exchange and the individual authors.
Available Tools
10 toolshomestead_addA
Import a document into the Homestead Library. Reads the file from disk, uploads it, waits for the library to chunk and index it, and reports the result. PDFs and text both work. The document becomes searchable via homestead_search.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional display title; defaults to one derived from the filename. | |
| category | Yes | Category slug to file it under -- see homestead_categories. | |
| file_path | Yes | Absolute path to the file to import. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers: it discloses the multi-step behavior (read from disk, upload, wait for chunking/indexing, report result) and the supported file types. It doesn't cover failure modes or side effects, but the core blocking behavior and outcome are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: purpose is front-loaded, the operation sequence follows, and compatibility/outcome are stated last. Every sentence contributes information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter tool with no output schema, the description explains the full lifecycle and result. It doesn't detail the exact report shape, but 'reports the result' combined with the clear workflow is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds minor useful context by stating that 'PDFs and text both work,' which clarifies accepted file_path values, but the schema already documents parameter purpose and defaults adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Import a document into the Homestead Library.' It clearly distinguishes from siblings by framing this as the ingest operation, with 'The document becomes searchable via homestead_search' tying it to the search sibling without conflating them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: use this tool when you need to add a document to the library and make it searchable. It doesn't explicitly name alternatives or exclusions, but the workflow description and searchability outcome make the intended use unambiguous for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
homestead_catalogA
List what can be installed: packs, shelves, and every source with its publisher, licence and download size. Call this before homestead_install to choose shelves.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses the read-only nature via 'List' and describes the output contents ('packs, shelves, and every source with its publisher, licence and download size'), which tells the agent what to expect. It does not mention side effects, performance, or auth, but for a catalog listing that is minimal risk. The description is transparent enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The first sentence states the action and output detail, the second gives a direct follow-up action. Key information is front-loaded, and every word earns its place. This is an exemplar of concise, well-structured tool documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-argument, no-output-schema, no-annotation tool, the description is complete. It explains what data will be returned (installable items with publisher, licence, download size) and why/when to call it. An agent has enough to decide to invoke it and to interpret the result without external documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 under the rubric. The description adds no parameter-level semantics because there are none to describe. It does signal the output granularity, which indirectly helps the agent understand what it will receive without any required arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('List') and a clear resource ('what can be installed'), enumerating the exact contents (packs, shelves, sources with publisher, licence, download size). It also anchors itself against a sibling ('Call this before homestead_install'), which prevents confusion with the install workflow. This gives an agent an unambiguous picture of the tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call this tool: 'Call this before homestead_install to choose shelves.' That provides a clear temporal condition and a related sibling. It does not enumerate other alternatives (e.g., when to use homestead_search or homestead_categories instead), so it stops short of a full when-not matrix, but the core usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
homestead_categoriesA
List the library's categories -- slug, label, document and chunk counts, and any safety caution attached to the shelf. Call this to pick a valid slug for homestead_search or homestead_add.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden and does disclose the read-only nature via 'List', and it reveals that results include safety cautions attached to shelves. It does not discuss error conditions or access requirements, but for a parameterless listing tool this is a reasonable level of transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences accomplish everything: the first states the operation and its outputs; the second gives the immediate usage guidance. There is no filler, and the purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paramless listing tool, this description is complete: it names the output fields, flags the safety-caution element, and explains how the result should be used with sibling tools. Nothing an agent needs to select or invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema covers 100% of them by being empty, so there is nothing the description needs to clarify. The baseline for zero-parameter tools is 4, and no additional parameter guidance is warranted here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List'), a precise resource ('the library's categories'), and enumerates the exact output fields (slug, label, counts, safety caution). The closing sentence ties the tool to its siblings by explaining it supplies slugs for homestead_search and homestead_add, making its role unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to call it: to pick a valid slug before using homestead_search or homestead_add. It provides clear context for the primary use case, though it does not enumerate when-not-to-use scenarios or list alternative tools for other needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
homestead_docsB
List the documents in the library, optionally limited to one category slug.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Category slug, or empty for every document. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the disclosure burden. It accurately conveys that this is a read-only listing operation with optional category filtering, but it does not mention behaviors such as response format, pagination, ordering, or behavior for invalid or empty categories. This is acceptable for a simple list tool but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It communicates the core operation and the optional parameter clearly, and every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description provides enough to make a basic call. It falls slightly short of complete because it does not clarify how this relates to homestead_search or homestead_catalog, nor what the returned document list looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'category' parameter is already well documented. The description adds only the phrase 'optionally limited to one category slug,' which mostly restates the schema rather than providing new semantic meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('List'), a specific resource ('documents in the library'), and an optional scoping condition ('limited to one category slug'). It is easy to understand what the tool does, though it does not explicitly differentiate it from siblings like homestead_search or homestead_catalog.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not say when to use this tool versus alternatives such as homestead_search or homestead_catalog. There is no when-to-use guidance, exclusion context, or mention of sibling tools, so an agent must infer the appropriate choice from the tool name and minimal wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
homestead_healthA
Check that the library server is up, and how much it is holding (passages, documents, categories, uptime).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It does convey that the tool is a read-only health check reporting uptime and counts, but it does not state response/error behavior or explicitly confirm that it has no side effects. The verb 'Check' implies safety, but that is left implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, front-loading the purpose and then enumerating the observed metrics. Every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless health-check tool, the description covers the main purpose and the data the agent can expect. It is slightly incomplete because it does not explicitly describe the success/failure output shape or differentiate from homestead_status, but nothing critical is missing for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so there is nothing for the description to add. The baseline of 4 applies because no parameter documentation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Check') and identifies the resource ('library server') plus the specific data points returned (passages, documents, categories, uptime). It does not, however, distinguish itself from the sibling tool homestead_status, which seems to overlap substantially.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to prefer this tool over alternatives such as homestead_status or homestead_catalog. There are no exclusions, prerequisites, or contextual conditions, leaving the agent to guess which health/status-related tool to invoke.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
homestead_index_buildA
Rebuild the search index from the documents already downloaded. Returns a job id; poll homestead_job.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals the asynchronous nature by returning a job id and referencing polling, but it does not disclose potential side effects (e.g., overwriting the index), prerequisites beyond downloaded documents, permissions, or error conditions. This is a significant gap for an operation that rebuilds a search index.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states the action, source, and result. No wasted words, and the key information (job id and polling) is included immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, it adequately covers purpose, return value, and next step (poll homestead_job). It could add a note about the operation being long-running or destructive, but the job id implies asynchrony, and the tool's simplicity makes it reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so per the baseline, 4 is appropriate. The description adds context about what the rebuild operates on (documents already downloaded) but does not need to explain parameters since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Rebuild the search index from the documents already downloaded.' It clearly distinguishes this from siblings like homestead_search (which searches) and homestead_add (which adds documents), and it names the return value (job id).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context 'from the documents already downloaded' implies when it should be used, but there is no explicit guidance on when not to use it or alternatives. It does mention polling homestead_job as a follow-up, but that is a next step, not a usage condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
homestead_installA
Download documents into the library and index them, so it can be searched. Use this to set a library up from nothing. Returns immediately with a job id -- the work takes minutes, so poll homestead_job until status is 'done'. The first index build also downloads a ~2 GB embedding model.
| Name | Required | Description | Default |
|---|---|---|---|
| pack | No | A named pack instead of individual shelves, e.g. 'essentials'. Defaults to essentials. | |
| index | No | Build the search index when the download finishes. | |
| shelves | No | Shelf slugs to install (see homestead_catalog). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden. It discloses that the tool returns immediately with a job id, that work takes minutes, and that the first index build downloads a ~2 GB embedding model – all critical operational details. This is exemplary transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no waste: purpose is front-loaded, async behavior and polling follow, and the model download is mentioned last. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fully adequate for a complex tool. It covers purpose, usage, async workflow, and a significant resource warning (2 GB download). It also states the return value (job id) despite no output schema. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description adds a useful pointer to homestead_catalog for shelf slugs but doesn't elaborate on pack or index beyond the schema. Baseline 3 is appropriate since the schema handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (download and index documents) and resource (library), and clarifies its role as the initial setup tool ('set a library up from nothing'). This distinguishes it from sibling tools like homestead_add, which likely handle incremental additions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use it (setting up a library from nothing) and how to handle the async job (poll homestead_job until done). It doesn't explicitly name alternatives like homestead_add, but the context strongly implies it's for initial bulk setup rather than ongoing additions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
homestead_jobA
Progress of a homestead_install or homestead_index_build job. Poll until status is 'done' or 'error'.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that the tool is a polling operation and that statuses eventually reach 'done' or 'error', which is useful. However, it doesn't state whether the operation is read-only, what intermediate statuses may appear, or how errors are surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words. The purpose is front-loaded and the polling condition is stated directly. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter polling tool, the description is adequate: it names the job types, the polling behavior, and the terminal statuses. But without an output schema, it leaves the response shape and the source of job_id unstated, which are meaningful gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description adds little about job_id beyond what the schema already shows. It implies the ID identifies a homestead_install or homestead_index_build job, but it never says where the job_id comes from or what format it takes, so the agent must guess or infer the source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool reports progress of a homestead_install or homestead_index_build job, and adds the polling behavior with terminal statuses 'done' or 'error'. This clearly distinguishes it from sibling tools like homestead_install and homestead_index_build, which start the jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: this is the follow-up polling tool for jobs launched by homestead_install or homestead_index_build, and instructs the agent to poll until a terminal status appears. It doesn't explicitly list when not to use it or name alternatives, but the intended usage is easy to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
homestead_searchA
Search the offline Homestead Library -- a local corpus of practical self-reliance references (first aid, medical, food preservation, water, power, repair, survival and more). Returns matching documents with verbatim passages from the source texts. Prefer this over general knowledge for practical homestead, emergency or preparedness questions: these are the documents the user chose to keep on hand, and they stay available with the internet down.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | How many documents to return (1-30). | |
| query | Yes | What to look for, in plain language. | |
| category | No | Category slug to narrow to (e.g. 'first-aid', 'food-preservation'), or 'all'. See homestead_categories. | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden. It discloses that the search is offline, that results are sourced from a local corpus, that passages are returned verbatim, and that availability persists without internet. These are meaningful behavioral traits that an agent needs to know. It does not cover every possible detail, but for a read-only search tool it is transparent enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action and resource, followed by a concise explanation of what is returned and when to prefer it. The parenthetical list of topics is somewhat long but provides useful scope context. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, three parameters, and no output schema, the description provides sufficient context for selection and invocation: what it searches, what it returns, and when it is preferred. It could mention category enumeration or sibling distinctions, but the schema already points to homestead_categories, so this is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all three parameters with descriptions, including 'k' defaults/rangeable values and the 'category' slug semantics. Schema description coverage is 100%, so the description is not required to compensate. The only parameter-related phrase in the description is 'matching documents,' which is already implied by the schema, so no additional semantic value is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search the offline Homestead Library.' It further states that it returns 'matching documents with verbatim passages from the source texts,' which clarifies the exact output. It also differentiates the tool from general knowledge by emphasizing the local, offline nature of the corpus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to prefer this tool over general knowledge for 'practical homestead, emergency or preparedness questions' and gives the rationale: these are the user's curated documents and they work offline. It does not explicitly compare against sibling tools like homestead_categories or homestead_docs, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
homestead_statusA
Check whether this machine's library is set up and ready to search. Unlike homestead_health this works with nothing running, so call it FIRST when a search fails or when setting a library up. Returns a check per component (corpus, index, embeddings, server) and a 'next' field naming the single command or tool that will fix the first problem.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It discloses that the tool works with nothing running, returns a per-component check (corpus, index, embeddings, server), and includes a 'next' field with a fix. It stops short of explicitly stating it is side-effect free or covering auth/rate limits, but for a status check this is strong coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose, sibling contrast and usage timing, and return shape. The description is front-loaded with the core purpose and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully explains what the tool returns: a check per component and a 'next' field with a fix. It also covers when to call it and how it differs from homestead_health. Missing details (e.g., exact check value formats) are not needed for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts zero parameters and the schema is empty, so description cannot add parameter meaning. Per the baseline rule for 0-parameter tools, a score of 4 is appropriate; the schema already covers everything.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Check whether this machine's library is set up and ready to search') and explicitly differentiates from the sibling homestead_health by noting it 'works with nothing running'. An agent can distinguish this tool from its siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'call it FIRST when a search fails or when setting a library up'. It also names the alternative (homestead_health) and the differentiating condition ('unlike homestead_health this works with nothing running'), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v0.1.0- First observed
homestead_add - First observed
homestead_catalog - First observed
homestead_categories - First observed
homestead_docs - First observed
homestead_health - First observed
homestead_index_build - First observed
homestead_install - First observed
homestead_job - First observed
homestead_search - First observed
homestead_status
TDQS
Scored across 10 tools
Each tool has a largely distinct role: search, add, install, index, job polling, and state checks are separable. The only mild ambiguity is between health/status and add/install, but the descriptions explicitly clarify when each should be used.
All tools share the homestead_ prefix with consistent lowercase snake_case. Action tools use verbs (search, add, install, index_build) while informational tools use nouns (categories, docs, health, status, catalog, job), creating a predictable pattern.
Ten tools is well within the ideal range and each maps to a distinct part of the library lifecycle: browsing, searching, ingesting documents, installing packs, rebuilding indexes, and monitoring jobs. Nothing feels redundant or unnecessary.
The set covers the core workflows well: setup, install, add, search, list, health/status, and async job tracking. There are minor gaps such as no delete/remove or document metadata update tools, but those can be worked around and are not central to the stated purpose.
Maintenance
Related MCP Connectors
Agentic search over your Dewey document collections from any MCP-compatible client.
Knowledge base MCP for AI agents on iknow.dev. Search, read, and maintain via OAuth.
- docs2mcpOAuthcom.docs2mcp
Query your own PDFs and documents from any MCP client. Every answer cites the page it came from.
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
Related MCP Servers
- FlicenseAqualityDmaintenanceScrapes, stores, and searches documentation locally, enabling AI assistants to access and query documentation via MCP.114-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search and read offline documentation from synced libraries via MCP tools, providing hybrid keyword and semantic search without network calls.2 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables offline search of personal notes and FAQ collections through MCP tools.MIT
- FlicenseNot gradedqualityBmaintenanceEnables agents to search and retrieve clean, structured content from local offline ZIM archives such as Wikipedia, medical docs, DevDocs, and Stack Exchange through a unified MCP interface.-