Skip to main content
Glama

qui-mcp

Part of the arr-mcps collection. MCP server exposing qui's JSON REST API as tools for monitoring and managing qBittorrent instances, torrents, automations, cross-seeding, RSS, backups, and related services.

Built with FastMCP. The initial release mirrors the full JSON API route surface as one MCP tool per endpoint.

Install

uv tool install qui_mcp-*.whl

Register with Claude Code:

claude mcp add qui \
  --env QUI_URL=https://your-qui-host \
  --env QUI_API_KEY=<api-key> \
  -- qui-mcp

From source:

uv sync
claude mcp add qui \
  --env QUI_URL=https://your-qui-host \
  --env QUI_API_KEY=<api-key> \
  -- uv run --directory /path/to/qui-mcp qui-mcp

Related MCP server: rtorrent-mcp

Configuration

Env var

Required

Description

QUI_URL

yes

qui host, optionally including a reverse-proxy base path; /api is appended automatically

QUI_API_KEY

no

API key sent as X-API-Key; omit only when qui authentication is intentionally disabled

Create API keys in qui under Settings -> API Keys. The server never logs the key and sends no authentication header when it is unset.

Tools

12 resource-scoped tools, each covering multiple qui JSON endpoints (214 total) via an operation parameter: instances, torrents, categories, tags, preferences, automations, RSS, backups, orphan scans, cross-seed, Torznab, ARR integrations, notifications, API-key management, logs, and application metadata. Call a tool with operation set to one of its listed routes and an arguments object matching that route's parameters — the tool's own description (visible to your MCP client) lists every route and its method + path. This keeps the full REST surface available while costing a fraction of the context budget of registering all 214 routes as separate tools.

Tool

Routes

qui_system

55

qui_cross_seed

29

qui_torrents

24

qui_torznab

20

qui_instances

17

qui_dir_scan

15

qui_rss

14

qui_automations

12

qui_backups

10

qui_categories_tags

7

qui_orphan_scan

7

qui_torrent_creator

4

Streaming endpoints and binary downloads are intentionally omitted because MCP tool results are structured JSON values. Session-creation endpoints (/auth/setup, /auth/login, and /auth/logout) are also omitted; use qui's web UI for those flows.

Every tool accepts operation (the route name, e.g. qui_list_torrents) plus one optional arguments object:

{
  "operation": "qui_list_torrents",
  "arguments": {
    "instanceID": 1,
    "hash": "torrent-info-hash",
    "params": {"filter": "downloading"},
    "body": {"value": "request payload"}
  }
}

Path variables use their documented names. Query values belong in arguments.params and JSON request payloads belong in arguments.body.

Development

make help
make sync
make test
make build

make test uses only httpx.MockTransport. Live smoke tests require QUI_URL and can be run with make test-integration.

The release workflow builds a wheel and source distribution when a v* tag is pushed. Start at version 0.0.0; use make bump-patch, commit, tag, and push for the first release.

Available Tools

12 tools
qui_automationsB

qui automations operations on qui. Pass operation and an arguments object; path variables go directly in arguments, query values in arguments.params, and a JSON request body in arguments.body.

  • qui_apply_automations: POST /instances/{instanceID}/automations/apply

  • qui_create_automation: POST /instances/{instanceID}/automations/

  • qui_delete_automation: DELETE /instances/{instanceID}/automations/{ruleID}

  • qui_delete_automation_activity: DELETE /instances/{instanceID}/automations/activity

  • qui_dry_run_automations: POST /instances/{instanceID}/automations/dry-run

  • qui_get_automation_activity_run: GET /instances/{instanceID}/automations/activity/{activityId}

  • qui_list_automation_activity: GET /instances/{instanceID}/automations/activity

  • qui_list_automations: GET /instances/{instanceID}/automations/

  • qui_preview_automation_delete: POST /instances/{instanceID}/automations/preview

  • qui_reorder_automations: PUT /instances/{instanceID}/automations/order

  • qui_update_automation: PUT /instances/{instanceID}/automations/{ruleID}

  • qui_validate_automation_regex: POST /instances/{instanceID}/automations/validate-regex

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It lists HTTP methods (GET, POST, PUT, DELETE) which imply mutating vs read-only behavior, and it includes a dry-run and preview operation. However, it doesn't disclose any side effects, permissions, rate limits, or what happens on deletion (e.g., whether it's reversible). The method hints are useful but not comprehensive.

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

Conciseness3/5

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

The description is a single paragraph with a clear instruction and a bulleted list of operations corrected with endpoints post-pended, which is efficient. However, it could be improved by summarizing the common pattern more concisely and perhaps grouping operations (e.g., list vs. mutate). The list of 12 operations is necessary for enumeration but adds length.

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?

With no annotations and a low schema description coverage, the description must provide full context Sports. It gives the dispatch mechanism and lists all operations with endpoints, which is helpful. However, it lacks details on the actual arguments for each operation (e.g., required path parameters like instanceID and ruleID are not explicitly documented, though they appear in endpoints). It also doesn't describe return values, though an output schema exists (which helps). Overall, it's adequate but leaves gaps.

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?

The schema has only two parameters: `operation` (an enum of all operations) and `arguments` (a free-form object). The description explains that `arguments` should contain path variables, query params, and body, but it doesn't detail what each operation expects within those arguments. Since schema coverage is 0%, the description must compensate, but it only lists endpoints without parameter specifics. For example, it doesn't explain what fields each automation operation requires, leaving significant ambiguity.

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 clearly states that this tool handles automation operations, and it lists all 12 operations with their HTTP methods and endpoints, which identifies what it does. However, it does not explicitly distinguish from sibling tools beyond the domain of automations; siblings like qui_torrents and qui_instances are clearly different domains, so the purpose is distinct but not explicitly differentiated.

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 provides a clear usage pattern: pass `operation` and an `arguments` object, with detailed instructions on where path variables, query values, and JSON body go. It implicitly says when to use this tool (any automation-related operation) but doesn't explicitly state when-not-to-use or alternatives, as the sibling tools are for other domains.

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

qui_backupsB

qui backups operations on qui. Pass operation and an arguments object; path variables go directly in arguments, query values in arguments.params, and a JSON request body in arguments.body.

  • qui_delete_all_backup_runs: DELETE /instances/{instanceID}/backups/runs

  • qui_delete_backup_run: DELETE /instances/{instanceID}/backups/runs/{runID}

  • qui_execute_backup_restore: POST /instances/{instanceID}/backups/runs/{runID}/restore

  • qui_get_backup_manifest: GET /instances/{instanceID}/backups/runs/{runID}/manifest

  • qui_get_backup_settings: GET /instances/{instanceID}/backups/settings

  • qui_import_backup_manifest: POST /instances/{instanceID}/backups/import

  • qui_list_backup_runs: GET /instances/{instanceID}/backups/runs

  • qui_preview_backup_restore: POST /instances/{instanceID}/backups/runs/{runID}/restore/preview

  • qui_trigger_backup: POST /instances/{instanceID}/backups/run

  • qui_update_backup_settings: PUT /instances/{instanceID}/backups/settings

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals HTTP methods and endpoints, which imply destructive operations like `qui_delete_all_backup_runs`, but it does not warn about irreversible deletion, permissions, side effects, rate limits, or response behavior.

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?

The description is compact and scannable: one short instruction paragraph followed by a bullet list of ten operations with method and path. The opening sentence is slightly redundant with the tool name, but every other line contributes necessary endpoint mapping information.

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?

Given the high complexity of ten distinct operations and the generic `arguments` schema, the description provides a useful operation-to-endpoint map and general argument conventions. However, it lacks operation-specific parameters such as required query strings or request body schemas, leaving some invocations under-specified. The existence of an output schema reduces the need to document return values, but does not fill this gap.

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 only has an enum and a generic `arguments` object with 0% description coverage, so the description must compensate. It does so by explaining the argument envelope—path variables in `arguments`, query values in `arguments.params`, and body in `arguments.body`—and mapping each operation to its endpoint path with visible path parameters. It still omits per-operation query and body field details, but the provided structure is significantly useful.

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 enumerates ten backup-related operations with their exact HTTP methods and paths, making it clear this tool exposes qui backup REST endpoints. It distinguishes from sibling tools by the backup domain and consistent qui_ prefix, though the opening phrase 'qui backups operations on qui' is somewhat tautological.

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 description implies usage context by listing all backup operations and explaining how to invoke them with `operation` and `arguments`. It does not provide explicit guidance on when to prefer this tool over sibling qui_* tools or mention exclusions, so the guidance is implied rather than stated.

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

qui_categories_tagsB

qui categories tags operations on qui. Pass operation and an arguments object; path variables go directly in arguments, query values in arguments.params, and a JSON request body in arguments.body.

  • qui_create_category: POST /instances/{instanceID}/categories

  • qui_create_tags: POST /instances/{instanceID}/tags

  • qui_delete_tags: DELETE /instances/{instanceID}/tags

  • qui_edit_category: PUT /instances/{instanceID}/categories

  • qui_get_categories: GET /instances/{instanceID}/categories

  • qui_get_tags: GET /instances/{instanceID}/tags

  • qui_remove_categories: DELETE /instances/{instanceID}/categories

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of disclosing behavioral traits. It lists HTTP methods (GET, POST, PUT, DELETE) which imply side effects (reads vs. writes), but it does not explicitly state whether operations are destructive, require authentication, or have rate limits. It also does not describe error behavior or response formats. This lack of transparency is a significant gap for a tool with multiple mutating operations.

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 concise and well-structured. It starts with the general dispatch rule, then lists each operation in a clean format with method and endpoint. There is no redundant or filler content; every sentence and line contributes value.

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?

The tool is complex with 7 operations, and the description provides a clear dispatch pattern and endpoint list. However, it does not explain the return values (though an output schema exists), nor does it cover authentication, permissions, or specific argument requirements beyond the generic pattern. It is complete enough for basic usage but lacks depth for edge cases or error handling.

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?

The input schema has 0% coverage, so the description must compensate. It provides a general pattern: path variables go in arguments, query values in arguments.params, and JSON body in arguments.body. It also lists endpoints that indicate required parameters (e.g., {instanceID}). However, it does not detail the exact arguments structure for each operation, leaving the agent to infer from operation names and endpoint templates. This is minimally adequate but not comprehensive.

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 clearly identifies the tool as handling 'qui categories tags operations' and enumerates each specific operation with its HTTP method and endpoint (e.g., 'qui_create_category: POST /instances/{instanceID}/categories'). This is specific enough to distinguish it from sibling tools that manage other resources (torrents, RSS, etc.). However, it does not elaborate on the semantic purpose of each operation beyond its name, so it's not a perfect 5.

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 description explains how to invoke the tool (pass `operation` and `arguments`, with path variables in arguments, query in arguments.params, body in arguments.body), but it does not explicitly state when to use this tool versus alternatives. The usage is implied by the operation names and endpoints, but there is no guidance on prerequisites, exclusions, or when a sibling tool would be more appropriate.

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

qui_cross_seedA

qui cross seed operations on qui. Pass operation and an arguments object; path variables go directly in arguments, query values in arguments.params, and a JSON request body in arguments.body.

  • qui_add_cross_seed_blocklist_entry: POST /cross-seed/blocklist/

  • qui_analyze_cross_seed_torrent: GET /cross-seed/torrents/{instanceID}/{hash}/analyze

  • qui_apply_cross_seed_search: POST /cross-seed/torrents/{instanceID}/{hash}/apply

  • qui_apply_cross_seed_season_pack: POST /cross-seed/season-pack/apply

  • qui_cancel_cross_seed_automation: POST /cross-seed/run/cancel

  • qui_cancel_cross_seed_search: POST /cross-seed/search/run/cancel

  • qui_check_cross_seed_season_pack: POST /cross-seed/season-pack/check

  • qui_cross_seed_apply: POST /cross-seed/apply

  • qui_cross_seed_webhook_check: POST /cross-seed/webhook/check

  • qui_delete_cross_seed_blocklist_entry: DELETE /cross-seed/blocklist/{instanceID}/{infohash}

  • qui_get_cross_seed_async_status: GET /cross-seed/torrents/{instanceID}/{hash}/async-status

  • qui_get_cross_seed_completion: GET /cross-seed/completion/{instanceID}

  • qui_get_cross_seed_local_matches: GET /cross-seed/torrents/{instanceID}/{hash}/local-matches

  • qui_get_cross_seed_search_settings: GET /cross-seed/search/settings

  • qui_get_cross_seed_search_status: GET /cross-seed/search/status

  • qui_get_cross_seed_settings: GET /cross-seed/settings

  • qui_get_cross_seed_status: GET /cross-seed/status

  • qui_get_instance_cross_seed_status: GET /instances/{instanceID}/cross-seed/status

  • qui_list_cross_seed_blocklist: GET /cross-seed/blocklist/

  • qui_list_cross_seed_runs: GET /cross-seed/runs

  • qui_list_cross_seed_search_runs: GET /cross-seed/search/runs

  • qui_list_cross_seed_season_pack_runs: GET /cross-seed/season-pack/runs

  • qui_patch_cross_seed_search_settings: PATCH /cross-seed/search/settings

  • qui_patch_cross_seed_settings: PATCH /cross-seed/settings

  • qui_run_cross_seed_automation: POST /cross-seed/run

  • qui_search_cross_seed_torrent: POST /cross-seed/torrents/{instanceID}/{hash}/search

  • qui_start_cross_seed_search: POST /cross-seed/search/run

  • qui_update_cross_seed_completion: PUT /cross-seed/completion/{instanceID}

  • qui_update_cross_seed_settings: PUT /cross-seed/settings

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It details how arguments are formatted (behavioral for invocation) and lists HTTP methods (POST, DELETE, etc.), which implies side effects, but it does not explicitly state outcomes (e.g., 'this creates a blocklist entry' or 'this modifies settings') or safety considerations. The operation names hint at effects, but the description itself does not elaborate on consequences, auth needs, or reversibility.

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?

The description is front-loaded with the essential usage pattern and then lists all operations. Each line is a necessary mapping of operation to endpoint. It is efficient without redundancy, though the list is long. The structure is logical and skippable, making it concise for its purpose.

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 tool's complexity (29 operations) and lack of annotations, the description is remarkably complete: it explicitly maps every operation to an HTTP method and path, and explains the argument structure. Since an output schema exists, return values are not the description's responsibility. For a generic API dispatcher, no critical information 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?

Schema coverage is 0% in the description, but it compensates by explaining the generic argument pattern: path variables go directly, query values in arguments.params, and body in arguments.body. This adds critical meaning not present in the schema (which just has an open object). It does not detail per-operation parameters, but for a generic dispatcher, the pattern is sufficient.

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 states it as 'qui cross seed operations on qui' and enumerates 29 specific operations with HTTP endpoints. This precisely defines the tool's scope as a dispatcher for cross-seed API calls, distinguishing it from sibling tools like qui_torrents or qui_system.

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 provides clear usage context by explaining the argument structure (path variables go directly, query params in arguments.params, body in arguments.body) and maps each operation to an HTTP method. It implies use for cross-seed tasks, but does not explicitly state when to avoid using it (e.g., 'use qui_torrents for torrent-specific actions'). Exclusions are missing, but context is strong.

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

qui_dir_scanA

qui dir scan operations on qui. Pass operation and an arguments object; path variables go directly in arguments, query values in arguments.params, and a JSON request body in arguments.body.

  • qui_cancel_directory_scan: DELETE /dir-scan/directories/{directoryID}/scan

  • qui_create_scan_directory: POST /dir-scan/directories/

  • qui_delete_scan_directory: DELETE /dir-scan/directories/{directoryID}

  • qui_get_dir_scan_settings: GET /dir-scan/settings

  • qui_get_scan_directory: GET /dir-scan/directories/{directoryID}

  • qui_get_scan_directory_status: GET /dir-scan/directories/{directoryID}/status

  • qui_list_scan_directories: GET /dir-scan/directories/

  • qui_list_scan_directory_files: GET /dir-scan/directories/{directoryID}/files

  • qui_list_scan_directory_runs: GET /dir-scan/directories/{directoryID}/runs

  • qui_list_scan_run_injections: GET /dir-scan/directories/{directoryID}/runs/{runID}/injections

  • qui_requeue_scan_directory_no_match: POST /dir-scan/directories/{directoryID}/requeue-no-match

  • qui_reset_scan_directory_files: POST /dir-scan/directories/{directoryID}/reset-files

  • qui_scan_directory: POST /dir-scan/directories/{directoryID}/scan

  • qui_update_dir_scan_settings: PATCH /dir-scan/settings

  • qui_update_scan_directory: PATCH /dir-scan/directories/{directoryID}

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

There are no annotations, so the description carries the transparency burden. It reveals behavioral intent through operation names and HTTP verbs (DELETE, POST, GET, PATCH) and endpoint paths, making it clear which operations read, mutate, delete, create, or requeue. However, it does not describe side effects such as whether deletes are permanent, what a scan cancellation does, or whether these actions require elevated permissions, so the behavioral picture is only partially painted.

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?

The description is long, but every line is a one-to-one operation/endpoint mapping that is useful. The first two sentences front-load the invocation pattern, and the list is sorted and consistently formatted. No filler or repetition exists, though the list of 15 endpoints is necessarily dense.

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?

Given this is a multi-operation dispatcher with 15 endpoints, the description provides a good enumeration plus argument structure rule. However, it does not describe per-operation required parameters, the outcome of each operation, or any caveats needed for safe use. The presence of an output schema removes the need to detail return values, but the behavioral gaps in such a complex tool mean the description is only moderately 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?

Schema description coverage is 0%, so the description must add meaning. It does exactly that by explaining how to structure `arguments`—path variables in `arguments`, query values in `arguments.params`, and request bodies in `arguments.body`. This is essential and not present in the input schema. It stops short of documenting per-operation argument names, but the endpoint templates show those placeholders.

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 opens with 'qui dir scan operations on qui' and then enumerates 15 concrete operations with endpoints, making it clear that this tool dispatches directory-scan operations. It distinguishes itself from siblings like qui_orphan_scan by focusing specifically on directory scan resources. It lacks a single verb+resource framing but the operation list fully clarifies 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?

It provides clear instructions for how to invoke the tool: pass an `operation` and an `arguments` object, with path variables, query values, and body placed in the appropriate nested locations. It also lists the exact operations, giving an explicit scope and exclusion boundary—this tool covers dir-scan operations and nothing else. There is no explicit guidance on when to prefer a sibling alternative, but the clear domain and operation set are enough.

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

qui_instancesB

qui instances operations on qui. Pass operation and an arguments object; path variables go directly in arguments, query values in arguments.params, and a JSON request body in arguments.body.

  • qui_create_instance: POST /instances/

  • qui_delete_instance: DELETE /instances/{instanceID}/

  • qui_get_active_trackers: GET /instances/{instanceID}/trackers

  • qui_get_alternative_speed_limits: GET /instances/{instanceID}/alternative-speed-limits

  • qui_get_directory_content: GET /instances/{instanceID}/getDirectoryContent

  • qui_get_instance_app_info: GET /instances/{instanceID}/app-info

  • qui_get_instance_capabilities: GET /instances/{instanceID}/capabilities

  • qui_get_instance_mediainfo: GET /instances/{instanceID}/mediainfo

  • qui_get_instance_transfer_info: GET /instances/{instanceID}/transfer-info

  • qui_get_preferences: GET /instances/{instanceID}/preferences

  • qui_list_instances: GET /instances/

  • qui_test_instance: POST /instances/{instanceID}/test

  • qui_toggle_alternative_speed_limits: POST /instances/{instanceID}/alternative-speed-limits/toggle

  • qui_update_instance: PUT /instances/{instanceID}/

  • qui_update_instance_order: PUT /instances/order

  • qui_update_instance_status: PUT /instances/{instanceID}/status

  • qui_update_preferences: PATCH /instances/{instanceID}/preferences

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It reveals the tool is a router/aggregator for multiple sub-operations, which is critical behavioral info. However, it does not disclose mutation risks (e.g., qui_delete_instance permanently deletes, qui_update_instance modifies settings) or whether operations are safe/idempotent. This is a significant gap for a tool with 17 operations, many of which are mutating.

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?

The list is compact and front-loaded with the general pattern, then each operation with its endpoint. It's efficient for a router with 17 operations. The opening two sentences explain the calling convention. The list is a necessary enumeration for completeness, though it makes the description long; still, every item adds value.

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?

Given the tool's complexity (17 operations) and absence of annotations, the description gives the operation list and basic argument structure, but lacks per-operation parameter details, expected responses, or error handling. It has an output schema, which partially compensates. For an agent to correctly call this tool, it needs more per-operational detail (e.g., required fields for qui_create_instance), so it's only minimally complete.

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 has 2 params: operation (enum) and arguments (loose object with anyOf null). The description adds crucial semantics for arguments: path variables go directly, query values in arguments.params, JSON body in arguments.body. This is genuinely helpful. However, it does not explain per-operation argument requirements (which operations need instanceID, what fields for creation/update), leaving the agent to infer from endpoint paths. Schema coverage is 0%, so more compensation was 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 enumerates 17 operations with their HTTP endpoints, clearly indicating this is a dispatch router for instance-related actions. It specifies the resource (instances) and the action spectrum, distinguishing it from sibling tools that target other domains (torrents, RSS, backups). However, it lacks a general one-line summary, relying on the list to convey purpose.

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 description implies usage: pass the operation and an arguments object with path variables, query params, and body. It does not explicitly state when to use this tool versus alternatives (e.g., qui_torrents for torrent-specific actions). The context implies all instance operations go here, but exclusions or comparator guidance are absent.

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

qui_orphan_scanC

qui orphan scan operations on qui. Pass operation and an arguments object; path variables go directly in arguments, query values in arguments.params, and a JSON request body in arguments.body.

  • qui_cancel_orphan_scan: DELETE /instances/{instanceID}/orphan-scan/runs/{runID}

  • qui_confirm_orphan_deletion: POST /instances/{instanceID}/orphan-scan/runs/{runID}/confirm

  • qui_get_orphan_scan_run: GET /instances/{instanceID}/orphan-scan/runs/{runID}

  • qui_get_orphan_scan_settings: GET /instances/{instanceID}/orphan-scan/settings

  • qui_list_orphan_scan_runs: GET /instances/{instanceID}/orphan-scan/runs

  • qui_trigger_orphan_scan: POST /instances/{instanceID}/orphan-scan/scan

  • qui_update_orphan_scan_settings: PUT /instances/{instanceID}/orphan-scan/settings

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. While it reveals HTTP methods (DELETE, POST, GET, PUT) implying mutating vs. read operations, it does not disclose side effects, destructive consequences, authentication needs, or response implications. For operations like cancel or confirm, destruction is implicit but not stated.

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?

The description starts with a concise instruction on how to pass operations and arguments, then presents a clear list of sub-operations with methods and endpoints. It is reasonably concise and well-organized, though slightly verbose due to the repetition of 'qui_' prefixes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-operation tool with no per-operation documentation, the description is incomplete. It does not specify required arguments for each operation, expected return values (though output schema exists), side effects, or error conditions. The description is merely an endpoint list and a routing pattern, leaving significant gaps.

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?

The description explains the generic pattern for arguments (path variables, query params, body) but does not detail the specific parameters required for each operation. Since input schema coverage is 0%, the description should compensate, but it only offers a template without per-operation parameter semantics.

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 clearly states it handles orphan scan operations on qui, listing seven specific sub-operations with HTTP methods and endpoints. This distinguishes it from sibling tools by domain, though it lacks a single concise summary sentence and instead uses a list.

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?

It gives usage context by implying the tool is for orphan scan management and instructs how to pass operations and arguments, but does not explicitly state when to use this tool versus other qui_* tools or when not to use it. No alternatives are mentioned.

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

qui_rssA

qui rss operations on qui. Pass operation and an arguments object; path variables go directly in arguments, query values in arguments.params, and a JSON request body in arguments.body.

  • qui_add_rss_feed: POST /instances/{instanceID}/rss/feeds

  • qui_add_rss_folder: POST /instances/{instanceID}/rss/folders

  • qui_get_rss_items: GET /instances/{instanceID}/rss/items

  • qui_get_rss_rules: GET /instances/{instanceID}/rss/rules

  • qui_mark_rss_article_read: POST /instances/{instanceID}/rss/articles/read

  • qui_move_rss_item: POST /instances/{instanceID}/rss/items/move

  • qui_preview_rss_rule_matches: GET /instances/{instanceID}/rss/rules/{ruleName}/preview

  • qui_refresh_rss_item: POST /instances/{instanceID}/rss/items/refresh

  • qui_remove_rss_item: DELETE /instances/{instanceID}/rss/items

  • qui_remove_rss_rule: DELETE /instances/{instanceID}/rss/rules/{ruleName}

  • qui_rename_rss_rule: PUT /instances/{instanceID}/rss/rules/{ruleName}/rename

  • qui_reprocess_rss_rules: POST /instances/{instanceID}/rss/rules/reprocess

  • qui_set_rss_feed_url: PUT /instances/{instanceID}/rss/feeds/url

  • qui_set_rss_rule: POST /instances/{instanceID}/rss/rules

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations exist, so the description must carry the behavioral burden. It partially does by exposing HTTP methods (GET vs POST/PUT/DELETE), which indicate read vs mutating operations, and by showing exact endpoint templates. It does not disclose side effects, permission needs, reversibility, or error behavior for the mutations.

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?

The description is efficiently organized: a concise usage instruction followed by a clear bulleted list of 14 operations with endpoints. The list is long but necessary for a dispatcher tool, and the format is scannable. A plain-language gloss per operation would improve it, but current structure earns its place.

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?

The tool has an output schema, so return values are covered elsewhere. The description provides a complete operation inventory, HTTP methods, and path/query/body conventions, which is substantial for a dispatcher. It is slightly incomplete due to missing per-operation purpose details or permission/error context, but adequate for basic selection.

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 0%, but the description compensates somewhat by explaining the structure of the free-form arguments object, including path variables, query params, and body. It does not enumerate operation-specific parameters beyond endpoint path variables, so the agent still lacks detailed per-operation parameter semantics.

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 clearly states the tool is for "qui rss operations on qui" and enumerates all operations with HTTP endpoints, making the RSS domain and actions (add, get, remove, rename, etc.) explicit. It differentiates from sibling tools by focusing exclusively on RSS operations, though the broad dispatcher form makes it slightly less sharp than a single verb+resource description.

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 description gives concrete invocation guidance: "Pass `operation` and an `arguments` object; path variables go directly in arguments, query values in arguments.params, and a JSON request body in arguments.body." However, it does not explicitly state when to prefer qui_rss over sibling tools or how to choose among the listed operations beyond their names and endpoints.

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

qui_systemD

qui system operations on qui. Pass operation and an arguments object; path variables go directly in arguments, query values in arguments.params, and a JSON request body in arguments.body.

  • qui_activate_license: POST /license/activate

  • qui_change_password: PUT /auth/change-password

  • qui_check_setup: GET /auth/check-setup

  • qui_create_api_key: POST /api-keys/

  • qui_create_arr_instance: POST /arr/instances

  • qui_create_client_api_key: POST /client-api-keys/

  • qui_create_external_program: POST /external-programs/

  • qui_create_filter_view: POST /filter-views/

  • qui_create_notification_target: POST /notifications/targets

  • qui_create_tracker_customization: POST /tracker-customizations/

  • qui_delete_api_key: DELETE /api-keys/{id}

  • qui_delete_arr_instance: DELETE /arr/instances/{id}

  • qui_delete_client_api_key: DELETE /client-api-keys/{id}

  • qui_delete_external_program: DELETE /external-programs/{id}

  • qui_delete_filter_view: DELETE /filter-views/{id}

  • qui_delete_license: DELETE /license/{licenseKey}

  • qui_delete_notification_target: DELETE /notifications/targets/{id}

  • qui_delete_tracker_customization: DELETE /tracker-customizations/{id}

  • qui_execute_external_program: POST /external-programs/execute

  • qui_get_application_info: GET /application/info

  • qui_get_arr_instance: GET /arr/instances/{id}

  • qui_get_current_user: GET /auth/me

  • qui_get_dashboard_settings: GET /dashboard-settings

  • qui_get_latest_version: GET /version/latest

  • qui_get_licensed_status: GET /license/licensed

  • qui_get_log_exclusions: GET /log-exclusions

  • qui_get_log_settings: GET /log-settings

  • qui_get_tracker_icons: GET /tracker-icons

  • qui_get_version: GET /version

  • qui_list_api_keys: GET /api-keys/

  • qui_list_arr_instances: GET /arr/instances

  • qui_list_client_api_keys: GET /client-api-keys/

  • qui_list_custom_themes: GET /themes/custom

  • qui_list_external_programs: GET /external-programs/

  • qui_list_filter_views: GET /filter-views/

  • qui_list_licenses: GET /license/licenses

  • qui_list_log_files: GET /logs/files

  • qui_list_notification_events: GET /notifications/events

  • qui_list_notification_targets: GET /notifications/targets

  • qui_list_tracker_customizations: GET /tracker-customizations/

  • qui_refresh_licenses: POST /license/refresh

  • qui_resolve_arr: POST /arr/resolve

  • qui_test_arr_connection: POST /arr/test

  • qui_test_arr_instance: POST /arr/instances/{id}/test

  • qui_test_notification_target: POST /notifications/targets/{id}/test

  • qui_update_arr_instance: PUT /arr/instances/{id}

  • qui_update_dashboard_settings: PUT /dashboard-settings

  • qui_update_external_program: PUT /external-programs/{id}

  • qui_update_filter_view: PUT /filter-views/{id}

  • qui_update_log_exclusions: PUT /log-exclusions

  • qui_update_log_settings: PUT /log-settings

  • qui_update_notification_target: PUT /notifications/targets/{id}

  • qui_update_tracker_customization: PUT /tracker-customizations/{id}

  • qui_validate_license: POST /license/validate

  • qui_validate_session: GET /auth/validate

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.5/5.0
Behavior1/5

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

No behavioral details are provided. The description only lists HTTP methods and paths, without explaining side effects, permissions, side effects, or what each operation does. Since no annotations are present, the description carries the full burden and fails to disclose any behavioral traits.

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?

The description is efficient in that it avoids redundant prose and simply lists the operations with their HTTP methods. It is well-structured as a list, making it easy to scan, though the length is inherent to the number of operations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the large number of operations and a generic schema, the description is severely incomplete. It does not provide per-operation inputs, outputs, or error conditions. There is no mention of return values or expected outcomes, making it impossible to understand how to use each operation effectively.

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?

The description explains that 'arguments' contains path variables, query params, and a request body, which gives some structure to the generic arguments object. However, it does not specify which arguments each operation expects, and the schema has no per-operation parameter definitions. The explanation is generic and not very helpful for understanding required parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description simply states 'qui system operations on qui' and then lists a long series of endpoint names without explaining what the tool actually does as a whole or what each operation accomplishes. It fails to convey the purpose beyond being a generic API wrapper for many unrelated actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus the sibling tools (e.g., qui_cross_seed). The description provides no context for selecting this tool or specific operations within it, aside from the raw list of endpoints.

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

qui_torrent_creatorB

qui torrent creator operations on qui. Pass operation and an arguments object; path variables go directly in arguments, query values in arguments.params, and a JSON request body in arguments.body.

  • qui_create_torrent: POST /instances/{instanceID}/torrent-creator/

  • qui_delete_torrent_creation_task: DELETE /instances/{instanceID}/torrent-creator/{taskID}

  • qui_get_active_torrent_creation_count: GET /instances/{instanceID}/torrent-creator/count

  • qui_get_torrent_creation_status: GET /instances/{instanceID}/torrent-creator/status

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses the HTTP methods (POST, DELETE, GET) which imply side effects, but it doesn't state whether operations are destructive, require authentication, or have rate limits. The description adds minimal behavioral context beyond the endpoints.

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?

The description is concise and front-loaded with the key usage pattern, followed by a clear list of operations. Each line is informative, though the list format is a bit dense but acceptable.

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?

The tool has an output schema and a moderate number of operations, but the description doesn't explain return values or error handling. It covers the operation list and argument passing, but lacks details on prerequisites or side effects, making it adequate but not complete for a multi-operation tool.

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 description coverage is 0%, and the description does not explain the parameters beyond the generic 'arguments' object. It mentions path variables, query values, and body, but doesn't detail what each operation expects (e.g., instanceID, taskID). The description fails to compensate for the lack of schema documentation.

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 clearly states the tool performs 'qui torrent creator operations' and lists four specific operations with their HTTP endpoints. It distinguishes from siblings by naming the resource (torrent-creator) and the operations, though it doesn't explicitly contrast with sibling tools.

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 description explains how to pass arguments (path variables, query params, body) and lists the operations, which implies when to use each. However, it doesn't provide explicit guidance on when to choose this tool over alternatives or when not to use it, leaving usage context implicit.

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

qui_torrentsB

qui torrents operations on qui. Pass operation and an arguments object; path variables go directly in arguments, query values in arguments.params, and a JSON request body in arguments.body.

  • qui_add_peers: POST /instances/{instanceID}/torrents/add-peers

  • qui_add_torrent: POST /instances/{instanceID}/torrents/

  • qui_add_torrent_trackers: POST /instances/{instanceID}/torrents/{hash}/trackers

  • qui_ban_peers: POST /instances/{instanceID}/torrents/ban-peers

  • qui_check_duplicate_torrents: POST /instances/{instanceID}/torrents/check-duplicates

  • qui_edit_torrent_tracker: PUT /instances/{instanceID}/torrents/{hash}/trackers

  • qui_get_reannounce_activity: GET /instances/{instanceID}/reannounce/activity

  • qui_get_reannounce_candidates: GET /instances/{instanceID}/reannounce/candidates

  • qui_get_torrent_field: POST /instances/{instanceID}/torrents/field

  • qui_get_torrent_file_mediainfo: GET /instances/{instanceID}/torrents/{hash}/files/{fileIndex}/mediainfo

  • qui_get_torrent_files: GET /instances/{instanceID}/torrents/{hash}/files

  • qui_get_torrent_peers: GET /instances/{instanceID}/torrents/{hash}/peers

  • qui_get_torrent_pieces: GET /instances/{instanceID}/torrents/{hash}/pieces

  • qui_get_torrent_properties: GET /instances/{instanceID}/torrents/{hash}/properties

  • qui_get_torrent_trackers: GET /instances/{instanceID}/torrents/{hash}/trackers

  • qui_get_torrent_webseeds: GET /instances/{instanceID}/torrents/{hash}/webseeds

  • qui_list_cross_instance_torrents: GET /torrents/cross-instance

  • qui_list_torrents: GET /instances/{instanceID}/torrents/

  • qui_remove_torrent_trackers: DELETE /instances/{instanceID}/torrents/{hash}/trackers

  • qui_rename_torrent: PUT /instances/{instanceID}/torrents/{hash}/rename

  • qui_rename_torrent_file: PUT /instances/{instanceID}/torrents/{hash}/rename-file

  • qui_rename_torrent_folder: PUT /instances/{instanceID}/torrents/{hash}/rename-folder

  • qui_set_torrent_file_priority: PUT /instances/{instanceID}/torrents/{hash}/files

  • qui_torrent_bulk_action: POST /instances/{instanceID}/torrents/bulk-action

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/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 does not state whether operations are read-only or mutating, what side effects occur (e.g., adding peers, renaming torrents), any authentication or permission requirements, rate limits, or error behaviors. While endpoint methods (GET, POST, PUT, DELETE) hint at mutations, this is implicit and not explicitly disclosed.

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?

The description is efficiently structured with a clear introductory sentence followed by a bulleted list of operations. It is front-loaded with the key usage pattern and then lists endpoints concisely. It avoids fluff, but the list is long; however, this is necessary for the tool's scope.

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?

Given the tool has 24 operations, a generic arguments object, no annotations, and an output schema (not described), the description is moderately complete. It explains the general argument structure and lists all operations with endpoints, but it lacks per-operation detail (required vs optional params, expected outputs, specific constraints) which is crucial for an agent to correctly invoke this tool. The output schema existence suggests detailed return types, but the description doesn't reference it.

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?

The input schema has only two parameters: 'operation' (an enum) and 'arguments' (a generic object). Schema description coverage is 0%, meaning the description must compensate. The description explains the structure of 'arguments' (path variables, query params, body) but does not detail the required fields for each operation, leaving the agent to rely on the operation names and endpoint patterns. This is adequate but not comprehensive given the complexity of 24 operations.

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 clearly identifies the tool as a handler for all torrent-related operations on the 'qui' system, enumerating 24 distinct operations with their HTTP endpoints. It distinguishes this tool from sibling tools by focusing exclusively on torrent operations (as opposed to system, instances, RSS, etc.), and the verb+resource pattern is explicit for each operation.

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 description provides a general usage framework—requiring 'operation' and 'arguments' with path variables, query params, and body—but it does not offer specific guidance on when to choose one operation over another or when to use an alternative sibling tool. It implies usage through the operation list but lacks explicit context or exclusions.

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

qui_torznabD

qui torznab operations on qui. Pass operation and an arguments object; path variables go directly in arguments, query values in arguments.params, and a JSON request body in arguments.body.

  • qui_create_torznab_indexer: POST /torznab/indexers/

  • qui_delete_torznab_indexer: DELETE /torznab/indexers/{indexerID}

  • qui_discover_torznab_indexers: POST /torznab/indexers/discover

  • qui_get_torznab_activity: GET /torznab/activity

  • qui_get_torznab_all_health: GET /torznab/indexers/health

  • qui_get_torznab_indexer: GET /torznab/indexers/{indexerID}

  • qui_get_torznab_indexer_errors: GET /torznab/indexers/{indexerID}/errors

  • qui_get_torznab_indexer_health: GET /torznab/indexers/{indexerID}/health

  • qui_get_torznab_indexer_stats: GET /torznab/indexers/{indexerID}/stats

  • qui_get_torznab_search_cache: GET /torznab/search/cache/

  • qui_get_torznab_search_history: GET /torznab/search/history

  • qui_get_torznab_tracker_domains: GET /torznab/indexers/tracker-domains

  • qui_list_recent_torznab_searches: GET /torznab/search/recent

  • qui_list_torznab_indexers: GET /torznab/indexers/

  • qui_search_torznab: POST /torznab/search

  • qui_search_torznab_cross_seed: POST /torznab/cross-seed/search

  • qui_sync_torznab_indexer_caps: POST /torznab/indexers/{indexerID}/caps/sync

  • qui_test_torznab_indexer: POST /torznab/indexers/{indexerID}/test

  • qui_update_torznab_indexer: PUT /torznab/indexers/{indexerID}

  • qui_update_torznab_search_cache_settings: PUT /torznab/search/cache/settings

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.8/5.0
Behavior1/5

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

No annotations are provided, and the description gives no information about side effects, permissions, rate limits, or other behavioral aspects. Operations like 'create', 'delete', and 'update' are clearly mutating, but the description does not disclose any potential consequences (e.g., irreversible changes, authentication requirements, or resource impacts). This leaves the agent uninformed about the tool's behavior.

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

Conciseness3/5

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

The description is a list of operations with HTTP methods and paths, which is informative but repetitive (e.g., every operation starts with 'qui_'). The introductory sentence is ambiguous ('qui torznab operations on qui') and adds little value. While the list is fairly structured, the overall presentation could be more concise and clearer, but it is not excessively verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 20 distinct operations, varying HTTP methods, and a complex arguments object, the description is extremely incomplete. It does not explain the output schema, error handling, authentication, or any domain-specific details. The tool appears to be a comprehensive Torznab client, yet the description provides almost no context to help an agent use it effectively. This is a critical gap in completeness.

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?

The input schema only defines two parameters: 'operation' (an enum) and 'arguments' (an object). The description explains that arguments can contain path variables, query parameters, and a request body, which provides some semantics. However, it does not detail what specific fields each operation requires in the arguments object, nor does it clarify the structure or types of these nested parameters. Parameter semantics are therefore insufficient for an agent to construct valid calls.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is extremely vague, stating only 'qui torznab operations on qui.' While the list of operations (create, delete, get, search, etc.) implies a Torznab API client, it does not explicitly define the tool's overall purpose or what Torznab is. This lack of a clear, high-level purpose makes it difficult for an agent to understand when to use this tool.

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 provides a generic calling convention: 'Pass operation and an arguments object; path variables go directly in arguments, query values in arguments.params, and a JSON request body in arguments.body.' This explains the structure of arguments but offers no guidance on when to use this tool versus sibling tools (e.g., qui_system, qui_cross_seed). There is no indication of which operations are appropriate for specific scenarios, making usage guidance incomplete.

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. Dates show when Glama detected each change.

  1. 226 tool updates
    • Removedqui_activate_license
    • Removedqui_add_cross_seed_blocklist_entry
    • Removedqui_add_peers
    • Removedqui_add_rss_feed
    • Removedqui_add_rss_folder
    • Removedqui_add_torrent
    • Removedqui_add_torrent_trackers
    • Removedqui_analyze_cross_seed_torrent
    • Removedqui_apply_automations
    • Removedqui_apply_cross_seed_search
    • Removedqui_apply_cross_seed_season_pack
    • Addedqui_automations
    • Addedqui_backups
    • Removedqui_ban_peers
    • Removedqui_cancel_cross_seed_automation
    • Removedqui_cancel_cross_seed_search
    • Removedqui_cancel_directory_scan
    • Removedqui_cancel_orphan_scan
    • Addedqui_categories_tags
    • Removedqui_change_password
    • Removedqui_check_cross_seed_season_pack
    • Removedqui_check_duplicate_torrents
    • Removedqui_check_setup
    • Removedqui_confirm_orphan_deletion
    • Removedqui_create_api_key
    • Removedqui_create_arr_instance
    • Removedqui_create_automation
    • Removedqui_create_category
    • Removedqui_create_client_api_key
    • Removedqui_create_external_program
    • Removedqui_create_filter_view
    • Removedqui_create_instance
    • Removedqui_create_notification_target
    • Removedqui_create_scan_directory
    • Removedqui_create_tags
    • Removedqui_create_torrent
    • Removedqui_create_torznab_indexer
    • Removedqui_create_tracker_customization
    • Addedqui_cross_seed
    • Removedqui_cross_seed_apply
    • Removedqui_cross_seed_webhook_check
    • Removedqui_delete_all_backup_runs
    • Removedqui_delete_api_key
    • Removedqui_delete_arr_instance
    • Removedqui_delete_automation
    • Removedqui_delete_automation_activity
    • Removedqui_delete_backup_run
    • Removedqui_delete_client_api_key
    • Removedqui_delete_cross_seed_blocklist_entry
    • Removedqui_delete_external_program
    • Removedqui_delete_filter_view
    • Removedqui_delete_instance
    • Removedqui_delete_license
    • Removedqui_delete_notification_target
    • Removedqui_delete_scan_directory
    • Removedqui_delete_tags
    • Removedqui_delete_torrent_creation_task
    • Removedqui_delete_torznab_indexer
    • Removedqui_delete_tracker_customization
    • Addedqui_dir_scan
    • Removedqui_discover_torznab_indexers
    • Removedqui_dry_run_automations
    • Removedqui_edit_category
    • Removedqui_edit_torrent_tracker
    • Removedqui_execute_backup_restore
    • Removedqui_execute_external_program
    • Removedqui_get_active_torrent_creation_count
    • Removedqui_get_active_trackers
    • Removedqui_get_alternative_speed_limits
    • Removedqui_get_application_info
    • Removedqui_get_arr_instance
    • Removedqui_get_automation_activity_run
    • Removedqui_get_backup_manifest
    • Removedqui_get_backup_settings
    • Removedqui_get_categories
    • Removedqui_get_cross_seed_async_status
    • Removedqui_get_cross_seed_completion
    • Removedqui_get_cross_seed_local_matches
    • Removedqui_get_cross_seed_search_settings
    • Removedqui_get_cross_seed_search_status
    • Removedqui_get_cross_seed_settings
    • Removedqui_get_cross_seed_status
    • Removedqui_get_current_user
    • Removedqui_get_dashboard_settings
    • Removedqui_get_dir_scan_settings
    • Removedqui_get_directory_content
    • Removedqui_get_instance_app_info
    • Removedqui_get_instance_capabilities
    • Removedqui_get_instance_cross_seed_status
    • Removedqui_get_instance_mediainfo
    • Removedqui_get_instance_transfer_info
    • Removedqui_get_latest_version
    • Removedqui_get_licensed_status
    • Removedqui_get_log_exclusions
    • Removedqui_get_log_settings
    • Removedqui_get_orphan_scan_run
    • Removedqui_get_orphan_scan_settings
    • Removedqui_get_preferences
    • Removedqui_get_reannounce_activity
    • Removedqui_get_reannounce_candidates
    • Removedqui_get_rss_items
    • Removedqui_get_rss_rules
    • Removedqui_get_scan_directory
    • Removedqui_get_scan_directory_status
    • Removedqui_get_tags
    • Removedqui_get_torrent_creation_status
    • Removedqui_get_torrent_field
    • Removedqui_get_torrent_file_mediainfo
    • Removedqui_get_torrent_files
    • Removedqui_get_torrent_peers
    • Removedqui_get_torrent_pieces
    • Removedqui_get_torrent_properties
    • Removedqui_get_torrent_trackers
    • Removedqui_get_torrent_webseeds
    • Removedqui_get_torznab_activity
    • Removedqui_get_torznab_all_health
    • Removedqui_get_torznab_indexer
    • Removedqui_get_torznab_indexer_errors
    • Removedqui_get_torznab_indexer_health
    • Removedqui_get_torznab_indexer_stats
    • Removedqui_get_torznab_search_cache
    • Removedqui_get_torznab_search_history
    • Removedqui_get_torznab_tracker_domains
    • Removedqui_get_tracker_icons
    • Removedqui_get_version
    • Removedqui_import_backup_manifest
    • Addedqui_instances
    • Removedqui_list_api_keys
    • Removedqui_list_arr_instances
    • Removedqui_list_automation_activity
    • Removedqui_list_automations
    • Removedqui_list_backup_runs
    • Removedqui_list_client_api_keys
    • Removedqui_list_cross_instance_torrents
    • Removedqui_list_cross_seed_blocklist
    • Removedqui_list_cross_seed_runs
    • Removedqui_list_cross_seed_search_runs
    • Removedqui_list_cross_seed_season_pack_runs
    • Removedqui_list_custom_themes
    • Removedqui_list_external_programs
    • Removedqui_list_filter_views
    • Removedqui_list_instances
    • Removedqui_list_licenses
    • Removedqui_list_log_files
    • Removedqui_list_notification_events
    • Removedqui_list_notification_targets
    • Removedqui_list_orphan_scan_runs
    • Removedqui_list_recent_torznab_searches
    • Removedqui_list_scan_directories
    • Removedqui_list_scan_directory_files
    • Removedqui_list_scan_directory_runs
    • Removedqui_list_scan_run_injections
    • Removedqui_list_torrents
    • Removedqui_list_torznab_indexers
    • Removedqui_list_tracker_customizations
    • Removedqui_mark_rss_article_read
    • Removedqui_move_rss_item
    • Addedqui_orphan_scan
    • Removedqui_patch_cross_seed_search_settings
    • Removedqui_patch_cross_seed_settings
    • Removedqui_preview_automation_delete
    • Removedqui_preview_backup_restore
    • Removedqui_preview_rss_rule_matches
    • Removedqui_refresh_licenses
    • Removedqui_refresh_rss_item
    • Removedqui_remove_categories
    • Removedqui_remove_rss_item
    • Removedqui_remove_rss_rule
    • Removedqui_remove_torrent_trackers
    • Removedqui_rename_rss_rule
    • Removedqui_rename_torrent
    • Removedqui_rename_torrent_file
    • Removedqui_rename_torrent_folder
    • Removedqui_reorder_automations
    • Removedqui_reprocess_rss_rules
    • Removedqui_requeue_scan_directory_no_match
    • Removedqui_reset_scan_directory_files
    • Removedqui_resolve_arr
    • Addedqui_rss
    • Removedqui_run_cross_seed_automation
    • Removedqui_scan_directory
    • Removedqui_search_cross_seed_torrent
    • Removedqui_search_torznab
    • Removedqui_search_torznab_cross_seed
    • Removedqui_set_rss_feed_url
    • Removedqui_set_rss_rule
    • Removedqui_set_torrent_file_priority
    • Removedqui_start_cross_seed_search
    • Removedqui_sync_torznab_indexer_caps
    • Addedqui_system
    • Removedqui_test_arr_connection
    • Removedqui_test_arr_instance
    • Removedqui_test_instance
    • Removedqui_test_notification_target
    • Removedqui_test_torznab_indexer
    • Removedqui_toggle_alternative_speed_limits
    • Removedqui_torrent_bulk_action
    • Addedqui_torrent_creator
    • Addedqui_torrents
    • Addedqui_torznab
    • Removedqui_trigger_backup
    • Removedqui_trigger_orphan_scan
    • Removedqui_update_arr_instance
    • Removedqui_update_automation
    • Removedqui_update_backup_settings
    • Removedqui_update_cross_seed_completion
    • Removedqui_update_cross_seed_settings
    • Removedqui_update_dashboard_settings
    • Removedqui_update_dir_scan_settings
    • Removedqui_update_external_program
    • Removedqui_update_filter_view
    • Removedqui_update_instance
    • Removedqui_update_instance_order
    • Removedqui_update_instance_status
    • Removedqui_update_log_exclusions
    • Removedqui_update_log_settings
    • Removedqui_update_notification_target
    • Removedqui_update_orphan_scan_settings
    • Removedqui_update_preferences
    • Removedqui_update_scan_directory
    • Removedqui_update_torznab_indexer
    • Removedqui_update_torznab_search_cache_settings
    • Removedqui_update_tracker_customization
    • Removedqui_validate_automation_regex
    • Removedqui_validate_license
    • Removedqui_validate_session
  2. 214 tool updatesv0.1.0
    • First observedqui_activate_license
    • First observedqui_add_cross_seed_blocklist_entry
    • First observedqui_add_peers
    • First observedqui_add_rss_feed
    • First observedqui_add_rss_folder
    • First observedqui_add_torrent
    • First observedqui_add_torrent_trackers
    • First observedqui_analyze_cross_seed_torrent
    • First observedqui_apply_automations
    • First observedqui_apply_cross_seed_search
    • First observedqui_apply_cross_seed_season_pack
    • First observedqui_ban_peers
    • First observedqui_cancel_cross_seed_automation
    • First observedqui_cancel_cross_seed_search
    • First observedqui_cancel_directory_scan
    • First observedqui_cancel_orphan_scan
    • First observedqui_change_password
    • First observedqui_check_cross_seed_season_pack
    • First observedqui_check_duplicate_torrents
    • First observedqui_check_setup
    • First observedqui_confirm_orphan_deletion
    • First observedqui_create_api_key
    • First observedqui_create_arr_instance
    • First observedqui_create_automation
    • First observedqui_create_category
    • First observedqui_create_client_api_key
    • First observedqui_create_external_program
    • First observedqui_create_filter_view
    • First observedqui_create_instance
    • First observedqui_create_notification_target
    • First observedqui_create_scan_directory
    • First observedqui_create_tags
    • First observedqui_create_torrent
    • First observedqui_create_torznab_indexer
    • First observedqui_create_tracker_customization
    • First observedqui_cross_seed_apply
    • First observedqui_cross_seed_webhook_check
    • First observedqui_delete_all_backup_runs
    • First observedqui_delete_api_key
    • First observedqui_delete_arr_instance
    • First observedqui_delete_automation
    • First observedqui_delete_automation_activity
    • First observedqui_delete_backup_run
    • First observedqui_delete_client_api_key
    • First observedqui_delete_cross_seed_blocklist_entry
    • First observedqui_delete_external_program
    • First observedqui_delete_filter_view
    • First observedqui_delete_instance
    • First observedqui_delete_license
    • First observedqui_delete_notification_target
    • First observedqui_delete_scan_directory
    • First observedqui_delete_tags
    • First observedqui_delete_torrent_creation_task
    • First observedqui_delete_torznab_indexer
    • First observedqui_delete_tracker_customization
    • First observedqui_discover_torznab_indexers
    • First observedqui_dry_run_automations
    • First observedqui_edit_category
    • First observedqui_edit_torrent_tracker
    • First observedqui_execute_backup_restore
    • First observedqui_execute_external_program
    • First observedqui_get_active_torrent_creation_count
    • First observedqui_get_active_trackers
    • First observedqui_get_alternative_speed_limits
    • First observedqui_get_application_info
    • First observedqui_get_arr_instance
    • First observedqui_get_automation_activity_run
    • First observedqui_get_backup_manifest
    • First observedqui_get_backup_settings
    • First observedqui_get_categories
    • First observedqui_get_cross_seed_async_status
    • First observedqui_get_cross_seed_completion
    • First observedqui_get_cross_seed_local_matches
    • First observedqui_get_cross_seed_search_settings
    • First observedqui_get_cross_seed_search_status
    • First observedqui_get_cross_seed_settings
    • First observedqui_get_cross_seed_status
    • First observedqui_get_current_user
    • First observedqui_get_dashboard_settings
    • First observedqui_get_dir_scan_settings
    • First observedqui_get_directory_content
    • First observedqui_get_instance_app_info
    • First observedqui_get_instance_capabilities
    • First observedqui_get_instance_cross_seed_status
    • First observedqui_get_instance_mediainfo
    • First observedqui_get_instance_transfer_info
    • First observedqui_get_latest_version
    • First observedqui_get_licensed_status
    • First observedqui_get_log_exclusions
    • First observedqui_get_log_settings
    • First observedqui_get_orphan_scan_run
    • First observedqui_get_orphan_scan_settings
    • First observedqui_get_preferences
    • First observedqui_get_reannounce_activity
    • First observedqui_get_reannounce_candidates
    • First observedqui_get_rss_items
    • First observedqui_get_rss_rules
    • First observedqui_get_scan_directory
    • First observedqui_get_scan_directory_status
    • First observedqui_get_tags
    • First observedqui_get_torrent_creation_status
    • First observedqui_get_torrent_field
    • First observedqui_get_torrent_file_mediainfo
    • First observedqui_get_torrent_files
    • First observedqui_get_torrent_peers
    • First observedqui_get_torrent_pieces
    • First observedqui_get_torrent_properties
    • First observedqui_get_torrent_trackers
    • First observedqui_get_torrent_webseeds
    • First observedqui_get_torznab_activity
    • First observedqui_get_torznab_all_health
    • First observedqui_get_torznab_indexer
    • First observedqui_get_torznab_indexer_errors
    • First observedqui_get_torznab_indexer_health
    • First observedqui_get_torznab_indexer_stats
    • First observedqui_get_torznab_search_cache
    • First observedqui_get_torznab_search_history
    • First observedqui_get_torznab_tracker_domains
    • First observedqui_get_tracker_icons
    • First observedqui_get_version
    • First observedqui_import_backup_manifest
    • First observedqui_list_api_keys
    • First observedqui_list_arr_instances
    • First observedqui_list_automation_activity
    • First observedqui_list_automations
    • First observedqui_list_backup_runs
    • First observedqui_list_client_api_keys
    • First observedqui_list_cross_instance_torrents
    • First observedqui_list_cross_seed_blocklist
    • First observedqui_list_cross_seed_runs
    • First observedqui_list_cross_seed_search_runs
    • First observedqui_list_cross_seed_season_pack_runs
    • First observedqui_list_custom_themes
    • First observedqui_list_external_programs
    • First observedqui_list_filter_views
    • First observedqui_list_instances
    • First observedqui_list_licenses
    • First observedqui_list_log_files
    • First observedqui_list_notification_events
    • First observedqui_list_notification_targets
    • First observedqui_list_orphan_scan_runs
    • First observedqui_list_recent_torznab_searches
    • First observedqui_list_scan_directories
    • First observedqui_list_scan_directory_files
    • First observedqui_list_scan_directory_runs
    • First observedqui_list_scan_run_injections
    • First observedqui_list_torrents
    • First observedqui_list_torznab_indexers
    • First observedqui_list_tracker_customizations
    • First observedqui_mark_rss_article_read
    • First observedqui_move_rss_item
    • First observedqui_patch_cross_seed_search_settings
    • First observedqui_patch_cross_seed_settings
    • First observedqui_preview_automation_delete
    • First observedqui_preview_backup_restore
    • First observedqui_preview_rss_rule_matches
    • First observedqui_refresh_licenses
    • First observedqui_refresh_rss_item
    • First observedqui_remove_categories
    • First observedqui_remove_rss_item
    • First observedqui_remove_rss_rule
    • First observedqui_remove_torrent_trackers
    • First observedqui_rename_rss_rule
    • First observedqui_rename_torrent
    • First observedqui_rename_torrent_file
    • First observedqui_rename_torrent_folder
    • First observedqui_reorder_automations
    • First observedqui_reprocess_rss_rules
    • First observedqui_requeue_scan_directory_no_match
    • First observedqui_reset_scan_directory_files
    • First observedqui_resolve_arr
    • First observedqui_run_cross_seed_automation
    • First observedqui_scan_directory
    • First observedqui_search_cross_seed_torrent
    • First observedqui_search_torznab
    • First observedqui_search_torznab_cross_seed
    • First observedqui_set_rss_feed_url
    • First observedqui_set_rss_rule
    • First observedqui_set_torrent_file_priority
    • First observedqui_start_cross_seed_search
    • First observedqui_sync_torznab_indexer_caps
    • First observedqui_test_arr_connection
    • First observedqui_test_arr_instance
    • First observedqui_test_instance
    • First observedqui_test_notification_target
    • First observedqui_test_torznab_indexer
    • First observedqui_toggle_alternative_speed_limits
    • First observedqui_torrent_bulk_action
    • First observedqui_trigger_backup
    • First observedqui_trigger_orphan_scan
    • First observedqui_update_arr_instance
    • First observedqui_update_automation
    • First observedqui_update_backup_settings
    • First observedqui_update_cross_seed_completion
    • First observedqui_update_cross_seed_settings
    • First observedqui_update_dashboard_settings
    • First observedqui_update_dir_scan_settings
    • First observedqui_update_external_program
    • First observedqui_update_filter_view
    • First observedqui_update_instance
    • First observedqui_update_instance_order
    • First observedqui_update_instance_status
    • First observedqui_update_log_exclusions
    • First observedqui_update_log_settings
    • First observedqui_update_notification_target
    • First observedqui_update_orphan_scan_settings
    • First observedqui_update_preferences
    • First observedqui_update_scan_directory
    • First observedqui_update_torznab_indexer
    • First observedqui_update_torznab_search_cache_settings
    • First observedqui_update_tracker_customization
    • First observedqui_validate_automation_regex
    • First observedqui_validate_license
    • First observedqui_validate_session

TDQS

C2.7/5.0
Disambiguation3/5

Many tools have similar purposes, such as qui_add_torrent vs qui_create_torrent, and multiple 'get ... status' variants. The templated descriptions only mention the endpoint, so distinguishing between similar tools requires careful URL parsing, though each tool does map to a unique endpoint.

Naming Consistency4/5

Tools follow a consistent qui_<verb>_<resource> pattern with snake_case. However, verb usage is inconsistent for similar actions (e.g., list vs get, create vs add, delete vs remove, patch vs update), which slightly reduces predictability.

Tool Count1/5

214 tools is far beyond the typical MCP server scope. This sheer number overwhelms agent tool selection and violates the principle of a well-scoped tool set, even for a large API.

Completeness5/5

The tool set provides comprehensive coverage of the qui API, including CRUD operations for instances, torrents, RSS, automations, backups, cross-seed, Torznab, and configuration. There are no obvious dead ends; every resource appears to have appropriate lifecycle operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    MCP server for rTorrent BitTorrent automation, enabling torrent management (add/list/pause/delete), multi-source searching (Nyaa, Pirate Bay, etc.), and post-processing workflows via natural language.
    7
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server exposing qBittorrent's WebUI API v2 as tools, enabling LLMs to manage torrents, categories, tags, RSS feeds, search plugins, and application settings.
    90
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server exposing Prowlarr's API v1 as tools for managing indexers, applications, download clients, and more, including cross-indexer searches and system commands.
    10
    MIT

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/arr-mcps/qui-mcp'

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