Skip to main content
Glama

qbit_manage-mcp

Part of the arr-mcps collection. MCP server exposing qbit_manage's Web API as tools, so an LLM can read and manage a qbit_manage instance: run maintenance commands against your qBittorrent torrents, manage config files (create/read/update/delete/validate/backup/restore), the scheduler, logs, security settings, and system state.

Built with FastMCP. qbit_manage's API has no vendored OpenAPI spec, so the endpoint table is hand-maintained against qbit_manage's modules/web_api.py handler routes (see AGENTS.md).

Enabling the Web API on your qbit_manage server

qbit_manage's REST API runs at port 8181 by default. Start it with the web server enabled, e.g. qbit_manage --web-server --host 0.0.0.0 --port 8181 (or set QBT_WEB_SERVER=true / QBT_HOST / QBT_PORT in Docker). See qbit_manage's Web-API docs for details.

Related MCP server: profilarr-mcp

Install

Download a wheel from the latest release and install it as a uv tool (no repo checkout needed):

uv tool install qbit_manage_mcp-*.whl

This puts a qbit-manage-mcp command on your PATH. Register it with Claude Code:

claude mcp add qbit-manage \
  --env QBIT_MANAGE_URL=http://qbit-manage.example.com:8181 \
  --env QBIT_MANAGE_API_KEY=<key> \
  -- qbit-manage-mcp

From source

uv sync
cp .env.example .env   # fill in QBIT_MANAGE_URL and QBIT_MANAGE_API_KEY
claude mcp add qbit-manage \
  --env QBIT_MANAGE_URL=http://qbit-manage.example.com:8181 \
  --env QBIT_MANAGE_API_KEY=<key> \
  -- uv run --directory /path/to/qbit_manage-mcp qbit-manage-mcp

Config

Env var

Required

Default

QBIT_MANAGE_URL

yes

-

QBIT_MANAGE_API_KEY

yes*

none (no API key header sent if unset)

QBIT_MANAGE_USERNAME

no

used for Basic auth when no API key is set

QBIT_MANAGE_PASSWORD

no

used for Basic auth when no API key is set

* If authentication is enabled on qbit_manage (method: api_only or basic) you must set the API key (or username/password), or every authenticated call returns 401. If authentication is disabled or bypass_auth_for_local is on, the server still works without credentials. If your qbit_manage instance is served under a base URL (--base-url/QBT_BASE_URL), include that subpath in QBIT_MANAGE_URL.

Tools

Six resource-scoped tools. Each takes an operation (one of the listed endpoints) plus an arguments dict matching that operation's parameters, and dispatches to the underlying endpoint. This is the fleet's portmanteau pattern: all 23 qbit_manage endpoints wrapped as 6 tools so every session's system prompt stays small.

Tool

Operations (endpoints)

qbit_manage_config

list_configs, get_config, create_config, update_config, delete_config, validate_config, backup_config, list_config_backups, restore_config_from_backup (/api/configs, /api/configs/{filename} + /validate, /backup, /backups, /restore)

qbit_manage_commands

run_command (/api/run-command)

qbit_manage_scheduler

get_scheduler_status, update_schedule, toggle_schedule_persistence (/api/scheduler, /api/schedule, /api/schedule/persistence/toggle)

qbit_manage_logs

get_logs, list_log_files, get_documentation (/api/logs, /api/log_files, /api/docs)

qbit_manage_system

get_version, health_check, get_base_url, force_reset_running_state (/api/version, /api/health, /api/get_base_url, /api/system/force-reset)

qbit_manage_security

get_security_settings, get_security_status, update_security_settings (/api/security, /api/security/status)

run_command is how an LLM triggers actual qbit_manage work against qBittorrent: pass a body with commands (e.g. ["cat_update", "tag_update"]), optionally hashes to scope to specific torrents, and dry_run: true to preview without side effects. Valid commands: cat_update, tag_update, recheck, rem_unregistered, tag_tracker_error, rem_orphaned, tag_nohardlinks, share_limits.

Config write operations take the config data as {"data": <config dict>}data mirrors the YAML structure. get_documentation returns raw markdown text, not JSON.

Development

make help  # list all commands

Command

Does

make sync

uv sync

make test

Offline tests - one per endpoint, mocked HTTP

make test-integration

Tests against the live instance (needs QBIT_MANAGE_URL/QBIT_MANAGE_API_KEY; write tests need QBIT_MANAGE_WRITE_TESTS=1)

make build

Build wheel + sdist into dist/

make bump-patch / bump-minor / bump-major

Bump the version in pyproject.toml + uv.lock

make clean

Remove build artifacts

The release workflow (.github/workflows/release.yml) builds and publishes to Releases whenever a v* tag is pushed - so the usual flow is make bump-patch, commit, then tag and push.

Available Tools

6 tools
qbit_manage_commandsA

qbit manage commands operations on qbit_manage. Pass operation and an arguments dict matching that operation's parameters.

  • qbit_manage_run_command(body={}) — Run qbit_manage commands against a config (body is a CommandRequest: config_file, commands list, hashes, dry_run, skip_cleanup, skip_qb_version_check, log_level). Valid commands: cat_update, tag_update, recheck, rem_unregistered, tag_tracker_error, rem_orphaned, tag_nohardlinks, share_limits. WRITE: this runs real qbit_manage operations against your qBittorrent instance.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and explicitly warns 'WRITE: this runs real qbit_manage operations against your qBittorrent instance.' It also mentions dry_run among the CommandRequest fields, helping an agent understand that changes can be previewed. It does not fully cover secondary effects, but the key mutation risk is 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 compact and front-loaded with the core instruction and the WRITE warning, followed by a structured CommandRequest summary. The opening sentence is slightly redundant with the tool name, but no sentence is wasted.

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

Completeness4/5

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

For a command-execution tool with an output schema and no annotations, the description covers operation mechanics, parameter contents, valid subcommands, and mutation risk. It could be more complete with explicit sibling routing, but nothing essential for invoking the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the arguments field is a free-form object, yet the description lists the CommandRequest fields (config_file, commands, hashes, dry_run, skip_cleanup, skip_qb_version_check, log_level) and valid command values. This fully compensates for the sparse schema by giving agents concrete parameter meaning.

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 the tool runs qbit_manage commands against a config by passing an operation and arguments, and it enumerates the valid commands. This gives a specific verb+resource and distinguishes it from sibling tools focused on config, scheduler, logs, system, and security.

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 phrase 'qbit manage commands operations' and the command list imply this is the tool for executing qbit_manage commands, but there is no explicit when-to-use guidance or mention of alternatives. It provides clear context without exclusions, so it stops at implied usage.

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

qbit_manage_configA

qbit manage config operations on qbit_manage. Pass operation and an arguments dict matching that operation's parameters.

  • qbit_manage_backup_config(filename) — Create a timestamped manual backup of a config file (keeps up to 30 per config). WRITE: this modifies your qbit_manage instance.

  • qbit_manage_create_config(filename, body={}) — Create a new config file (body is {"data": }). Returns 409 if the file already exists. WRITE: this modifies your qbit_manage instance.

  • qbit_manage_delete_config(filename) — Delete a config file permanently (a backup is created before deletion). DESTRUCTIVE: this deletes data.

  • qbit_manage_get_config(filename) — Fetch a parsed config file. data mirrors the YAML structure; !ENV references are preserved as "!ENV ".

  • qbit_manage_list_config_backups(filename) — List available backups for a config file, newest first.

  • qbit_manage_list_configs() — List available config files in the config directory (sensitive files like qbm_settings.yml are filtered out).

  • qbit_manage_restore_config_from_backup(filename) — Load a backup by name (filename is the backup file name in the path, e.g. config_20260521_100000.yml) and return its data for restoring.

  • qbit_manage_update_config(filename, body={}) — Update an existing config file (body is {"data": }); a timestamped backup is auto-created before writing. WRITE: this modifies your qbit_manage instance.

  • qbit_manage_validate_config(filename, body={}) — Validate a config through the parser without executing (body is {"data": }); defaults backfilled during validation are written back to the real config.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries full responsibility, and it excels: it labels WRITE and DESTRUCTIVE operations, notes that backups are auto-created before deletion/update, mentions the 409 response for existing files, discloses that sensitive files are filtered, states that !ENV references are preserved, and warns that validation writes backfilled defaults to the real config.

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 long due to nine operations, but each line follows a consistent, compact format: operation name, parameters, and behavior. The opening sentence explains the pattern, and every entry earns its place with necessary detail. Nothing is redundant.

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

Completeness5/5

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

For a complex, multi-operation config tool, the description covers every operation's input, side effects, and notable return/behavior details (e.g., newest-first backups, 409 conflict, preservation of !ENV). An output schema exists for return values, so the absence of exhaustive return descriptions is acceptable. An agent can correctly select and invoke any listed operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the arguments parameter is a generic object, but the description gives each operation's signature, explains the body format as {'data': <config dict>}, and clarifies filename semantics for restore. This fully compensates for the bare schema.

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

Purpose5/5

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

The description opens with 'qbit manage config operations on qbit_manage' and then enumerates nine distinct config-related operations with specific verbs (backup, create, delete, get, list, restore, update, validate) and resources (config files, backups). This clearly distinguishes the tool from siblings like qbit_manage_commands or qbit_manage_logs.

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 conveys clear context: this tool is for qbit_manage config files. It does not explicitly mention alternatives or provide 'use this when' guidance, but the scope is unambiguous and the operation list makes applicable situations obvious. It stops short of 5 because no when-not-to-use or sibling comparisons are stated.

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

qbit_manage_logsA
Read-only

qbit manage logs operations on qbit_manage. Pass operation and an arguments dict matching that operation's parameters.

  • qbit_manage_get_documentation(file) — Fetch a markdown docs file by name (e.g. Home.md, Commands.md, Config-Setup.md). Returns markdown text, not JSON.

  • qbit_manage_get_logs(limit=None, log_filename=None) — Fetch recent log lines in chronological order. limit caps the tail; log_filename selects the active (.log) or rotated (..log) file (default qbit_manage.log).

  • qbit_manage_list_log_files() — List available log files (active and rotated).

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Although readOnlyHint=true already signals a safe read operation, the description adds meaningful behavior: get_documentation returns markdown text rather than JSON, get_logs returns in chronological order, and log_filename selects active vs rotated files. No annotation contradiction exists.

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 formatted as a bulleted list with signatures and brief, relevant details. The opening sentence is slightly generic, but every bullet earns its place by adding operation-level semantics.

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

Completeness4/5

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

For a wrapper/dispatcher tool, the description covers all operations, the argument-passing pattern, defaults, and the rotated-file distinction. The presence of an output schema reduces the need to explain return formats. Minor gap: it does not explicitly say 'arguments' can be omitted for operations that take no parameters.

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 carries the burden. It compensates by defining each operation's parameters (file, limit, log_filename) and their defaults, clarifying what the generic 'arguments' dict should contain. It does not fully specify value types, but the signatures are reasonably informative.

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 enumerates three specific operations with concrete verbs (Fetch, List, Fetch logs/documentation), which is more than a tautology. It does not explicitly contrast with sibling tools, but the operation names make its scope recognizable.

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 this tool is used for qbit_manage logs/documentation by listing its suboperations and the argument-passing convention. However, it never states when to choose this tool over sibling tools or when not to use it.

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

qbit_manage_schedulerA

qbit manage scheduler operations on qbit_manage. Pass operation and an arguments dict matching that operation's parameters.

  • qbit_manage_get_scheduler_status() — Return scheduler status: current schedule (type interval|cron + value), next run time, is_running, source, persistent/file_exists/disabled state.

  • qbit_manage_toggle_schedule_persistence() — Toggle whether the schedule persists across restarts. WRITE: this modifies your qbit_manage instance.

  • qbit_manage_update_schedule(body={}) — Set the schedule (body {"schedule": "1440" or "0 4 * * *", "type": "interval" or "cron" optional}). Takes effect immediately; type auto-detected if omitted. WRITE: this modifies your qbit_manage instance.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of disclosing side effects. It explicitly marks the two mutating operations as WRITE and states that they modify the qbit_manage instance. It also notes that schedule updates take effect immediately and type is auto-detected if omitted, which is useful behavioral context.

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 tightly organized with a clear general instruction followed by three concise bullet points. Every sentence adds functional value, and the structure makes the operation dispatch pattern easy to parse.

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 description covers all three operations, their side effects, and key behavioral details like immediate effect and type auto-detection. Since an output schema exists, return values are less critical to explain. Minor gaps remain around prerequisites and error behavior, but for a dispatcher-style tool this is largely 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 coverage is 0%, so the description must compensate. It does so by explaining that `arguments` must be a dict matching the chosen operation, and it details the `body` parameter for `qbit_manage_update_schedule` with example values for `schedule` and `type`. The operation enum is already in the schema, but the argument semantics for update are meaningfully expanded.

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 explicitly enumerates three distinct operations with specific verbs and resources: get scheduler status, toggle schedule persistence, and update schedule. Each operation is clearly named and described, making the tool's purpose unambiguous and distinguishable from other qbit_manage 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 top-level instruction to pass an `operation` and matching `arguments` dict provides functional usage guidance. The individual operation descriptions imply when each should be used, but there is no explicit when-to-use vs alternatives, no exclusions, and no comparison to sibling tools like qbit_manage_config or qbit_manage_commands.

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

qbit_manage_securityA

qbit manage security operations on qbit_manage. Pass operation and an arguments dict matching that operation's parameters.

  • qbit_manage_get_security_settings() — Get security settings (API key and password hash are redacted).

  • qbit_manage_get_security_status() — Get auth summary without sensitive data: has_api_key, method, enabled.

  • qbit_manage_update_security_settings(body={}) — Update security settings (body is a SecuritySettingsRequest: enabled, method none|basic|api_only, username, password, generate_api_key, clear_api_key, trusted_proxies, bypass_auth_for_local, current_* credentials for reauthentication). WRITE: this modifies your qbit_manage instance.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral transparency burden. It explicitly warns that update is a WRITE operation modifying the qbit_manage instance, notes that API key and password hash are redacted in settings, and says status returns only non-sensitive summary fields. This gives agents safety-relevant behavior beyond the bare tool name.

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 bulleted list is well organized and front-loads the general calling convention before detailing operations. It is economical, though the opening phrase 'qbit manage security operations on qbit_manage' is slightly awkward and repetitive.

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 description covers the operation dispatcher, update body fields, sensitive-data redaction, and the write side effect. It is complete for a 3-operation dispatcher with an output schema. The main gap is the exact shape of the arguments dict and parameter types, but the provided field names and enum values give substantial guidance.

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 compensate. It lists the update body's fields including the method enum values (none|basic|api_only) and current_* reauthentication credentials. However, it does not explicitly map the arguments dict to operation parameters or state field types, leaving some ambiguity.

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

Purpose5/5

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

The description clearly identifies the tool as handling security operations for qbit_manage and enumerates three specific sub-operations: get settings, get status, and update settings. This distinguishes it from sibling tools focused on config, commands, scheduler, logs, and system.

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 a usage instruction—'Pass operation and an arguments dict'—and the operation list implies when to use it, but it does not explicitly say when to choose this over sibling tools or state exclusions. The distinction is inferred from the 'security' scope rather than explicitly compared.

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

qbit_manage_systemA

qbit manage system operations on qbit_manage. Pass operation and an arguments dict matching that operation's parameters.

  • qbit_manage_force_reset_running_state() — Force-reset the internal is_running flag to recover from a stuck run state. WRITE: this modifies your qbit_manage instance.

  • qbit_manage_get_base_url() — Return the configured base URL the web server is served under (always public).

  • qbit_manage_get_version() — Get the current qbit_manage version with update availability details (always public).

  • qbit_manage_health_check() — Liveness/readiness probe (always public): status healthy|degraded|busy|unhealthy, queue size, config/log directory state, next scheduled run.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden and handles it well: it explicitly labels the reset as a WRITE that modifies the instance and labels three operations as 'always public'. It also summarizes the health check's response contents, though it does not discuss side effects or error conditions of the reset.

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 compact and front-loaded with the two-argument dispatch pattern, then uses a concise bulleted list where each line adds a distinct behavioral detail. There is no filler or repetition of the schema.

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?

It covers operation purposes, public/read-only status, the write warning, and health output, which is strong for selecting an operation. It is incomplete, though, on the arguments shape and on what happens if the reset is invoked while not stuck or when public operations are not available.

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 only gives the generic rule that 'arguments' must match the operation's parameters. It does not enumerate the parameters each operation accepts, so an agent cannot confidently construct an arguments dict; the empty parentheses in the operation list add ambiguity.

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

Purpose5/5

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

The description names a dispatcher ('system operations on qbit_manage') and enumerates four concrete sub-operations with specific verbs and objects (force-reset flag, return base URL, get version, health probe). This makes the tool's role clear and distinguishes it from sibling domains like config, logs, and security.

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?

Usage is implied through the listed operations: an agent can infer to call this tool when it needs health, version, base URL, or reset behavior. However, there is no explicit when-to-use versus the sibling tools, and no conditions/exclusions are stated beyond 'always public'.

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. 6 tool updatesv0.1.0
    • First observedqbit_manage_commands
    • First observedqbit_manage_config
    • First observedqbit_manage_logs
    • First observedqbit_manage_scheduler
    • First observedqbit_manage_security
    • First observedqbit_manage_system

TDQS

A4.3/5.0
Disambiguation5/5

The six tools are clearly separated by resource domain: config, commands, scheduler, logs, system, and security. There is no meaningful overlap in purpose, so an agent can reliably choose the right tool.

Naming Consistency5/5

Every tool follows the same qbit_manage_<noun> snake_case pattern. The naming is uniform and predictable, making tool selection and routing straightforward.

Tool Count5/5

Six tools is a well-scoped count for managing a qbit_manage instance. Each tool represents a distinct functional area without unnecessary proliferation or overlap.

Completeness5/5

The tool surface covers config lifecycle, backup/restore, validation, command execution, scheduling, logs, system health/version, and security settings. These are the core domains needed to operate and manage a qbit_manage server, with no obvious critical gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server exposing a local (or LAN) ComfyUI instance's HTTP API as tools, so an LLM client can queue generations, inspect the queue/history, upload reference images, browse installed models/nodes, and pull back generated images.
    -
  • A
    license
    A
    quality
    A
    maintenance
    MCP server exposing Profilarr's v1 REST API as tools, enabling an LLM to inspect and manage linked databases, connected Radarr/Sonarr instances, backups, jobs, announcements, and system status.
    20
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    MCP server that exposes qui's JSON REST API as tools for monitoring and managing qBittorrent instances, torrents, automations, cross-seeding, RSS, backups, and related services.
    12
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server exposing Dashbrr's REST API as tools, so an LLM can read and manage a dashbrr instance: configured services, per-service health, and summary panels for many apps. Write tools cover settings management, download-queue deletes, Overseerr approvals, UI preferences, and the Plex auth PIN flow.
    34
    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/qbit_manage-mcp'

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