Skip to main content
Glama

AB Download Manager MCP Server (abdm-mcp)

License: MIT Python 3.10+ MCP Specification CI

MCP server for AB Download Manager. Connects AI coding assistants and autonomous agents (Claude Desktop, OpenAI Codex & ChatGPT, Google Antigravity, Kimi, Cursor, Windsurf, Cline, Zed) to ABDM so they can offload large downloads—model weights, datasets, and archives—with multi-threaded acceleration (up to 32 connections), pause/resume, and queueing instead of choking on single-threaded agent HTTP calls.


Quick Start

Run with uvx (No installation needed)

uvx abdm-mcp

Network Transports (SSE & HTTP)

# Run with Server-Sent Events (SSE) for remote/containerized agents
uvx abdm-mcp --transport sse --port 8000

# Run with Streamable HTTP
uvx abdm-mcp --transport streamable-http --port 8000

Install with pip

pip install abdm-mcp
python -m abdm_mcp

Related MCP server: aria2-agent

Agent Configuration

abdm-mcp complies with the Model Context Protocol standard and works across all major AI coding agents, IDEs, and assistant platforms.

1. Claude Desktop

Add to your claude_desktop_config.json:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "abdm": {
      "command": "uvx",
      "args": ["abdm-mcp"],
      "env": {
        "ABDM_MCP_DEFAULT_MODE": "interactive",
        "ABDM_API_KEY": "your_api_key_if_configured"
      }
    }
  }
}

2. OpenAI Codex & ChatGPT Desktop

Add to ~/.codex/config.toml (global) or .codex/config.toml (project-scoped):

[mcp_servers.abdm]
command = "uvx"
args = ["abdm-mcp"]
env = { "ABDM_MCP_DEFAULT_MODE" = "headless" }

Or add via the Codex CLI:

codex mcp add abdm -- uvx abdm-mcp

3. Google Antigravity

Add to your workspace or user mcp.json:

{
  "mcpServers": {
    "abdm": {
      "command": "uvx",
      "args": ["abdm-mcp"]
    }
  }
}

4. Kimi (Moonshot AI / Kimi CLI)

Add to your Kimi Agent configuration (kimi_mcp.json or agent settings):

{
  "mcpServers": {
    "abdm": {
      "command": "uvx",
      "args": ["abdm-mcp"],
      "env": {
        "ABDM_MCP_DEFAULT_MODE": "headless"
      }
    }
  }
}

5. Cursor

Add to your project's .cursor/mcp.json or Cursor Settings > Features > MCP:

{
  "mcpServers": {
    "abdm": {
      "command": "uvx",
      "args": ["abdm-mcp"]
    }
  }
}

6. Windsurf (Codeium)

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "abdm": {
      "command": "uvx",
      "args": ["abdm-mcp"]
    }
  }
}

7. Cline & Roo Code (VS Code)

Open Settings in Cline / Roo Code and add under MCP Servers:

{
  "mcpServers": {
    "abdm": {
      "command": "uvx",
      "args": ["abdm-mcp"]
    }
  }
}

8. Zed Editor

Add to ~/.config/zed/settings.json:

{
  "context_servers": {
    "abdm": {
      "command": {
        "env": {},
        "path": "uvx",
        "args": ["abdm-mcp"]
      }
    }
  }
}

9. Continue.dev

Add to ~/.continue/config.json:

{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "transport": {
          "type": "stdio",
          "command": "uvx",
          "args": ["abdm-mcp"]
        }
      }
    ]
  }
}

10. Goose (Block)

Run the extension add command or add to ~/.config/goose/config.yaml:

goose configure add-extension --name abdm --command uvx --args abdm-mcp

Tool Surface & Capabilities

All tools return strongly-typed Pydantic schemas and include explicit MCP Tool Annotations:

Tool Name

Parameters

MCP Annotations

Description

abdm_download

url (str)mode ("interactive" | "headless")filename (str, optional)subdirectory (str, optional)queue_id (int, optional)category_id (int, optional)speed_limit_bytes (int, optional)start_queue (bool = False)headers (dict, optional)download_page (str, optional)

openWorldHint=TruedestructiveHint=False

Submits an HTTP/HTTPS download task with multi-threaded acceleration. Fails fast if interactive options clash.

abdm_download_hls

url (str - .m3u8)mode ("interactive" | "headless")filename (str, optional)subdirectory (str, optional)queue_id (int, optional)category_id (int, optional)speed_limit_bytes (int, optional)start_queue (bool = False)headers (dict, optional)download_page (str, optional)

openWorldHint=TruedestructiveHint=False

Captures and downloads an HLS (.m3u8) video/audio stream with automatic chunk assembly.

abdm_download_batch

urls (list[str])mode ("interactive" | "headless")queue_id (int, optional)

openWorldHint=TruedestructiveHint=False

Enqueues up to 50 URLs in a batch with partial success tracking.

abdm_get_queues

none

readOnlyHint=True

Fetches configured download queues from ABDM.

abdm_check_status

none

readOnlyHint=True

Probes REST reachability, authentication, dynamic port discovery, CLI status, and active capabilities.

abdm_list_downloads

status ("active" | "paused" | "completed" | "error" | "all")

readOnlyHint=True

Lists current downloads reported by ABDM.

abdm_get_download

download_id (str)

readOnlyHint=True

Returns status and metadata for a single download task by ID.

abdm_pause

download_id (str | list[str])

idempotentHint=TruedestructiveHint=False

Pauses one or more active download tasks by ID.

abdm_resume

download_id (str | list[str])

idempotentHint=TruedestructiveHint=False

Resumes one or more paused download tasks by ID.

abdm_pause_all

none

idempotentHint=TruedestructiveHint=False

Pauses all currently active download tasks across ABDM.

abdm_resume_all

none

idempotentHint=TruedestructiveHint=False

Resumes all currently paused download tasks across ABDM.

abdm_remove

download_id (str | list[str])delete_file (bool = False)

destructiveHint=True

Cancels and removes one or more download tasks. File deletion requires policy opt-in and path verification.


Architectural Highlights

  • Auto-Wake on Demand: If the ABDM desktop client is closed when an agent attempts a download or query, abdm-mcp automatically launches the GUI via abdm gui start-if-not-started.

  • Dynamic Port Auto-Discovery: Automatically queries the active Ktor integration port via abdm gui integration show, preventing failure if ABDM is configured with an alternate port.

  • Resilient ANSI-Safe Parsing: Mordant color formatting and Unicode/ASCII table borders are safely normalized during CLI state inspection.

  • Zero-Port Setup over Stdio: Runs seamlessly out of the box via uvx abdm-mcp without firewall warnings or localhost port conflicts.


Security & Sandboxing Guardrails

Autonomous agents are powerful, but should not have unrestricted filesystem or network write access. abdm-mcp implements defense-in-depth:

  1. Path Sandboxing: By default, headless downloads are strictly confined to ~/Downloads/ABDM. Path traversal escapes (../) and absolute paths outside allowed roots are rejected.

  2. Private-Network URL Guard: Protects against SSRF by rejecting direct requests to localhost, 127.0.0.0/8, ::1, RFC1918 LAN subnets (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), and link-local metadata endpoints (169.254.169.254).

  3. Filename Sanitization: Rejects slashes, drive prefixes, control characters, and reserved Windows device names (CON, PRN, AUX, NUL, etc.).

  4. Header Protection: Blocks sensitive headers (Cookie, Authorization, Proxy-Authorization, Host) by default to prevent credential leakage.

  5. Safe Subprocess Execution: The CLI backend strictly uses asyncio.create_subprocess_exec (never shell=True) with bounded streaming readers (1MB limit) and hard execution timeouts.

Environment Variables

Variable

Default

Description

ABDM_CONFIG_DIR

~/.abdm

Custom or portable configuration directory path.

ABDM_PORT

15151

Default port of the ABDM local integration server (overridden by dynamic discovery).

ABDM_API_KEY

None

Optional authentication key configured in ABDM.

ABDM_CLI_PATH

Auto-detected

Explicit path to ABDownloadManagerCli executable.

ABDM_MCP_AUTO_START_APP

true

Automatically wakes the ABDM desktop process on demand if offline.

ABDM_MCP_AUTO_DISCOVER_PORT

true

Queries abdm gui integration show to auto-detect the active integration port.

ABDM_MCP_DEFAULT_MODE

interactive

Default mode: interactive (GUI confirmation) or headless (silent background).

ABDM_MCP_ALLOWED_DOWNLOAD_ROOTS

~/Downloads/ABDM

Comma-separated list of allowed download directories.

ABDM_MCP_ALLOW_PRIVATE_NETWORKS

false

Set to true to allow downloads from LAN / private IPs.

ABDM_MCP_ALLOW_SENSITIVE_HEADERS

false

Set to true to allow Cookie and Authorization headers.

ABDM_MCP_ALLOW_FILE_DELETION

false

Set to true to permit abdm_remove(delete_file=True).

ABDM_MCP_MAX_BATCH_SIZE

50

Maximum URLs accepted in a single abdm_download_batch call.


Development & Testing

# Clone the repository
git clone https://github.com/shivamtawari/ab-download-manager-mcp.git
cd ab-download-manager-mcp

# Install dependencies with uv
uv sync --all-groups

# Run full test suite
uv run pytest tests/

# Run linting
uv run ruff check .

License

MIT License. See LICENSE for details.

Available Tools

12 tools
abdm_check_statusA
Read-onlyIdempotent

Inspect reachability, authentication, port discovery, and capabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
portYesResolved active port
cli_versionNoCLI version if detected
capabilitiesNoList of supported operations
authenticatedNoWhether authentication was verified
cli_availableYesWhether the ABDM CLI binary is present and operational
rest_availableYesWhether the local REST integration port is reachable
shared_state_verifiedYesWhether REST and CLI have been verified to share state

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnly, idempotent, and non-destructive behavior. The description adds specific behaviors beyond annotations by naming what is inspected (reachability, authentication, port discovery, capabilities), giving the agent a concrete picture of the operation's scope.

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?

A single, information-dense sentence with no filler. The verb leads, and the list of inspected aspects is concise and scannable.

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 zero-parameter, read-only diagnostic tool with an output schema, the description fully covers what the agent needs to know. It names all key behavior categories and is consistent with annotations.

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?

There are zero parameters, so schema coverage is automatically 100% and there is nothing for the description to explain. Baseline 4 applies because no parameter documentation burden exists.

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?

Description uses a specific verb ('Inspect') and states the exact scope: reachability, authentication, port discovery, and capabilities. This clearly distinguishes it from sibling download-focused tools like abdm_download or abdm_get_queues.

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?

While no explicit when-to-use guidance is given, the context is clear: this is the diagnostic/status tool amid download-management siblings. An agent can infer it should be used to check connectivity and capabilities before performing downloads. No alternatives are named, but the distinction is strong.

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

abdm_downloadA

Submit an HTTP/HTTPS download task to AB Download Manager with multi-threaded acceleration. In 'interactive' mode, triggers the desktop confirmation GUI. In 'headless' mode, starts silent background download into allowed sandboxed folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
modeNointeractive
headersNo
filenameNo
queue_idNo
category_idNo
start_queueNo
subdirectoryNo
download_pageNo
speed_limit_bytesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYesMode under which download was created
backendYesWhich backend processed the request
messageNoStatus or error message
acceptedYesWhether the task was accepted by ABDM
protocolNoDownload protocol (http or hls)
download_idNoAssigned task ID if available

TDQS

A3.8/5.0
Behavior4/5

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

The annotations only provide basic hints (not read-only, not destructive, not idempotent), so the description carries meaningful weight. It discloses mode-dependent side effects: interactive mode triggers a desktop confirmation GUI, while headless mode performs a silent background download into an allowed sandboxed folder. It also mentions multi-threaded acceleration, adding context beyond the raw schema and annotations.

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 two tight sentences with no filler. The primary action is front-loaded, and the mode-specific behavioral details are presented in a clear, parallel structure that an agent can parse quickly.

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?

For a tool with 10 parameters and zero schema descriptions, the description covers the core workflow (URL plus mode) but leaves several optional parameters unexplained. Since an output schema exists, return values are handled, but an agent would still lack guidance on queue/category/start_queue semantics and on when to choose this over the HLS or batch variants.

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

Parameters2/5

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

The input schema has 0% description coverage across 10 parameters, and the description only explains the 'mode' parameter by describing interactive and headless behavior. Most parameters, such as queue_id, category_id, start_queue, download_page, and speed_limit_bytes, receive no semantic guidance beyond their names, so the description fails to compensate for the schema's lack of documentation.

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 specific action ('Submit an HTTP/HTTPS download task') and a specific resource ('AB Download Manager'), and the 'HTTP/HTTPS' qualifier distinguishes it from the HLS and batch sibling tools. It also clearly conveys the core behavior of creating a download task rather than querying or managing existing downloads.

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

Usage Guidelines3/5

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

The description gives clear context for choosing between 'interactive' and 'headless' modes, which is valuable. However, it never explicitly states when to use this tool over abdm_download_hls or abdm_download_batch; the distinction is only implied by the 'HTTP/HTTPS' wording and sibling names.

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

abdm_download_batchA

Enqueue up to 50 URLs in a batch with per-item status tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNointeractive
urlsYes
queue_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsNoPer-URL results
failedYesNumber of failed submissions
submittedYesNumber of successfully submitted URLs

TDQS

A3.6/5.0
Behavior4/5

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

The description reveals that the operation is asynchronous enqueueing rather than immediate download, and that per-item status tracking is available—useful context not present in annotations. Annotations already signal non-read-only and non-destructive/open-world behavior, and the description is consistent with those. It doesn't detail side effects like queue creation or failure behavior, but it adds meaningful behavioral context beyond the structured hints.

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?

One sentence with no filler; the operation, cap, and status-tracking feature are all front-loaded. It earns its place by adding specifics beyond the tool name. The structure is ideal for quick agent comprehension.

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

Completeness2/5

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

For a 3-parameter asynchronous batch tool, the description is too thin: it doesn't explain the mode enum, the optional queue_id, or how per-item status is surfaced or retrieved. The presence of an output schema covers return-value details, but the operational workflow (enqueue, then check status) and parameter semantics are incomplete. An agent would likely need to inspect siblings or experiment to use it confidently.

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?

With schema description coverage at 0%, the description needed to explain parameters, but only indirectly addresses 'urls' through the phrase 'URLs in a batch.' Mode and queue_id are left entirely unexplained, and even the urls format isn't expanded beyond the schema's array-of-string type. The schema's titles and enums carry the only meaning, so the description contributes almost nothing to parameter understanding.

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 states a clear operation: enqueue URLs, with a concrete batch cap of 50 and per-item status tracking. This is more specific than the bare tool name and makes the tool's function unambiguous. It doesn't explicitly name sibling tools to differentiate, so it stops short of 5.

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 batch context ('up to 50 URLs', 'enqueue') gives an agent a clear sense of when to choose this over a single-download sibling like abdm_download. However, it doesn't state explicit exclusions or alternatives such as 'for a single URL, use abdm_download'. That leaves usage guidance strong but not fully explicit.

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

abdm_download_hlsA

Download an HLS (.m3u8) streaming video/audio task with segment reassembly. In 'interactive' mode, triggers the desktop confirmation GUI. In 'headless' mode, starts silent background download into allowed sandboxed folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
modeNointeractive
headersNo
filenameNo
queue_idNo
category_idNo
start_queueNo
subdirectoryNo
download_pageNo
speed_limit_bytesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYesMode under which download was created
backendYesWhich backend processed the request
messageNoStatus or error message
acceptedYesWhether the task was accepted by ABDM
protocolNoDownload protocol (http or hls)
download_idNoAssigned task ID if available

TDQS

A3.6/5.0
Behavior4/5

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

The description discloses meaningful behavior beyond the annotations: mode-specific GUI triggering, silent background download, and the sandboxed-folder constraint. It does not mention status polling, error behavior, or output location, but the disclosed side effects are valuable for an agent deciding whether to invoke this tool.

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 purpose, and both sentences contribute useful information. It loses a point for vague phrasing like 'allowed sandboxed folder' and 'streaming video/audio task', which could be more concrete, but it is not bloated or redundant.

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

Completeness2/5

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

With 10 parameters and zero schema-level parameter descriptions, the description covers only purpose and mode behavior. It omits guidance on how parameters like filename, queue_id, speed_limit_bytes, or download_page affect the download, making the tool under-specified for correct invocation in varied use cases.

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

Parameters2/5

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

The schema description coverage is 0%, so the description must compensate for parameter meaning. It explains the 'mode' enum distinction, but the other nine parameters (url, headers, filename, queue_id, category_id, start_queue, subdirectory, download_page, speed_limit_bytes) are left entirely undocumented in both the schema and description.

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 states a specific verb ('Download') and resource ('HLS (.m3u8) streaming video/audio task'), and adds the distinguishing detail 'with segment reassembly'. This clearly differentiates the tool from generic siblings like abdm_download and abdm_download_batch.

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

Usage Guidelines3/5

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

The description gives clear mode-based context: interactive triggers a desktop GUI and headless starts a silent background download. However, it does not explicitly state when to prefer this tool over sibling tools such as abdm_download or abdm_download_batch, leaving some inference to the agent.

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

abdm_get_downloadA
Read-onlyIdempotent

Fetch detailed metadata for a single download task by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
download_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesUnique task identifier
urlNoSource URL
nameNoFile name
folderNoDestination folder
statusYesCurrent task status (e.g. Paused, Downloading, Completed, Error)
queue_idNoAssociated queue ID

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds only that the operation fetches detailed metadata for one task, which is consistent with the annotations but does not disclose additional behavior such as not-found handling or response shape. No contradiction.

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?

One focused sentence with no filler; the core action, scope, and access path are all front-loaded.

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 simple one-parameter read-only lookup with an output schema and strong annotations, the description is nearly sufficient. It could have added a sentence pointing to sibling tools, but nothing needed to invoke the tool correctly is missing.

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%, so the description needed to compensate for parameter documentation. It only echoes 'by ID' and adds no format, source, or example for download_id, leaving the single parameter minimally explained beyond its schema title.

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 specific verb ('Fetch'), a specific resource ('detailed metadata for a single download task') and an access path ('by ID'). It clearly distinguishes itself from list-oriented siblings like abdm_list_downloads.

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 context is implied: use when you already have a download_id and need metadata for one task. However, it does not explicitly state when to prefer this over abdm_check_status or abdm_list_downloads, nor does it state any exclusions.

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

abdm_get_queuesA
Read-onlyIdempotent

List all configured download queues in AB Download Manager.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the behavioral scope that it returns 'all configured' queues, which is not captured by annotations. It does not mention authentication or other operational details, but for a read-only list tool with an output schema this is acceptable.

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?

A single sentence with no filler. The action verb 'List' is front-loaded, and the sentence is minimally sufficient without redundancy.

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 zero-parameter, read-only, idempotent listing operation with a defined output schema, the description fully covers what the tool does. There is no missing information that an agent would need to invoke it correctly.

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

Parameters4/5

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

The tool takes zero parameters and the input schema is an empty object, so the description has no need to explain parameters. The baseline of 4 for a no-parameter tool applies, and no additional semantic clarification is required.

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

Purpose4/5

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

The description clearly states a specific verb ('List') and a specific resource ('download queues'), and the phrase 'all configured' defines scope. It distinguishes itself from siblings like abdm_list_downloads by naming queues rather than downloads, though it does not explicitly reference a sibling.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as abdm_list_downloads or abdm_get_download. It provides no exclusions or context, leaving the agent to infer usage solely from the tool name.

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

abdm_list_downloadsB
Read-onlyIdempotent

List downloads currently tracked by AB Download Manager.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesTotal count of items returned
itemsNoList of downloads

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds only the 'currently tracked' scope, which is mildly useful but does not disclose pagination, ordering, filtering behavior, or return shape. This meets the minimum viable threshold but adds little beyond annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler words. It immediately states the action and resource, making it easy to parse, though this conciseness comes at the cost of omitting parameter and usage guidance.

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

Completeness3/5

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

Given the tool is a simple read-only list operation with strong annotations and an output schema, the description is minimally adequate. However, it does not mention the optional status filter or differentiate from related sibling tools, so the agent must rely on the schema and sibling names to use it fully correctly.

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 never mentions the optional 'status' parameter or how to use it. The parameter's meaning is somewhat inferable from its name and enum values, but the description fails to compensate for the lack of schema documentation, leaving the agent to guess whether filtering is supported and what values mean.

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

Purpose4/5

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

The description clearly identifies a specific verb ('List') and resource ('downloads tracked by AB Download Manager'), so an agent can understand the tool's basic function. However, it does not explicitly differentiate this from siblings like abdm_get_download or abdm_check_status, relying on the tool name rather than the description.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as abdm_get_download for a single download or abdm_check_status for status checks. There are no exclusions, prerequisites, or context signals explaining what makes this the right choice, so the agent has to infer usage from the name.

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

abdm_pauseA
Idempotent

Pause one or more active download tasks by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
download_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNoNumber of tasks affected
actionYesAction name (e.g. pause, resume, remove, pause_all, resume_all)
messageNoDetails or error message
successYesWhether the action succeeded
download_idNoTarget download task ID if single
download_idsNoTarget download task IDs affected

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate a mutating, non-destructive, idempotent operation. The description adds the 'active' qualifier, clarifying that only currently active tasks are intended targets, but it does not disclose behavior for already-paused, completed, or nonexistent tasks. This is acceptable but not deeply informative beyond the annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word contributes: the verb, the scope ('one or more'), the target ('active download tasks'), and the input mechanism ('by ID').

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 simple tool with one parameter, an output schema, and annotations covering idempotency and destructiveness, the description is nearly sufficient. It could be more complete by explicitly directing the agent to sibling tools for pausing all tasks or resuming, but nothing essential to invoking this tool correctly is missing.

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

Parameters4/5

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

Schema coverage is 0%, so the description must carry the parameter meaning. It does so by specifying that download_id refers to one or more active download task IDs, which aligns with the schema's string-or-array type and adds the 'active' constraint. While it doesn't explain how to obtain valid IDs, the simple single-parameter design makes the semantics reasonably clear.

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 action ('Pause'), the resource ('active download tasks'), and the selection mechanism ('by ID'), while also conveying that multiple tasks can be paused at once. This distinguishes it from sibling tools like abdm_pause_all, which pauses all tasks rather than specific IDs.

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

Usage Guidelines3/5

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

The description implies usage: call this when you want to pause specific download tasks identified by ID, rather than all tasks. However, it does not explicitly mention alternatives such as abdm_pause_all for pausing everything or abdm_resume for reversing the action, so guidance relies on inference from the tool name and siblings.

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

abdm_pause_allA
Idempotent

Pause all currently active download tasks across AB Download Manager.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNoNumber of tasks affected
actionYesAction name (e.g. pause, resume, remove, pause_all, resume_all)
messageNoDetails or error message
successYesWhether the action succeeded
download_idNoTarget download task ID if single
download_idsNoTarget download task IDs affected

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already indicate the operation is idempotent, non-destructive, and not read-only. The description adds useful scope context ('currently active') but does not disclose what happens when no active downloads exist or how paused tasks are affected.

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?

A single, concise sentence that is front-loaded with the action and clearly states the target. There is no redundancy or unnecessary detail.

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 zero-parameter global action with output schema and annotations covering idempotency and destructive behavior, the description is complete. An agent can correctly select and invoke this tool without ambiguity.

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

Parameters4/5

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

The tool has zero parameters and the schema coverage is 100%, so there is nothing for the description to document. According to the baseline for zero-parameter tools, this is handled well.

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 uses a specific verb ('pause') and a precise resource scope ('all currently active download tasks across AB Download Manager'). This clearly distinguishes it from sibling tools like abdm_pause (specific task) and abdm_resume_all (opposite action).

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 usage context is implied: the tool is for pausing all active downloads globally. However, the description does not explicitly mention alternatives or state when not to use it, such as when only a single download should be paused via abdm_pause.

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

abdm_removeA
DestructiveIdempotent

Remove/cancel one or more download tasks. File deletion requires explicit policy opt-in (ABDM_MCP_ALLOW_FILE_DELETION=true) and path verification.

ParametersJSON Schema
NameRequiredDescriptionDefault
delete_fileNo
download_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNoNumber of tasks affected
actionYesAction name (e.g. pause, resume, remove, pause_all, resume_all)
messageNoDetails or error message
successYesWhether the action succeeded
download_idNoTarget download task ID if single
download_idsNoTarget download task IDs affected

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish destructiveHint=true and readOnlyHint=false, so the destructive nature is covered. The description adds valuable beyond-annotation context: file deletion only happens with an explicit opt-in (ABDM_MCP_ALLOW_FILE_DELETION=true) and path verification. This helps an agent understand safety constraints and avoid accidental destructive calls.

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?

Two compact sentences deliver the core purpose and a critical safety prerequisite with no filler. The primary action is front-loaded, and the conditional deletion policy is stated immediately after.

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 cancellation tool with a destructive annotation and an output schema, the description is reasonably complete. It covers the main action, supports batch-style input via 'one or more', and discloses the file-deletion policy. It does not describe edge cases like cancellation of already-finished tasks, but annotations and output schema reduce the need for that detail.

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 of explaining parameters. It helps by stating that one or more tasks can be removed, which maps to download_id accepting either a string or array, and it explains the conditional behavior of delete_file through the policy opt-in. This adds meaning beyond the bare schema, though it does not explicitly name the parameters.

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

Purpose5/5

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

States a specific action ('Remove/cancel') on a specific resource ('one or more download tasks') and distinguishes itself from sibling tools like abdm_pause, abdm_resume, and abdm_download. The optional file-deletion behavior is also mentioned, making the tool's scope clear.

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 when to use the tool: when download tasks need to be removed or canceled. It also gives a policy condition for file deletion, but it does not explicitly compare this tool to alternatives such as abdm_pause or abdm_resume, nor state when removal should be preferred over pausing.

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

abdm_resumeA
Idempotent

Resume one or more paused download tasks by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
download_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNoNumber of tasks affected
actionYesAction name (e.g. pause, resume, remove, pause_all, resume_all)
messageNoDetails or error message
successYesWhether the action succeeded
download_idNoTarget download task ID if single
download_idsNoTarget download task IDs affected

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true, readOnlyHint=false, and destructiveHint=false, so the safety profile is covered. The description adds only the state precondition ('paused') and ID targeting, but does not add further context such as error behavior or side effects beyond what the annotations convey.

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?

A single sentence with no wasted words; the action, object, and selection criterion are front-loaded. Every element earns its place.

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

Completeness5/5

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

For a simple parameterized mutation with a single required ID parameter, an output schema, and annotations covering idempotency and destructiveness, the description gives enough context about the target state ('paused') and scope ('one or more ... by ID'). No critical calling information is missing.

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

Parameters3/5

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

Schema description coverage is 0%, but the description's 'one or more ... by ID' partially compensates by indicating that download_id accepts a single task ID or a collection. It does not explain where to obtain IDs or clarify the array/string semantics beyond the schema, so it is adequate but not rich.

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 uses a specific verb ('Resume') and identifies the resource ('one or more paused download tasks') with the selection method ('by ID'). This clearly distinguishes it from siblings like abdm_resume_all, which resumes all tasks, and abdm_pause, which does the opposite.

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

Usage Guidelines4/5

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

It clearly conveys the context for use: resuming specific paused download tasks identified by ID. It does not explicitly list exclusions or name alternatives such as abdm_resume_all, but the 'by ID' scope implies the targeted use case and contrasts with the all-inclusive sibling.

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

abdm_resume_allA
Idempotent

Resume all currently paused download tasks across AB Download Manager.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNoNumber of tasks affected
actionYesAction name (e.g. pause, resume, remove, pause_all, resume_all)
messageNoDetails or error message
successYesWhether the action succeeded
download_idNoTarget download task ID if single
download_idsNoTarget download task IDs affected

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false. The description adds useful context by scoping the action to 'currently paused' tasks and indicating system-wide scope. It does not contradict any annotation.

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 entire description is one precise sentence that names the action, target, and scope without filler or redundancy. Every word earns its place.

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

Completeness5/5

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

With no parameters, an output schema present, and annotations covering idempotency and destructiveness, the description fully covers what an agent needs to select and invoke this tool. No meaningful information is missing.

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

Parameters4/5

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

The tool has zero parameters and an empty schema with 100% coverage, so there is nothing for the description to document. Baseline for zero-parameter tools is 4, and the description adds no unnecessary parameter noise.

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 states a specific verb ('Resume'), a precise resource ('all currently paused download tasks'), and scope ('across AB Download Manager'). It clearly differentiates from the sibling abdm_resume, which handles a single task.

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 context is clear: use this when you want to resume every paused download rather than one specific download. It does not explicitly name abdm_resume as the alternative for single-task resume, but the plural 'all' and 'currently paused' scope provides strong usage direction.

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.

  1. 12 tool updatesv0.2.0
    • First observedabdm_check_status
    • First observedabdm_download
    • First observedabdm_download_batch
    • First observedabdm_download_hls
    • First observedabdm_get_download
    • First observedabdm_get_queues
    • First observedabdm_list_downloads
    • First observedabdm_pause
    • First observedabdm_pause_all
    • First observedabdm_remove
    • First observedabdm_resume
    • First observedabdm_resume_all

TDQS

A3.9/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct action or resource: download submission (HTTP, HLS, batch), task inspection, lifecycle controls (pause/resume/remove), and server status. Single vs. all pause/resume variants are clearly separated by the '_all' suffix.

Naming Consistency4/5

All tools share the 'abdm_' prefix and use snake_case, with mostly clear verb_noun naming. Minor deviations: 'abdm_download' and 'abdm_pause' omit explicit objects while related batch/all variants include suffixes.

Tool Count5/5

12 tools is well-scoped for a download manager MCP server, covering submission, listing, status, and lifecycle actions without unnecessary surface area. Every tool corresponds to a meaningful operation.

Completeness4/5

The download task lifecycle is well covered: create via download/HLS/batch, read via list/get, pause/resume/remove. Queue support is read-only (only get_queues) and there is no explicit update/options editing, which is a minor gap.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI models to manage file downloads with multi-threading, progress monitoring, and task control through standardized MCP interfaces.
    8
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    A download tool for AI agents that wraps aria2 with safety rules and MCP server support, enabling reliable downloads without false positives.
    1
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to safely read and write files in a sandboxed workspace via natural language, with on-demand connection, CVE-hardened path confinement, injection resistance, and full audit logging.
    -