download_from_url
Downloads a file directly from a public or authenticated HTTP/HTTPS URL and saves it to the workspace.
Search the web, pull files into a workspace, and hand out a short-lived public link to one of them — from a gateway that guards its own boundary.
LABSCO SUMMARY
The link opens a public tunnel to that file in your workspace, and anyone holding it can fetch the file until it expires or three downloads have happened — the publisher says so in its own warning. That is the feature and the exposure in the same sentence, so it is worth deciding deliberately which files ever get one. Everything else is bounded: downloads land only inside the workspace under MIME and size limits, and each path is checked against the boundary before it resolves. One operational note — a link dies with the process serving it, which is why the Docker setup runs Ngrok alongside rather than inside the tool.
An MCP file-and-search gateway built around a single workspace directory. It searches the live web across two providers, downloads files into the workspace, saves files an agent generated, reads them back inline, and can publish one through an Ngrok tunnel as a download link that stops working after three attempts or expiry. Every file request is verified against the workspace boundary first.
Node, installed globally with npm install -g openclaw-syncralis or as an OpenClaw plugin. Three services on their free tiers: Ngrok for the public tunnel — claiming a static domain is worth it so the URL stops changing — plus TAVILY_API_KEY and BRAVE_API_KEY for the two search providers. Leave WORKSPACE_DIR empty and files land in ~/.openclaw/workspace; set an absolute path only for a container volume. Also configured: PUBLIC_TUNNEL_URL, FILE_SERVER_HOST (127.0.0.1 natively, 0.0.0.0 in Docker), NGROK_API_PORT and a URL_SIGNING_SECRET of your own. Under Docker the publisher runs Ngrok as a separate service so links survive the MCP process exiting.
One command plus a key — npm install -g openclaw-syncralis, then supply credentials
USE CASES
Search the live web with a second provider standing by, so a rate limit on one side does not turn into no answer.
Download it into the workspace, then read a specific page range — or let it find the contents page first when you only know the topic.
Write the generated image, PDF or document straight into the workspace as base64, with no upload step and no external URL in between.
Generate a download link for one workspace file and open it elsewhere. It survives three downloads, so treat the link itself as the secret.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
download_from_urlDownloads a file directly from a public or authenticated HTTP/HTTPS URL and saves it to the workspace.
save_shared_fileSaves a file provided directly by the AI agent into the workspace. Use this to save generated images, PDFs, DOCX, or text files without needing an external URL download. Binary files MUST be provided as base64 encoded strings.
share_filesReads or shares workspace files. Three actions are available: 'read' — return file contents inline. For PDFs: (1) If the user specifies a page number, read that range directly using pageStart/pageEnd. (2) If searching for a topic, first read pages 1-10 to find the Table of Contents. If no TOC is found in pages 1-10, extend to pages 1-20, then check the final 10 pages as some PDFs place the index at the back. (3) If the PDF has no TOC, scan in 15-page chunks from the beginning until the topic is located. (4) Always read in chunks of 20 pages or fewer. Never request the full PDF in a single call. (5) If a section appears to continue beyond the chunk boundary, read the next chunk to complete it. (6) For PDFs under 15 pages total, reading the entire document in one call is acceptable. 'preview' — REQUIRED first step before sharing. Returns file metadata (name, size, type, modified) and a short-lived confirmationToken. Present ALL metadata to the user and ask for explicit approval before proceeding. Never skip this step. 'download' — generate a public download link. Requires the confirmationToken returned by a prior 'preview' call for the same file. A link CANNOT be generated without a valid token.
web_searchSearches the live internet for accurate, up-to-date information. Use for current events.
BEFORE YOU INSTALL
4 tools when we connected. download_from_url and save_shared_file write into your workspace, and share_files publishes from it. Every read and download is capped at 50MB, and each generated link allows 3 attempts by default (MAX_DOWNLOAD_ATTEMPTS).
CONTEXT COST
Rated by the size of the 4 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npm install -g openclaw-syncralis{
"mcp": {
"servers": {
"syncralis": {
"command": "node",
"args": [
"/home/node/.openclaw/extensions/openclaw-syncralis/server.js"
],
"env": {
"NODE_ENV": "production",
"FILE_SERVER_HOST": "127.0.0.1",
"WORKSPACE_DIR": "",
"PUBLIC_TUNNEL_URL": "https://<YOUR_NGROK_URL>.ngrok-free.app",
"NGROK_API_PORT": 4040,
"TAVILY_API_KEY": "<YOUR_TAVILY_API_KEY>",
"BRAVE_API_KEY": "<YOUR_BRAVE_API_KEY>",
"URL_SIGNING_SECRET": "<YOUR_URL_SIGNING_SECRET>"
}
}
}
},
"plugins": {
"entries": {
"openclaw-syncralis": {
"enabled": true
}
}
}
}{
"mcp": {
"servers": {
"syncralis": {
"command": "node",
"args": [
"/home/node/.openclaw/extensions/openclaw-syncralis/server.js"
],
"env": {
"NODE_ENV": "production",
"FILE_SERVER_HOST": "0.0.0.0",
"WORKSPACE_DIR": "",
"PUBLIC_TUNNEL_URL": "https://<YOUR_STATIC_DOMAIN>.ngrok-free.app",
"NGROK_API_PORT": 4040,
"TAVILY_API_KEY": "<YOUR_TAVILY_API_KEY>",
"BRAVE_API_KEY": "<YOUR_BRAVE_API_KEY>",
"URL_SIGNING_SECRET": "<YOUR_URL_SIGNING_SECRET>"
}
}
}
},
"plugins": {
"entries": {
"openclaw-syncralis": {
"enabled": true
}
}
}
}