> ## Documentation Index
> Fetch the complete documentation index at: https://agents.nanonets.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Slack Download File

> Downloads a Slack file attachment via its url_private and registers it as a task file.

Downloads the bytes behind a Slack file attachment's `url_private` link and registers the result as a task file. Off by default.

`slack_get_message_thread` and `slack_read_messages` surface a message's `files[]` array (`id`, `name`, `mimetype`, `size`, `url_private`) but never the file's content. Use this tool whenever a Slack message has an attachment you actually need to read — a screenshot, PDF, spreadsheet, etc. — then feed the result's `storage_url` to `structured_data_extraction` or `document_classification`.

## Authentication and enablement

Requires a workspace Slack integration (`mcp:slack`) with the **`files:read`** bot scope. The bot token is injected automatically. Enable the tool and bind Slack.

A workspace that connected Slack **before** `files:read` was added to the app will get a clear "reconnect the Slack integration" error on first use — the fix is to reconnect from the integration settings so the new scope is granted.

## Inputs

* `url_private` (required): the file's `url_private`, exactly as returned in a message's `files[]` array by `slack_get_message_thread` or `slack_read_messages`. Must be an `https://` link on a Slack-hosted domain (`slack.com`, `slack-edge.com`, or `slack-files.com`).
* `filename_hint` (optional): overrides the filename otherwise derived from the response's `Content-Disposition` header or the URL path.

## Output

A structured result with `file_id`, `file_name`, `storage_url` (pass this to a data-extraction tool), `mime_type`, and `file_size`. Storage goes through `FileStorageService.UploadFile`, so the filename is sanitized into a tenant-scoped key, the size cap is enforced, and an S3 audit event is emitted. A `files` row is registered so the result is visible like any other task file.

## Limits and side effects

* Files larger than 50 MB are rejected.
* An empty downloaded body is treated as an error rather than stored.
* Read-only against Slack — no message or file state is modified.

## Expected errors

* Missing Slack bot token (integration not connected).
* `url_private` missing, malformed, or not a Slack-hosted URL.
* HTTP 403 from Slack — almost always a missing `files:read` scope; the error message says to reconnect.
* File storage unavailable, or no task context (the tool must run inside a task).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.