About upres-cli
upres-cli is the CLI and SDK for upres.ai, submitting image, video, and speech restoration jobs. Its MCP interface also supports model and credit queries, job submission, and status checks.
Key features
- 01Upscale and restore images
- 02Upscale and process video
- 03Denoise speech
- 04Batch-process images
- 05Provide Node.js and Python SDKs
- 06Query models, credits, and job status
Use cases
- 01Batch-upscale product images
- 02Restore scanned or old photos
- 03Process AI-generated video
- 04Clean up speech audio
MCP support
Provides MCP tools to list models, check credits, submit image and video upscaling jobs, enhance audio, and retrieve job status. It can be configured as an MCP server through the CLI.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEupres-cli
Official CLI + SDK for upres.ai — image, video, and speech restoration. One API, 14 public aliases, up to 8K output.
$ upres upscale photo.jpg --model flare --scale 4
Submitting job... model=flare
Job created: 550e8400-e29b-41d4-a716-446655440000 (status: pending)
Waiting for result.......
Downloading to photo_upscaled.jpg... done.
Result: photo_upscaled.jpg
Why we built this
- Topaz is $200/yr, desktop-only, no API, no automation
- Upscayl is great for one-offs but can't handle bulk exports or CI pipelines
- Every other SaaS upscaler either watermarks your output, caps resolution at 2K, or charges per image with no monthly plan
upres.ai gives you a clean REST API, 14 public aliases, batch processing, and predictable pricing starting at $9/mo on the Creator launch deal.
Quickstart
Node.js
npx upres-cli upscale photo.jpg
Or install globally:
npm install -g upres-cli
upres upscale photo.jpg --model lumen --scale 8 --output photo_8k.jpg
Python
pip install upres-ai
upres upscale photo.jpg --model flare --scale 4
Authentication
- Sign up at upres.ai (free — 5 upscales/month)
- Go to upres.ai/account/api-keys
- Generate a key — it's shown once
export UPRES_API_KEY=upres_yourkey
Or save permanently:
mkdir -p ~/.config/upres
echo '{"apiKey":"upres_yourkey"}' > ~/.config/upres/config.json
Key resolution order: --api-key flag → UPRES_API_KEY env var → ~/.config/upres/config.json
Commands
# Upscale a single image (local file or URL)
upres upscale photo.jpg --model flare --scale 4
upres upscale photo.jpg --model lumen --scale 8 --output out.jpg
upres upscale https://example.com/photo.jpg --model prism
# Upscale video (AI-generated video from Sora, Kling, Runway etc.)
upres upscale clip.mp4 --model motion --scale 4
# Batch upscale a folder
upres batch ./photos/ --model flare --output ./upscaled/ --concurrency 5
# List available models
upres models
# List recent jobs
upres jobs --limit 20 --status completed
# Account / quota info
upres account
Node.js SDK
import { UpresClient } from "upres-cli";
const client = new UpresClient(); // reads UPRES_API_KEY from env
// Upscale a local file
const job = await client.createJobFromFile("photo.jpg", {
model: "flare",
scale: 4,
});
// Wait for completion
const completed = await client.waitForJob(job.id);
// Download result
await client.downloadResult(completed, "photo_4k.jpg");
console.log("Done:", completed.result_url);
Files over 50 MB are automatically uploaded via TUS resumable protocol.
Python SDK
from upres import UpresClient
with UpresClient() as client: # reads UPRES_API_KEY from env
job = client.create_job_from_file(
"photo.jpg",
model="flare",
scale=4,
)
completed = client.wait_for_job(job["id"])
client.download_result(completed, "photo_4k.jpg")
print("Done:", completed["result_url"])
The Python SDK uses httpx — async-ready, no heavy dependencies.
Examples
| Example | What it does |
|---|---|
| batch-upscale-folder.js | Upscale all images in a folder with configurable concurrency |
| restore-photo-folder.py | Restore old/scanned photos with Lumen |
| ecommerce-pipeline.js | Product image pipeline: raw shots → 4K → publish-ready |
| lightroom-export-hook.md | Auto-upscale Lightroom exports via post-processing hook |
| figma-plugin-stub.md | Figma plugin integration guide |
Models
14 public aliases across image, video, and speech. Each one tells you up front whether it invents detail or leaves your file alone. Aliases that do not enlarge ignore --scale.
| Alias | Kind | Best for |
|---|---|---|
flare | Image | Everyday photos, fastest default |
prism | Image | Text, logos, product shots — keeps edges true |
lumen | Image | Maximum detail recovery for print, up to 8x |
mirage | Image | Invents new detail — art and hero images |
hush | Image | Faithful denoise, same size as the source |
keen | Image | Deblur and sharpen, same size |
visage | Image | Faces only, does not enlarge |
atelier | Image | Hush, Visage if a portrait, then Lumen |
motion | Video | Fast 4K finish for AI video |
motion-x | Video | Cinema-grade, for film and commercials |
still | Video | Temporal denoise, resolution stays put |
cadence | Video | Frame interpolation, does not enlarge |
atelier-x | Video | Still, then Motion X |
voice | Speech | Speech denoise to 48 kHz. Not for music |
Full model catalogue: upres.ai/models · Live spec: api.upres.ai/v1/openapi.json
Pricing
| Plan | Price | Includes | API | Watermark |
|---|---|---|---|---|
| Free | $0 | 5 upscales/mo | — | Yes |
| Creator | $9/mo | 50 stills + 20 min 4K video/mo | — | No |
| Studio | $39/mo | 250 stills + 90 min 4K video/mo | Yes | No |
Studio tier unlocks the full API, batch processing, and no output watermark.
Compare plans → · vs. Topaz → · vs. Upscayl →
MCP (Claude, Cursor, Hermes)
claude mcp add upres -- npx -y github:auroracapital/upres-cli mcp
Or in claude_desktop_config.json / Cursor:
{
"mcpServers": {
"upres": {
"command": "npx",
"args": ["-y", "github:auroracapital/upres-cli", "mcp"],
"env": { "UPRES_API_KEY": "upres_yourkey" }
}
}
}
Tools: upres_list_models, upres_get_credits, upres_upscale_image, upres_upscale_video, upres_enhance_audio, upres_get_job.
Free tier for open-source projects
If you're building something open-source on top of the API, email [email protected] with your repo link. We offer 500 ops/month for qualifying OSS projects.
Error handling
The SDK handles these errors automatically:
| Status | Behavior |
|---|---|
401 | Prints API key error + link to key management, exits |
402 | Prints quota exceeded + link to pricing, exits |
429 | Prints rate limit message (60 req/min), exits |
5xx | Throws UpresError with message |
In Python: raises AuthError, QuotaExceededError, or UpresError.
Contributing
See CONTRIBUTING.md. Tests run with:
# Node
npm test
# Python
pip install -e ".[dev]"
pytest tests/test_client.py -v
License
MIT — see LICENSE
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.