Skip to main content
Glama
SavageCore

lidarr-mcp

by SavageCore

lidarr_indexers

Control music sources by managing Lidarr indexers: add, edit, test, delete, and list indexers and related profiles via API.

Instructions

lidarr indexers operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_action_indexer(name, body={}) — Run an indexer provider-specific action (e.g. search, getCookies). WRITE: this modifies your Lidarr instance.

  • lidarr_bulk_delete_indexer(body={}) — Bulk delete indexers (body carries ids). DESTRUCTIVE: this deletes data.

  • lidarr_bulk_update_indexer(body={}) — Bulk update indexers (body is a list of resources). WRITE: this modifies your Lidarr instance.

  • lidarr_create_delayprofile(body={}) — Create a delay profile. WRITE: this modifies your Lidarr instance.

  • lidarr_create_indexer(force_save=False, body={}) — Add an indexer (body is an IndexerResource). WRITE: this modifies your Lidarr instance.

  • lidarr_create_releaseprofile(body={}) — Create a release profile. WRITE: this modifies your Lidarr instance.

  • lidarr_delete_delayprofile(id) — Delete a delay profile. DESTRUCTIVE: this deletes data.

  • lidarr_delete_indexer(id) — Delete an indexer. DESTRUCTIVE: this deletes data.

  • lidarr_delete_releaseprofile(id) — Delete a release profile. DESTRUCTIVE: this deletes data.

  • lidarr_get_delayprofile(id) — Fetch a single delay profile by id.

  • lidarr_get_indexer(id) — Fetch a single indexer by id.

  • lidarr_get_indexer_schema() — Return the indexer schema (available implementations).

  • lidarr_get_indexerflag() — List indexer flags.

  • lidarr_get_releaseprofile(id) — Fetch a single release profile by id.

  • lidarr_list_delayprofile() — List delay profiles.

  • lidarr_list_indexer() — List indexers.

  • lidarr_list_releaseprofile() — List release profiles (preferred/ignored terms).

  • lidarr_reorder_delayprofile(id, after_id=None) — Reorder delay profiles (move the profile with this id to a new order). Query params: after. WRITE: this modifies your Lidarr instance.

  • lidarr_test_all_indexer() — Test all enabled indexers. WRITE: this modifies your Lidarr instance.

  • lidarr_test_indexer(force_test=False, body={}) — Test an indexer configuration (body, without saving). WRITE: this modifies your Lidarr instance.

  • lidarr_update_delayprofile(id, body={}) — Update a delay profile. WRITE: this modifies your Lidarr instance.

  • lidarr_update_indexer(id, force_save=False, body={}) — Update an indexer. WRITE: this modifies your Lidarr instance.

  • lidarr_update_releaseprofile(id, body={}) — Update a release profile. WRITE: this modifies your Lidarr instance.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly labels each operation as WRITE or DESTRUCTIVE, even noting nuances like 'lidarr_test_indexer(force_test=False, body={}) — Test an indexer configuration (body, without saving). WRITE: this modifies your Lidarr instance.' This clearly alerts the agent to side effects. Read-only operations are left unlabelled, implying safety, which is acceptable given the explicit labeling of mutating ones.

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 well-organized bulleted list where each line is short, consistent, and necessary. It front-loads a general instruction ('Pass operation and an arguments dict...') followed by all 23 operations. No sentence is wasted; the length is justified by the number of operations covered. The formatting improves scanability for an agent.

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?

Given the complexity (23 operations, 2 generic parameters, output schema present), the description is remarkably complete. It covers every operation in the enum, their parameters, safety labels, and even explains the arguments dict concept. It does not need to explain return values because an output schema exists. The only minor gap is the lack of detailed resource schemas, but that is beyond the scope of a tool description and is likely provided elsewhere.

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 input schema has zero descriptions for parameters (0% schema coverage), so the description must compensate. It does so by listing each operation's parameter names and defaults, e.g., 'lidarr_create_indexer(force_save=False, body={})', and sometimes explaining body contents ('body carries ids', 'body is a list of resources'). This adds significant meaning beyond the schema, but it does not fully describe the internal structure of resource objects (e.g., IndexerResource), leaving some ambiguity.

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 clearly enumerates each operation with a specific verb and resource (e.g., 'lidarr_list_indexer() — List indexers', 'lidarr_delete_indexer(id) — Delete an indexer'), making the purpose of each sub-operation unambiguous. It fully distinguishes the tool's scope from sibling tools by listing all included operations in a detailed, function-by-function format.

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 implicitly defines when to use the tool: any operation involving Lidarr indexers, delay profiles, or release profiles. It provides clear context for each operation's function, but does not explicitly mention when not to use it or point to alternatives. However, since sibling tools cover distinct domains (e.g., release_search, media_library), the boundary is obvious and the operations are self-explanatory.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SavageCore/lidarr-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server