Skip to main content
Glama

Set the download directory

browser_set_download_dir
Destructive

Set where Firefox saves downloads by configuring an absolute directory through browser preferences; BiDi cannot set download behavior directly. Pass the path with forward slashes.

Instructions

Point Firefox at a download directory (privileged context) by writing browser.download.folderList=2, browser.download.dir and browser.download.useDownloadDir=true. BiDi cannot configure downloads itself (browsingContext.setDownloadBehavior is not implemented), so the preferences are the supported route. Send the path with FORWARD slashes: single backslashes inside a JSON string are invalid escapes (D:DSH... fails on D), the request is then dropped before reaching the server, and it looks like the tool hung. Use browser_list_downloads to see what landed there.

Input Schema

NameRequiredDescriptionDefault
pathYesAbsolute directory to download into

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false / destructiveHint=true, and the description adds real context beyond that: it runs in a privileged context and touches specific prefs. The forward-slash warning with a concrete failure mode (invalid JSON escape, request dropped before reaching the server, appearing to hang) is exactly the kind of non-obvious behavior an agent needs. It does not address what 'destructive' means here or whether the change persists across restarts.

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?

Front-loaded with the action, then rationale, then the path-format hazard, then the follow-up tool — no filler sentences. The enumeration of all three pref keys is mildly implementation-heavy, but it is short enough to be worth the debugging value.

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 one fully documented parameter, no output schema, and annotations already covering the safety profile, the description supplies everything an agent needs: purpose, privileged-context caveat, exact input format gotcha, and the tool to check results. Nothing material is missing for correct invocation.

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

Parameters5/5

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

Schema coverage is already 100% ('Absolute directory to download into'), so baseline would be 3, but the description adds the critical, non-obvious format constraint: forward slashes only, because single backslashes inside a JSON string are invalid escapes (D:DSH... fails on D). That prevents a silent failure the schema alone would not.

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 concrete verb and resource ('Point Firefox at a download directory') plus the mechanism (three about:config prefs). It is unmistakably distinct from the sibling read tools (browser_list_downloads) and adjacent download tools, so an agent can pick it without opening the schema.

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?

Gives a clear when-to-use rationale: BiDi cannot configure downloads because browsingContext.setDownloadBehavior is unimplemented, so preferences are the supported route. It also routes to browser_list_downloads for verification, but does not contrast with browser_set_download_state, browser_download_manage, or browser_download_add, which an agent might plausibly confuse with this.

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

Deploy Server

Other Tools