abdm-mcp
Click on "Deploy 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., "@abdm-mcpDownload the large file from https://example.com/data.zip to the downloads folder"
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.
AB Download Manager MCP Server (abdm-mcp)
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-mcpNetwork 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 8000Install with pip
pip install abdm-mcp
python -m abdm_mcpRelated 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.jsonmacOS:
~/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-mcp3. 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-mcpTool Surface & Capabilities
All tools return strongly-typed Pydantic schemas and include explicit MCP Tool Annotations:
Tool Name | Parameters | MCP Annotations | Description |
|
|
| Submits an HTTP/HTTPS download task with multi-threaded acceleration. Fails fast if interactive options clash. |
|
|
| Captures and downloads an HLS (.m3u8) video/audio stream with automatic chunk assembly. |
|
|
| Enqueues up to 50 URLs in a batch with partial success tracking. |
| none |
| Fetches configured download queues from ABDM. |
| none |
| Probes REST reachability, authentication, dynamic port discovery, CLI status, and active capabilities. |
|
|
| Lists current downloads reported by ABDM. |
|
|
| Returns status and metadata for a single download task by ID. |
|
|
| Pauses one or more active download tasks by ID. |
|
|
| Resumes one or more paused download tasks by ID. |
| none |
| Pauses all currently active download tasks across ABDM. |
| none |
| Resumes all currently paused download tasks across ABDM. |
|
|
| 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-mcpautomatically launches the GUI viaabdm 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-mcpwithout 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:
Path Sandboxing: By default, headless downloads are strictly confined to
~/Downloads/ABDM. Path traversal escapes (../) and absolute paths outside allowed roots are rejected.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).Filename Sanitization: Rejects slashes, drive prefixes, control characters, and reserved Windows device names (
CON,PRN,AUX,NUL, etc.).Header Protection: Blocks sensitive headers (
Cookie,Authorization,Proxy-Authorization,Host) by default to prevent credential leakage.Safe Subprocess Execution: The CLI backend strictly uses
asyncio.create_subprocess_exec(nevershell=True) with bounded streaming readers (1MB limit) and hard execution timeouts.
Environment Variables
Variable | Default | Description |
|
| Custom or portable configuration directory path. |
|
| Default port of the ABDM local integration server (overridden by dynamic discovery). |
| None | Optional authentication key configured in ABDM. |
| Auto-detected | Explicit path to |
|
| Automatically wakes the ABDM desktop process on demand if offline. |
|
| Queries |
|
| Default mode: |
|
| Comma-separated list of allowed download directories. |
|
| Set to |
|
| Set to |
|
| Set to |
|
| Maximum URLs accepted in a single |
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 toolsabdm_check_statusARead-onlyIdempotent
Inspect reachability, authentication, port discovery, and capabilities.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| port | Yes | Resolved active port |
| cli_version | No | CLI version if detected |
| capabilities | No | List of supported operations |
| authenticated | No | Whether authentication was verified |
| cli_available | Yes | Whether the ABDM CLI binary is present and operational |
| rest_available | Yes | Whether the local REST integration port is reachable |
| shared_state_verified | Yes | Whether REST and CLI have been verified to share state |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| mode | No | interactive | |
| headers | No | ||
| filename | No | ||
| queue_id | No | ||
| category_id | No | ||
| start_queue | No | ||
| subdirectory | No | ||
| download_page | No | ||
| speed_limit_bytes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | Mode under which download was created |
| backend | Yes | Which backend processed the request |
| message | No | Status or error message |
| accepted | Yes | Whether the task was accepted by ABDM |
| protocol | No | Download protocol (http or hls) |
| download_id | No | Assigned task ID if available |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | interactive | |
| urls | Yes | ||
| queue_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | Per-URL results |
| failed | Yes | Number of failed submissions |
| submitted | Yes | Number of successfully submitted URLs |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| mode | No | interactive | |
| headers | No | ||
| filename | No | ||
| queue_id | No | ||
| category_id | No | ||
| start_queue | No | ||
| subdirectory | No | ||
| download_page | No | ||
| speed_limit_bytes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | Mode under which download was created |
| backend | Yes | Which backend processed the request |
| message | No | Status or error message |
| accepted | Yes | Whether the task was accepted by ABDM |
| protocol | No | Download protocol (http or hls) |
| download_id | No | Assigned task ID if available |
TDQS
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.
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.
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.
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.
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.
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_downloadARead-onlyIdempotent
Fetch detailed metadata for a single download task by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| download_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Unique task identifier |
| url | No | Source URL |
| name | No | File name |
| folder | No | Destination folder |
| status | Yes | Current task status (e.g. Paused, Downloading, Completed, Error) |
| queue_id | No | Associated queue ID |
TDQS
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.
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.
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.
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.
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.
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_queuesARead-onlyIdempotent
List all configured download queues in AB Download Manager.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_downloadsBRead-onlyIdempotent
List downloads currently tracked by AB Download Manager.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Total count of items returned |
| items | No | List of downloads |
TDQS
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.
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.
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.
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.
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.
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_pauseAIdempotent
Pause one or more active download tasks by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| download_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | Number of tasks affected |
| action | Yes | Action name (e.g. pause, resume, remove, pause_all, resume_all) |
| message | No | Details or error message |
| success | Yes | Whether the action succeeded |
| download_id | No | Target download task ID if single |
| download_ids | No | Target download task IDs affected |
TDQS
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.
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.
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.
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.
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.
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_allAIdempotent
Pause all currently active download tasks across AB Download Manager.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | Number of tasks affected |
| action | Yes | Action name (e.g. pause, resume, remove, pause_all, resume_all) |
| message | No | Details or error message |
| success | Yes | Whether the action succeeded |
| download_id | No | Target download task ID if single |
| download_ids | No | Target download task IDs affected |
TDQS
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.
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.
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.
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.
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.
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_removeADestructiveIdempotent
Remove/cancel one or more download tasks. File deletion requires explicit policy opt-in (ABDM_MCP_ALLOW_FILE_DELETION=true) and path verification.
| Name | Required | Description | Default |
|---|---|---|---|
| delete_file | No | ||
| download_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | Number of tasks affected |
| action | Yes | Action name (e.g. pause, resume, remove, pause_all, resume_all) |
| message | No | Details or error message |
| success | Yes | Whether the action succeeded |
| download_id | No | Target download task ID if single |
| download_ids | No | Target download task IDs affected |
TDQS
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.
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.
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.
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.
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.
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_resumeAIdempotent
Resume one or more paused download tasks by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| download_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | Number of tasks affected |
| action | Yes | Action name (e.g. pause, resume, remove, pause_all, resume_all) |
| message | No | Details or error message |
| success | Yes | Whether the action succeeded |
| download_id | No | Target download task ID if single |
| download_ids | No | Target download task IDs affected |
TDQS
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.
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.
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.
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.
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.
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_allAIdempotent
Resume all currently paused download tasks across AB Download Manager.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | Number of tasks affected |
| action | Yes | Action name (e.g. pause, resume, remove, pause_all, resume_all) |
| message | No | Details or error message |
| success | Yes | Whether the action succeeded |
| download_id | No | Target download task ID if single |
| download_ids | No | Target download task IDs affected |
TDQS
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.
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.
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.
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.
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.
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.
12 tool updates
v0.2.0- First observed
abdm_check_status - First observed
abdm_download - First observed
abdm_download_batch - First observed
abdm_download_hls - First observed
abdm_get_download - First observed
abdm_get_queues - First observed
abdm_list_downloads - First observed
abdm_pause - First observed
abdm_pause_all - First observed
abdm_remove - First observed
abdm_resume - First observed
abdm_resume_all
TDQS
Scored across 12 tools
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.
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.
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.
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
Related MCP Connectors
Governed app access for AI agents: 1,000+ apps & 12,000+ tools via Code Mode MCP.
Security gateway for AI agents: policy, approval, and audited execution, no secrets shared.
Protects AI coding agents from installing malicious open source packages. Every npm and PyPI package is checked against SafeDep’s real-time threat intelligence before installation.
Prompt-injection scanning and safe webpage fetching for AI agents reading untrusted content.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI models to manage file downloads with multi-threading, progress monitoring, and task control through standardized MCP interfaces.8-
- AlicenseNot gradedqualityAmaintenanceA download tool for AI agents that wraps aria2 with safety rules and MCP server support, enabling reliable downloads without false positives.1MIT
- FlicenseNot gradedqualityBmaintenanceEnables 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.-
- AlicenseNot gradedqualityBmaintenanceEnables controlled delegation of tasks to local coding-agent CLIs and the Manus API, with strict sandboxing, approval tracking, and remote-egress safeguards.14 npmMIT