qui-mcp
This server exposes qui's REST API as MCP tools for monitoring and managing qBittorrent instances, torrents, and related services.
Authentication & API Keys: Check setup, get current user, validate sessions, change passwords, manage general and client API keys.
External Programs: List, create, update, delete, and execute external programs.
Notifications: List events; create, update, delete, and test notification targets.
ARR Integrations: Manage ARR instances (list/create/get/update/delete/test), test connections, resolve ARR data; manage tracker customizations.
Dashboard & UI: Get/update dashboard settings, filter views, custom themes, tracker icons.
Logging & System Info: Log settings/exclusions, list log files; version/application info.
Torrents & Cross-Seeding: List cross-instance torrents; cross-seed operations: status, apply, webhook checks, analyze, search, apply search; manage settings, triggers, blocklist, runs, completion, season packs.
Directory Scanning: Get/update settings; manage scan directories; trigger/cancel scans; view status, runs, injections, files; reset/requeue no-match.
Torznab: Manage indexers, discover, get health and tracker domains.
Provides tools for monitoring and managing qBittorrent instances, torrents, categories, tags, preferences, and automations.
Provides tools for managing RSS feeds and automation related to torrent fetching and cross-seeding.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@qui-mcpWhat torrents are currently downloading?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-*.whlRegister with Claude Code:
claude mcp add qui \
--env QUI_URL=https://your-qui-host \
--env QUI_API_KEY=<api-key> \
-- qui-mcpFrom 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-mcpRelated MCP server: rtorrent-mcp
Configuration
Env var | Required | Description |
| yes | qui host, optionally including a reverse-proxy base path; |
| no | API key sent as |
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 |
| 55 |
| 29 |
| 24 |
| 20 |
| 17 |
| 15 |
| 14 |
| 12 |
| 10 |
| 7 |
| 7 |
| 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 buildmake 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 toolsqui_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
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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}
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
226 tool updates
- Removed
qui_activate_license - Removed
qui_add_cross_seed_blocklist_entry - Removed
qui_add_peers - Removed
qui_add_rss_feed - Removed
qui_add_rss_folder - Removed
qui_add_torrent - Removed
qui_add_torrent_trackers - Removed
qui_analyze_cross_seed_torrent - Removed
qui_apply_automations - Removed
qui_apply_cross_seed_search - Removed
qui_apply_cross_seed_season_pack - Added
qui_automations - Added
qui_backups - Removed
qui_ban_peers - Removed
qui_cancel_cross_seed_automation - Removed
qui_cancel_cross_seed_search - Removed
qui_cancel_directory_scan - Removed
qui_cancel_orphan_scan - Added
qui_categories_tags - Removed
qui_change_password - Removed
qui_check_cross_seed_season_pack - Removed
qui_check_duplicate_torrents - Removed
qui_check_setup - Removed
qui_confirm_orphan_deletion - Removed
qui_create_api_key - Removed
qui_create_arr_instance - Removed
qui_create_automation - Removed
qui_create_category - Removed
qui_create_client_api_key - Removed
qui_create_external_program - Removed
qui_create_filter_view - Removed
qui_create_instance - Removed
qui_create_notification_target - Removed
qui_create_scan_directory - Removed
qui_create_tags - Removed
qui_create_torrent - Removed
qui_create_torznab_indexer - Removed
qui_create_tracker_customization - Added
qui_cross_seed - Removed
qui_cross_seed_apply - Removed
qui_cross_seed_webhook_check - Removed
qui_delete_all_backup_runs - Removed
qui_delete_api_key - Removed
qui_delete_arr_instance - Removed
qui_delete_automation - Removed
qui_delete_automation_activity - Removed
qui_delete_backup_run - Removed
qui_delete_client_api_key - Removed
qui_delete_cross_seed_blocklist_entry - Removed
qui_delete_external_program - Removed
qui_delete_filter_view - Removed
qui_delete_instance - Removed
qui_delete_license - Removed
qui_delete_notification_target - Removed
qui_delete_scan_directory - Removed
qui_delete_tags - Removed
qui_delete_torrent_creation_task - Removed
qui_delete_torznab_indexer - Removed
qui_delete_tracker_customization - Added
qui_dir_scan - Removed
qui_discover_torznab_indexers - Removed
qui_dry_run_automations - Removed
qui_edit_category - Removed
qui_edit_torrent_tracker - Removed
qui_execute_backup_restore - Removed
qui_execute_external_program - Removed
qui_get_active_torrent_creation_count - Removed
qui_get_active_trackers - Removed
qui_get_alternative_speed_limits - Removed
qui_get_application_info - Removed
qui_get_arr_instance - Removed
qui_get_automation_activity_run - Removed
qui_get_backup_manifest - Removed
qui_get_backup_settings - Removed
qui_get_categories - Removed
qui_get_cross_seed_async_status - Removed
qui_get_cross_seed_completion - Removed
qui_get_cross_seed_local_matches - Removed
qui_get_cross_seed_search_settings - Removed
qui_get_cross_seed_search_status - Removed
qui_get_cross_seed_settings - Removed
qui_get_cross_seed_status - Removed
qui_get_current_user - Removed
qui_get_dashboard_settings - Removed
qui_get_dir_scan_settings - Removed
qui_get_directory_content - Removed
qui_get_instance_app_info - Removed
qui_get_instance_capabilities - Removed
qui_get_instance_cross_seed_status - Removed
qui_get_instance_mediainfo - Removed
qui_get_instance_transfer_info - Removed
qui_get_latest_version - Removed
qui_get_licensed_status - Removed
qui_get_log_exclusions - Removed
qui_get_log_settings - Removed
qui_get_orphan_scan_run - Removed
qui_get_orphan_scan_settings - Removed
qui_get_preferences - Removed
qui_get_reannounce_activity - Removed
qui_get_reannounce_candidates - Removed
qui_get_rss_items - Removed
qui_get_rss_rules - Removed
qui_get_scan_directory - Removed
qui_get_scan_directory_status - Removed
qui_get_tags - Removed
qui_get_torrent_creation_status - Removed
qui_get_torrent_field - Removed
qui_get_torrent_file_mediainfo - Removed
qui_get_torrent_files - Removed
qui_get_torrent_peers - Removed
qui_get_torrent_pieces - Removed
qui_get_torrent_properties - Removed
qui_get_torrent_trackers - Removed
qui_get_torrent_webseeds - Removed
qui_get_torznab_activity - Removed
qui_get_torznab_all_health - Removed
qui_get_torznab_indexer - Removed
qui_get_torznab_indexer_errors - Removed
qui_get_torznab_indexer_health - Removed
qui_get_torznab_indexer_stats - Removed
qui_get_torznab_search_cache - Removed
qui_get_torznab_search_history - Removed
qui_get_torznab_tracker_domains - Removed
qui_get_tracker_icons - Removed
qui_get_version - Removed
qui_import_backup_manifest - Added
qui_instances - Removed
qui_list_api_keys - Removed
qui_list_arr_instances - Removed
qui_list_automation_activity - Removed
qui_list_automations - Removed
qui_list_backup_runs - Removed
qui_list_client_api_keys - Removed
qui_list_cross_instance_torrents - Removed
qui_list_cross_seed_blocklist - Removed
qui_list_cross_seed_runs - Removed
qui_list_cross_seed_search_runs - Removed
qui_list_cross_seed_season_pack_runs - Removed
qui_list_custom_themes - Removed
qui_list_external_programs - Removed
qui_list_filter_views - Removed
qui_list_instances - Removed
qui_list_licenses - Removed
qui_list_log_files - Removed
qui_list_notification_events - Removed
qui_list_notification_targets - Removed
qui_list_orphan_scan_runs - Removed
qui_list_recent_torznab_searches - Removed
qui_list_scan_directories - Removed
qui_list_scan_directory_files - Removed
qui_list_scan_directory_runs - Removed
qui_list_scan_run_injections - Removed
qui_list_torrents - Removed
qui_list_torznab_indexers - Removed
qui_list_tracker_customizations - Removed
qui_mark_rss_article_read - Removed
qui_move_rss_item - Added
qui_orphan_scan - Removed
qui_patch_cross_seed_search_settings - Removed
qui_patch_cross_seed_settings - Removed
qui_preview_automation_delete - Removed
qui_preview_backup_restore - Removed
qui_preview_rss_rule_matches - Removed
qui_refresh_licenses - Removed
qui_refresh_rss_item - Removed
qui_remove_categories - Removed
qui_remove_rss_item - Removed
qui_remove_rss_rule - Removed
qui_remove_torrent_trackers - Removed
qui_rename_rss_rule - Removed
qui_rename_torrent - Removed
qui_rename_torrent_file - Removed
qui_rename_torrent_folder - Removed
qui_reorder_automations - Removed
qui_reprocess_rss_rules - Removed
qui_requeue_scan_directory_no_match - Removed
qui_reset_scan_directory_files - Removed
qui_resolve_arr - Added
qui_rss - Removed
qui_run_cross_seed_automation - Removed
qui_scan_directory - Removed
qui_search_cross_seed_torrent - Removed
qui_search_torznab - Removed
qui_search_torznab_cross_seed - Removed
qui_set_rss_feed_url - Removed
qui_set_rss_rule - Removed
qui_set_torrent_file_priority - Removed
qui_start_cross_seed_search - Removed
qui_sync_torznab_indexer_caps - Added
qui_system - Removed
qui_test_arr_connection - Removed
qui_test_arr_instance - Removed
qui_test_instance - Removed
qui_test_notification_target - Removed
qui_test_torznab_indexer - Removed
qui_toggle_alternative_speed_limits - Removed
qui_torrent_bulk_action - Added
qui_torrent_creator - Added
qui_torrents - Added
qui_torznab - Removed
qui_trigger_backup - Removed
qui_trigger_orphan_scan - Removed
qui_update_arr_instance - Removed
qui_update_automation - Removed
qui_update_backup_settings - Removed
qui_update_cross_seed_completion - Removed
qui_update_cross_seed_settings - Removed
qui_update_dashboard_settings - Removed
qui_update_dir_scan_settings - Removed
qui_update_external_program - Removed
qui_update_filter_view - Removed
qui_update_instance - Removed
qui_update_instance_order - Removed
qui_update_instance_status - Removed
qui_update_log_exclusions - Removed
qui_update_log_settings - Removed
qui_update_notification_target - Removed
qui_update_orphan_scan_settings - Removed
qui_update_preferences - Removed
qui_update_scan_directory - Removed
qui_update_torznab_indexer - Removed
qui_update_torznab_search_cache_settings - Removed
qui_update_tracker_customization - Removed
qui_validate_automation_regex - Removed
qui_validate_license - Removed
qui_validate_session
214 tool updates
v0.1.0- First observed
qui_activate_license - First observed
qui_add_cross_seed_blocklist_entry - First observed
qui_add_peers - First observed
qui_add_rss_feed - First observed
qui_add_rss_folder - First observed
qui_add_torrent - First observed
qui_add_torrent_trackers - First observed
qui_analyze_cross_seed_torrent - First observed
qui_apply_automations - First observed
qui_apply_cross_seed_search - First observed
qui_apply_cross_seed_season_pack - First observed
qui_ban_peers - First observed
qui_cancel_cross_seed_automation - First observed
qui_cancel_cross_seed_search - First observed
qui_cancel_directory_scan - First observed
qui_cancel_orphan_scan - First observed
qui_change_password - First observed
qui_check_cross_seed_season_pack - First observed
qui_check_duplicate_torrents - First observed
qui_check_setup - First observed
qui_confirm_orphan_deletion - First observed
qui_create_api_key - First observed
qui_create_arr_instance - First observed
qui_create_automation - First observed
qui_create_category - First observed
qui_create_client_api_key - First observed
qui_create_external_program - First observed
qui_create_filter_view - First observed
qui_create_instance - First observed
qui_create_notification_target - First observed
qui_create_scan_directory - First observed
qui_create_tags - First observed
qui_create_torrent - First observed
qui_create_torznab_indexer - First observed
qui_create_tracker_customization - First observed
qui_cross_seed_apply - First observed
qui_cross_seed_webhook_check - First observed
qui_delete_all_backup_runs - First observed
qui_delete_api_key - First observed
qui_delete_arr_instance - First observed
qui_delete_automation - First observed
qui_delete_automation_activity - First observed
qui_delete_backup_run - First observed
qui_delete_client_api_key - First observed
qui_delete_cross_seed_blocklist_entry - First observed
qui_delete_external_program - First observed
qui_delete_filter_view - First observed
qui_delete_instance - First observed
qui_delete_license - First observed
qui_delete_notification_target - First observed
qui_delete_scan_directory - First observed
qui_delete_tags - First observed
qui_delete_torrent_creation_task - First observed
qui_delete_torznab_indexer - First observed
qui_delete_tracker_customization - First observed
qui_discover_torznab_indexers - First observed
qui_dry_run_automations - First observed
qui_edit_category - First observed
qui_edit_torrent_tracker - First observed
qui_execute_backup_restore - First observed
qui_execute_external_program - First observed
qui_get_active_torrent_creation_count - First observed
qui_get_active_trackers - First observed
qui_get_alternative_speed_limits - First observed
qui_get_application_info - First observed
qui_get_arr_instance - First observed
qui_get_automation_activity_run - First observed
qui_get_backup_manifest - First observed
qui_get_backup_settings - First observed
qui_get_categories - First observed
qui_get_cross_seed_async_status - First observed
qui_get_cross_seed_completion - First observed
qui_get_cross_seed_local_matches - First observed
qui_get_cross_seed_search_settings - First observed
qui_get_cross_seed_search_status - First observed
qui_get_cross_seed_settings - First observed
qui_get_cross_seed_status - First observed
qui_get_current_user - First observed
qui_get_dashboard_settings - First observed
qui_get_dir_scan_settings - First observed
qui_get_directory_content - First observed
qui_get_instance_app_info - First observed
qui_get_instance_capabilities - First observed
qui_get_instance_cross_seed_status - First observed
qui_get_instance_mediainfo - First observed
qui_get_instance_transfer_info - First observed
qui_get_latest_version - First observed
qui_get_licensed_status - First observed
qui_get_log_exclusions - First observed
qui_get_log_settings - First observed
qui_get_orphan_scan_run - First observed
qui_get_orphan_scan_settings - First observed
qui_get_preferences - First observed
qui_get_reannounce_activity - First observed
qui_get_reannounce_candidates - First observed
qui_get_rss_items - First observed
qui_get_rss_rules - First observed
qui_get_scan_directory - First observed
qui_get_scan_directory_status - First observed
qui_get_tags - First observed
qui_get_torrent_creation_status - First observed
qui_get_torrent_field - First observed
qui_get_torrent_file_mediainfo - First observed
qui_get_torrent_files - First observed
qui_get_torrent_peers - First observed
qui_get_torrent_pieces - First observed
qui_get_torrent_properties - First observed
qui_get_torrent_trackers - First observed
qui_get_torrent_webseeds - First observed
qui_get_torznab_activity - First observed
qui_get_torznab_all_health - First observed
qui_get_torznab_indexer - First observed
qui_get_torznab_indexer_errors - First observed
qui_get_torznab_indexer_health - First observed
qui_get_torznab_indexer_stats - First observed
qui_get_torznab_search_cache - First observed
qui_get_torznab_search_history - First observed
qui_get_torznab_tracker_domains - First observed
qui_get_tracker_icons - First observed
qui_get_version - First observed
qui_import_backup_manifest - First observed
qui_list_api_keys - First observed
qui_list_arr_instances - First observed
qui_list_automation_activity - First observed
qui_list_automations - First observed
qui_list_backup_runs - First observed
qui_list_client_api_keys - First observed
qui_list_cross_instance_torrents - First observed
qui_list_cross_seed_blocklist - First observed
qui_list_cross_seed_runs - First observed
qui_list_cross_seed_search_runs - First observed
qui_list_cross_seed_season_pack_runs - First observed
qui_list_custom_themes - First observed
qui_list_external_programs - First observed
qui_list_filter_views - First observed
qui_list_instances - First observed
qui_list_licenses - First observed
qui_list_log_files - First observed
qui_list_notification_events - First observed
qui_list_notification_targets - First observed
qui_list_orphan_scan_runs - First observed
qui_list_recent_torznab_searches - First observed
qui_list_scan_directories - First observed
qui_list_scan_directory_files - First observed
qui_list_scan_directory_runs - First observed
qui_list_scan_run_injections - First observed
qui_list_torrents - First observed
qui_list_torznab_indexers - First observed
qui_list_tracker_customizations - First observed
qui_mark_rss_article_read - First observed
qui_move_rss_item - First observed
qui_patch_cross_seed_search_settings - First observed
qui_patch_cross_seed_settings - First observed
qui_preview_automation_delete - First observed
qui_preview_backup_restore - First observed
qui_preview_rss_rule_matches - First observed
qui_refresh_licenses - First observed
qui_refresh_rss_item - First observed
qui_remove_categories - First observed
qui_remove_rss_item - First observed
qui_remove_rss_rule - First observed
qui_remove_torrent_trackers - First observed
qui_rename_rss_rule - First observed
qui_rename_torrent - First observed
qui_rename_torrent_file - First observed
qui_rename_torrent_folder - First observed
qui_reorder_automations - First observed
qui_reprocess_rss_rules - First observed
qui_requeue_scan_directory_no_match - First observed
qui_reset_scan_directory_files - First observed
qui_resolve_arr - First observed
qui_run_cross_seed_automation - First observed
qui_scan_directory - First observed
qui_search_cross_seed_torrent - First observed
qui_search_torznab - First observed
qui_search_torznab_cross_seed - First observed
qui_set_rss_feed_url - First observed
qui_set_rss_rule - First observed
qui_set_torrent_file_priority - First observed
qui_start_cross_seed_search - First observed
qui_sync_torznab_indexer_caps - First observed
qui_test_arr_connection - First observed
qui_test_arr_instance - First observed
qui_test_instance - First observed
qui_test_notification_target - First observed
qui_test_torznab_indexer - First observed
qui_toggle_alternative_speed_limits - First observed
qui_torrent_bulk_action - First observed
qui_trigger_backup - First observed
qui_trigger_orphan_scan - First observed
qui_update_arr_instance - First observed
qui_update_automation - First observed
qui_update_backup_settings - First observed
qui_update_cross_seed_completion - First observed
qui_update_cross_seed_settings - First observed
qui_update_dashboard_settings - First observed
qui_update_dir_scan_settings - First observed
qui_update_external_program - First observed
qui_update_filter_view - First observed
qui_update_instance - First observed
qui_update_instance_order - First observed
qui_update_instance_status - First observed
qui_update_log_exclusions - First observed
qui_update_log_settings - First observed
qui_update_notification_target - First observed
qui_update_orphan_scan_settings - First observed
qui_update_preferences - First observed
qui_update_scan_directory - First observed
qui_update_torznab_indexer - First observed
qui_update_torznab_search_cache_settings - First observed
qui_update_tracker_customization - First observed
qui_validate_automation_regex - First observed
qui_validate_license - First observed
qui_validate_session
TDQS
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.
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.
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.
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
Related MCP Connectors
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
MCP server exposing the Backtest360 engine API as tools for AI agents.
Related MCP Servers
- AlicenseBqualityCmaintenancePython wrapper & MCP server for the rqbit API83MIT
- AlicenseBqualityBmaintenanceMCP 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.71MIT
- AlicenseAqualityAmaintenanceMCP server exposing qBittorrent's WebUI API v2 as tools, enabling LLMs to manage torrents, categories, tags, RSS feeds, search plugins, and application settings.901MIT
- AlicenseAqualityAmaintenanceMCP server exposing Prowlarr's API v1 as tools for managing indexers, applications, download clients, and more, including cross-indexer searches and system commands.10MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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