Skip to main content
Glama

Add a custom HACS repository

hacs_add_custom_repository
Idempotent

Register a custom repository with HACS by URL and category so it becomes installable. Use when the repository is not in the default store and must be added before installation.

Instructions

Register a custom repository with HACS so it becomes installable.

Calls the hacs/repositories/add WebSocket command (plural — distinct from the singular hacs/repository/* commands used elsewhere in this namespace) with url as its repository field and category. This only registers the repository — it does not install it.

Use when: a repository is not in HACS's default store and needs adding before it can be installed. Not for: installing an already-registered repository — use hacs_install_hacs_repository. Returns: HACS's add result, or {"error": ..., "hint": ...} if the WebSocket call fails. Errors: {"error": str(exception), "hint": "HACS may not be installed, or the WS command name has changed"} when url/category is invalid or the WebSocket command fails.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL of the repository to register with HACS, e.g. a GitHub repo URL.
categoryYesHACS category for the repository: integration, plugin, theme, template, appdaemon or python_script.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.25.1
    • addedInput schema / properties / category / description
      Added value: +"HACS category for the repository: integration, plugin, theme, template, appdaemon or python_script."
    • addedInput schema / properties / url / description
      Added value: +"Full URL of the repository to register with HACS, e.g. a GitHub repo URL."
  2. First observedv0.3.0

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=true). Discloses the underlying WebSocket command name and its plural/singular distinction, the error shape with a hint field, and the specific failure modes. This is the kind of context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then organizes the rest into Use when / Not for / Returns / Errors, which is easy to scan. Slightly verbose with the parenthetical about plural vs singular commands, but every section earns its place.

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?

Complete for a mutation tool with two required params, a 100%-covered schema, an output schema, and annotations. It covers return shape and error contract, which the output schema may not fully express, and gives clear routing to the install sibling.

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% with per-field descriptions and an enumerated category list, so the schema does the heavy lifting. The description does add the mapping detail (url is passed as the repository field) but nothing else about format or the category values, which are already in the schema. Baseline 3 is appropriate.

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+resource ('Register a custom repository with HACS'), clarifies scope ('only registers the repository — it does not install it'), and explicitly names the sibling it is NOT ('hacs_install_hacs_repository'). An agent can distinguish it from install/update/uninstall siblings without opening any schema.

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?

Provides explicit 'Use when' (repository not in the default store) and 'Not for' (installing an already-registered repository — use hacs_install_hacs_repository) guidance, directly routing the agent to the correct alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools