Skip to main content
Unlocks password-protected files, extracts ZIP archives, and unpacks raw email messages. Display name “File Utils”. On by default for new agents.

Authentication and enablement

No integration. Default-on.

Inputs

  • file_url (required): ${VAR_N} of the file.
  • operation (required): unlock, unzip, or unpack_email.
unlock — parameters.password is required. After unlock, the original file is updated in place; keep using the same ${VAR_N}. unzip — extracts supported files (PDF, images, Excel, CSV, PowerPoint, Word, Markdown) from every directory in the archive. Each extracted file gets a new variable. Do not unzip .xlsx / .xls / .docx / .pptx — those are Office formats that happen to be ZIP internally; send them to structured_data_extraction instead. unpack_email — splits a .eml message into task files. A .eml is a MIME envelope, so structured_data_extraction rejects it; this is what makes an uploaded email usable. Produces email-message.md (subject, From/To/Cc, Date, then the text body, falling back to the raw HTML part) plus one file per attachment, each with its own variable. Inline (CID-referenced) parts are included, since senders such as Apple Mail attach real scans inline, and are flagged inline: true so signature logos can be deprioritised. Read email-message.md when the sender’s instructions matter (“book this against PO 8891”). Forwarded messages are already flattened by the parser: a message/rfc822 part is descended into (5 deep, 16 messages per mail) and its attachments are hoisted up, so a forwarded PO PDF arrives as a normal attachment. Only a nested message past those bounds, or one that fails to parse, survives as an opaque .eml attachment — and that is reported in skipped_files, since .eml is not itself an extractable member type.

Output

Unlocked file (same variable), or extracted_files with a filename, file_id, variable and mime_type per member. unpack_email also returns subject, from, body_file and attachment_count. skipped_files / skipped_count appear only when something was skipped.

Limits and side effects

  • Unlock mutates the stored file in place.
  • Unzip and unpack_email create new task files.
  • Both extraction operations cap at 200 files, 50 MB per file, 500 MB per call. Anything over a cap, or outside the extractable member types, is reported in skipped_files with a reason rather than dropped silently.
  • An extracted PDF that is itself password-protected is flagged password_protected, so it can be passed straight to unlock.

Expected errors

  • Missing password on unlock.
  • Wrong password / unsupported lock.
  • Unzip of an Office document (use extraction instead).
  • Bytes that are not a ZIP archive, or not a readable MIME message — the error names the detected type.
  • Unsupported operation.