Skip to main content
Glama

extract_archive

Unpack all or selected archive paths into a new named folder in the background; existing files are preserved and unsafe, encrypted, or link entries are skipped.

Instructions

Extract an archive (all of it, or selected paths) into a new folder named after it, in the background. Existing files are never overwritten; name clashes get a numeric suffix. Returns a job; poll get_job (wait=true) until done, then result_node_id is the new folder. Encrypted, link and unsafe-path entries are skipped. Requires files:upload.

Input Schema

NameRequiredDescriptionDefault
baseNodirectory inside the archive the extraction is relative to; empty for the top level
pathNoabsolute Gopan path of the archive, alternative to node_id
pathsNofull paths inside the archive to extract (files or directories under base); empty extracts everything under base
node_idNoarchive file node UUID
parent_idNofolder to create the output folder in; default is the archive's own folder
parent_pathNofolder path, alternative to parent_id

Output Schema

NameRequiredDescriptionDefault
idYes
urlNo
kindYesfetch_url or extract_archive
titleYesfile name once known, otherwise the link's host; archive name for extraction
statusYesqueued, running, done, failed or canceled
parent_idNotarget folder; omitted means the root
bytes_doneYes
created_atYes
error_codeNowhy it failed; on success GOT_HTML means the server returned a web page instead of a file
files_doneNo
bytes_totalNo
files_totalNo
finished_atNo
error_messageNo
files_skippedNoarchive entries skipped: unsafe paths, links or invalid names
result_node_idNothe downloaded file, or the folder files were extracted into

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only supply destructiveHint=false, and the description adds substantial context beyond that: extraction runs in the background, existing files are never overwritten and clashes get a numeric suffix, and encrypted, link and unsafe-path entries are skipped. The non-destructive claim is consistent with the annotation and is actually explained.

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?

Five tight sentences, each carrying distinct information: what it does, overwrite policy, async job flow, skip rules, and permission requirement. The core action and the polling instruction are front-loaded, and there is no filler.

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 an asynchronous extraction tool with an output schema, the description covers everything an agent needs: the async lifecycle, where the result lands, collision behavior, skipped entry classes, and the auth requirement. Return-value details are correctly left to the output schema.

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 100%, so each of the six parameters is already documented. The description adds framing that paths can be a subset and that the output folder is named after the archive (implying the parent_id default), but offers no additional syntax or format detail beyond the schema.

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

Purpose5/5

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

States a specific verb (extract) and resource (archive), plus scope options (all of it, or selected paths) and the output shape (a new folder named after it). This clearly separates it from siblings like list_archive or prepare_download, which inspect or fetch rather than unpack.

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 concrete follow-up routing: it returns a job, so poll get_job with wait=true until done, then read result_node_id. It also states the required permission (files:upload). It does not explicitly say when to prefer this over inspecting the archive first with list_archive, so it falls short of full alternative coverage.

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