Skip to main content
Glama
Cmarl
by Cmarl

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 in

homestead 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 shelf

Then start it:

homestead serve                   # http://127.0.0.1:8021

Where 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-mcp

Hermes

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

homestead_search

Semantic search; returns documents with verbatim passages

homestead_add

Import a file, wait for indexing, report the result

homestead_categories

List shelves, with counts and safety cautions

homestead_docs

List documents, optionally by shelf

homestead_health

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

homestead_status

Is this machine ready? Returns a check per component and a next field naming the one thing to fix

homestead_catalog

What can be installed: packs, shelves, sources, licences, sizes

homestead_install

Download and index chosen shelves. Returns a job id immediately

homestead_index_build

Rebuild the index from documents already present

homestead_job

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 library

homestead 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

~/.local/share/homestead/corpus

downloaded documents

HOMESTEAD_CORPUS

~/.local/share/homestead/index

the vector index

HOMESTEAD_INDEX

~/.local/share/homestead/library

documents you added

HOMESTEAD_LIBRARY

~/.local/share/homestead/models

the embedding model

HOMESTEAD_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 shelf

How 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_HOST

Now 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 support

The 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 tools
homestead_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoOptional display title; defaults to one derived from the filename.
categoryYesCategory slug to file it under -- see homestead_categories.
file_pathYesAbsolute path to the file to import.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoCategory slug, or empty for every document.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
packNoA named pack instead of individual shelves, e.g. 'essentials'. Defaults to essentials.
indexNoBuild the search index when the download finishes.
shelvesNoShelf slugs to install (see homestead_catalog).

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 10 tool updatesv0.1.0
    • First observedhomestead_add
    • First observedhomestead_catalog
    • First observedhomestead_categories
    • First observedhomestead_docs
    • First observedhomestead_health
    • First observedhomestead_index_build
    • First observedhomestead_install
    • First observedhomestead_job
    • First observedhomestead_search
    • First observedhomestead_status

TDQS

A4/5.0

Scored across 10 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers