Skip to main content
Glama

Yungle for developers

Send large files from your terminal, your scripts and your AI assistant. Private, sustainable file transfer: a WeTransfer alternative with a CLI, an MCP server, typed SDKs and webhooks.

npm: yungle-cli npm: yungle-mcp npm: yungle-client CI MIT

Website · Docs · API reference · CLI · MCP · TypeScript · Python

npm install -g yungle-cli
yungle login                  # opens your browser, once
yungle send ./render.mov      # uploads resumably, prints the link

Want Yungle to email the link for you? Sign in with an API key (yungle login --key) and add --to client@example.com. A browser sign-in makes links but never emails anyone, so a phished sign-in code can't be used to mail strangers.

What's in here

Install

What it's for

CLI

npm i -g yungle-clibrew install heindewilde/yungle/yungle

Send, receive and sync files from a terminal or CI — both ways, folders kept, checksums verified. Resumes after a dropped connection or a closed lid

MCP server

In Claude's directoryhttps://yungle.co/mcp

Connect Claude, Cursor or any MCP client with one sign-in: ask what arrived, share big files (Yungle can fetch them from a URL), download what you were sent, approve every send

TypeScript SDK

npm i yungle-client

The whole API, typed and dependency-free, with resumable uploads from any Blob. Node, Bun, Deno, edge runtimes

Python SDK

pip install yungle

The API from Python, with a one-call send() that handles the upload

GitHub Action

uses: heindewilde/yungle-send-action@v1

Send build artefacts to a client from CI and get the link back as an output

Examples

GitHub Actions, nightly reports, and more at docs.yungle.co/guides/send-from-ci

All of it talks to the same public REST API (OpenAPI 3.1), which CI checks these clients against on every change.

Related MCP server: reMarkable MCP Server

The CLI

Built to be pleasant for a person and predictable for a script. Pretty at a terminal, just the link when piped, JSON with --json.

yungle send ~/Shoot --to anna@studio.nl --message "Final selects"   # send a folder
yungle send dist/ --json | jq -r .url                               # in a script
yungle get https://yungle.co/t/emerald-palm-a5mt                    # download, no account needed
yungle send --from-url "https://bucket.s3.eu-central-1.amazonaws.com/render.mov?…"   # Yungle fetches it
yungle pull --collection 01J8Z3M9Q0W4                               # your collection, to disk
yungle status                                                       # who downloaded what
yungle watch ~/Renders --collection 01J8Z3M9Q0W4                    # upload new files as they land
yungle webhooks listen --forward-to http://localhost:8080/hooks     # test webhooks locally
  • Resumable, big uploads. Interrupt yungle send, run it again, and it continues from the last committed part instead of starting over.

  • Guided when you leave something out. yungle send on its own asks what to send and to whom. Never in CI, never with --json or --yes: a script can't hang on a question.

  • Errors tell you the fix. Every failure ends with the one command that gets you unstuck, and a typo gets a did you mean.

  • Tab completion for zsh, bash and fish: yungle completion zsh.

Full reference: apps/cli · docs.yungle.co/cli

Connect your AI assistant

In Claude: add Yungle from Claude's connector directory and sign in.

Anywhere else (Cursor, VS Code, any MCP client): add Yungle as a remote MCP server and sign in once. No key to copy.

https://yungle.co/mcp

Then ask things like "Did Anna download the final set?", "Which deliveries expire this week?" "Share these three files with the client.", "Send the client the render in our S3 bucket." or "What's in the link Anna sent me?" A chat cannot carry a 40 GB file, so the assistant doesn't: Yungle fetches it from where it already is, or the assistant runs a one-file npx yungle-cli put command in its shell. The assistant prepares; you approve every send before an email leaves. There is no tool that deletes, revokes or invites, and everything the server returns is labelled as untrusted data, because a filename can carry a prompt injection.

Prefer a local server with an API key? yungle mcp install writes the config for Claude Desktop, Claude Code, Cursor or Windsurf. Details: packages/mcp-server.

The SDKs

import { YungleClient } from 'yungle-client';

const yungle = new YungleClient({ apiKey: process.env.YUNGLE_API_KEY! });
for await (const t of yungle.allTransfers()) console.log(t.title, t.downloadCount);
from yungle import Yungle

sent = Yungle().send(["render.mov"], to=["client@example.com"], message="Final cut")
print(sent["url"])

Both retry what is safe to retry, put an Idempotency-Key on every POST so a retry never makes a second copy, follow cursor pagination for you, and verify webhook signatures.

Webhooks

Get told instead of polling: transfer.ready, transfer.downloaded, transfer.expiring, transfer.expired, and on paid plans collection.file_uploaded. Each delivery is signed with HMAC-SHA256 and retried with backoff. No public URL? Leave it out and pull the events instead.

import { verifyWebhook } from 'yungle-client';
const ok = await verifyWebhook(rawBody, req.headers['yungle-signature'], process.env.YUNGLE_WEBHOOK_SECRET!);

Plans and limits

Every account can use the API, the CLI and the MCP server, the free plan included: transfers up to 10 GB, contacts, webhooks, and downloading any link. Collections and files that never expire come with a paid plan. The first 10 GB of API uploads each month are free, then €0.02/GB from prepaid credit. Pricing

Why Yungle

  • In Europe, run by a European company. Your files are stored and served from EU infrastructure.

  • Always encrypted. Every file gets its own key, and transfers can be end-to-end encrypted in the browser when you need it.

  • Sustainable. Renewable hydropower, in a data centre with a PUE of 1.13. What that does and doesn't mean.

Not reachable from here: your vault and end-to-end encrypted transfers. Their keys are derived in your browser and never sent to Yungle, so no API can read them. See what the API can't do.

Contributing

pnpm install
pnpm typecheck && pnpm lint && pnpm test && pnpm build
pnpm contract   # check the clients (operations and types) against the live OpenAPI spec

This repository is where the clients are developed; the Yungle service itself is not open source. Issues and pull requests are welcome, see CONTRIBUTING.md. Security reports go through security.txt.

MIT

Available Tools

14 tools
download_filesDownload files to this computerA
Idempotent
Inspect

Save the files of a Yungle link, or of one of your own transfers or collections, into a folder on this machine — resumably, keeping their folder structure. Files land in a new subfolder of directory; nothing outside it is written, and files already there at full size are skipped. Returns the saved paths.

Inputs: directory (required), url, password, transferId, +1 more.

get_accountAccount and storageA
Read-only
Inspect

Answers: how much storage am I using? how much is left? what plan am I on? what can this connection do? Returns the workspace, its plan and quota, and the key's permissions.

Inputs: no named parameters.

get_collectionCollection detailB
Read-only
Inspect

Answers: what is the link for this collection? how much is in it? when does it expire? Returns one collection with its secret share link, file count, total size and expiry.

Inputs: id (required).

get_transferTransfer detailA
Read-only
Inspect

Answers: what is in this transfer? was it delivered? has a specific recipient downloaded it? is it safe to share? Returns the files with their malware-scan verdicts, plus per-recipient delivery and download status for one transfer id.

Inputs: id (required).

get_transfer_downloadsDownload receiptsA
Read-only
Inspect

Answers: did the client download it? when? how many times? Returns download events with timestamps and per-recipient status. One visit can fetch several files: events that share a sessionId belong to the same visit.

Inputs: id (required).

get_upload_requestUpload request detailA
Read-only
Inspect

Answers: who has uploaded through this link, when, and how much? Returns the request and its submissions, newest first, with the name, email and note each uploader typed.

Inputs: id (required).

list_collection_filesFiles in a collectionA
Read-only
Inspect

Answers: what files are in this collection? what is in this folder? are the raws uploaded yet? Returns filenames, sizes and types. Omit folderId for every file; pass "root" for the top level only, or a folder id. Filenames only — never file contents.

Inputs: id (required), folderId.

list_collectionsList collectionsA
Read-only
Inspect

Answers: what collections do I have? which are empty? how big is each one? Returns collections with file counts, sizes and when each was last touched. A collection is a durable space clients are invited into, as opposed to a one-off transfer. Never includes the vault, which is unreadable to this server by design.

Inputs: no named parameters.

list_contactsAddress bookA
Read-only
Inspect

Answers: what is this client's email address? who do I have saved? Returns the workspace address book. A contact grants no access on its own — it is a convenience, not a permission.

Inputs: no named parameters.

list_foldersFolders in a collectionA
Read-only
Inspect

Answers: how is this collection organised? what folders exist? Returns the folder tree. Ordered by depth, then path (not a pre-order traversal). Each folder carries its parentId and its full path.

Inputs: id (required).

list_guestsGuests on a collectionA
Read-only
Inspect

Answers: who has access to this collection? who did I invite? has someone accepted? Returns the invited guests and their status. Guests are not workspace members — they can view and download this one collection and nothing else.

Inputs: id (required).

list_transfersList transfersA
Read-only
Inspect

Answers: what have I sent recently? what is expiring soon? which deliveries has nobody picked up? who did I send that to? Returns recent transfers with size, recipients, download count, expiry date and share link.

Inputs: no named parameters.

list_upload_requestsUpload requestsA
Read-only
Inspect

Answers: which upload links do I have out? has anyone sent files through them? Returns each public upload page that feeds a collection, with its link, status and how much has arrived.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 14 tools

    Disambiguation5/5

    Each tool targets a distinct object or action: transfers (list/get/downloads), collections (list/get/files/folders), guests, contacts, upload requests, and the link-resolution pair. The only near-overlap, get_download_links vs download_files, is cleanly separated by output (signed URLs vs files on disk) and the descriptions make that explicit.

    Naming Consistency5/5

    Every tool follows a clean snake_case verb_noun pattern (list_*, get_*, download_files). The convention is uniform and predictable across all 14 tools.

    Tool Count5/5

    14 tools is well within the ideal 3-15 range and each one maps to a distinct resource or operation in the file-transfer domain. Nothing feels padded or redundant.

    Completeness4/5

    The read/inspection and download surface is thorough, covering accounts, transfers, collections, folders, guests, contacts, upload requests and link resolution. However, the surface is entirely read-only: no tools to create transfers/collections, invite guests, add contacts, or manage upload requests, so the write lifecycle is absent (possibly by design).

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants read-only access to Sprinklr data via MCP, allowing querying reports, searching cases, and calling Sprinklr API endpoints.
      10 npm
      ISC
    • A
      license
      A
      quality
      C
      maintenance
      Provides read-only access to finished meeting transcripts for AI assistants like Claude Code or Codex, enabling them to answer questions or draft summaries based on the transcriptions.
      4
      3
      Apache 2.0
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables read-only file-management operations from AI assistants, including health checks, connection and folder listings, search, share-link resolution, metadata retrieval, and on-demand document reading.
      MIT