Skip to main content
Glama

content_load_file

Loads a server-local file into a specified Firefox tab for upload/import without submitting it, returning a file_id and metadata for later script use.

Instructions

Load a server-local file for website uploads/imports; does not submit it.

Waits for downloading to finish, then returns JSON with file_id and metadata. In the SAME tab, use content_execute_script or a predefined script: const file = globalThis.foxmcpFiles.get(file_id); For file inputs, use cloneInto(file, window), the page's window.wrappedJSObject.DataTransfer, and input/change events. Return metadata, not the File. Release: globalThis.foxmcpFiles.delete(file_id). Handle expires five minutes after loading or on navigation; assigned inputs remain valid. Download timeout: 110s. Private tabs unsupported.

profile_id is required: obtain it from profiles_list. All object IDs are local to that profile; never reuse them in another profile.

Input Schema

NameRequiredDescriptionDefault
pathYesRegular file on the server's machine; only its basename reaches the tab.
tab_idYesTarget tab ID.
mime_typeNoOptional MIME override; otherwise inferred from the filename, falling back to application/octet-stream.
profile_idYes

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.6.0

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so thoroughly: it waits for downloading to finish, returns JSON with file_id and metadata, sets a five-minute/navigation-bound handle lifetime, notes that assigned inputs remain valid, and documents a 110s download timeout.

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?

Despite its length, the description is front-loaded and dense with actionable detail. Every paragraph earns its place by covering loading behavior, script usage, input handling, cleanup, expiration, timeout, and profile scoping.

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

Completeness5/5

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

For a complex file-loading tool with no annotations, the description is complete enough to call correctly: it covers return shape, lifecycle, timeout, unsupported environments, required profile context, and the exact browser-side usage pattern.

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 75%, and the description adds important semantics for profile_id by stating it is required and must come from profiles_list. It also warns that all object IDs are profile-local, which is not captured in the schema. Remaining parameters are largely covered by the schema itself.

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 and resource: 'Load a server-local file for website uploads/imports.' It immediately clarifies the scope with 'does not submit it,' making the tool distinct from the follow-up script execution tools.

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

Usage Guidelines5/5

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

It clearly states when to use it, what it does not do, and how to proceed afterward with content_execute_script or a predefined script in the same tab. It also names constraints such as private tabs being unsupported and profile_id being required from profiles_list.

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