Upres Cli

io.github.auroracapitalPublished by GitHub account auroracapitalv0.2.0Updated Oct 24, 2026

UpRes MCP: list models, credits, submit 4K image and video upscale jobs.

VerifiedSTDIODesktop onlyMedia & DesignAI & ML

Overview

AI-generated overview

Local MCP server for upres.ai that lets an assistant list upscaling models, check credits, and submit image, video and speech restoration jobs.

What you can do
List available upscaling and restoration models and check account credits or quota info via the upres.ai API, including job status lookups for submitted work. Submit image upscale jobs from a local file or URL, choosing a model alias and scale factor up to 8x. Submit video upscale jobs for AI-generated or film footage, and run speech denoise jobs. Files over 50 MB are uploaded through a resumable protocol before processing.
When to use it
Useful when you want an assistant to upscale, restore or denoise photos, video clips or speech through upres.ai without leaving the chat, for example batch product images, old scanned photos, or AI-generated video clips.
Requirements
Runs as a local process, typically launched with npx from the GitHub repository or installed as an npm package; Node.js is needed. Requires an upres.ai account and an API key supplied via the UPRES_API_KEY environment variable, the --api-key flag, or a config file. Network access to upres.ai is required.
Before you install
The API key (UPRES_API_KEY) is a paid-service credential; store it carefully. Jobs consume plan quota and paid tiers are required for API access, batch processing and watermark-free output, so usage can cost money. Local files or URLs are sent to upres.ai for processing, and jobs create remote records.

Installation

In SourceWeft

  1. Open Upres Cli in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

upres-cli

[npm version] [PyPI version] [License: MIT]

Star this repo if UpRes helps you. [GitHub stars]

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 4Submitting job... model=flareJob 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

bash
npx upres-cli upscale photo.jpg

Or install globally:

bash
npm install -g upres-cliupres upscale photo.jpg --model lumen --scale 8 --output photo_8k.jpg

Python

bash
pip install upres-aiupres upscale photo.jpg --model flare --scale 4

Authentication

  1. Sign up at upres.ai (free — 5 upscales/month)
  2. Go to upres.ai/account/api-keys
  3. Generate a key — it's shown once
bash
export UPRES_API_KEY=upres_yourkey

Or save permanently:

bash
mkdir -p ~/.config/upresecho '{"apiKey":"upres_yourkey"}' > ~/.config/upres/config.json

Key resolution order: --api-key flag → UPRES_API_KEY env var → ~/.config/upres/config.json


Commands

bash
# Upscale a single image (local file or URL)upres upscale photo.jpg --model flare --scale 4upres upscale photo.jpg --model lumen --scale 8 --output out.jpgupres 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 folderupres batch ./photos/ --model flare --output ./upscaled/ --concurrency 5
# List available modelsupres models
# List recent jobsupres jobs --limit 20 --status completed
# Account / quota infoupres account

Node.js SDK

typescript
import { UpresClient } from "upres-cli";
const client = new UpresClient(); // reads UPRES_API_KEY from env
// Upscale a local fileconst job = await client.createJobFromFile("photo.jpg", {  model: "flare",  scale: 4,});
// Wait for completionconst completed = await client.waitForJob(job.id);
// Download resultawait 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

python
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

ExampleWhat it does
batch-upscale-folder.jsUpscale all images in a folder with configurable concurrency
restore-photo-folder.pyRestore old/scanned photos with Lumen
ecommerce-pipeline.jsProduct image pipeline: raw shots → 4K → publish-ready
lightroom-export-hook.mdAuto-upscale Lightroom exports via post-processing hook
figma-plugin-stub.mdFigma 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.

AliasKindBest for
flareImageEveryday photos, fastest default
prismImageText, logos, product shots — keeps edges true
lumenImageMaximum detail recovery for print, up to 8x
mirageImageInvents new detail — art and hero images
hushImageFaithful denoise, same size as the source
keenImageDeblur and sharpen, same size
visageImageFaces only, does not enlarge
atelierImageHush, Visage if a portrait, then Lumen
motionVideoFast 4K finish for AI video
motion-xVideoCinema-grade, for film and commercials
stillVideoTemporal denoise, resolution stays put
cadenceVideoFrame interpolation, does not enlarge
atelier-xVideoStill, then Motion X
voiceSpeechSpeech denoise to 48 kHz. Not for music

Full model catalogue: upres.ai/models · Live spec: api.upres.ai/v1/openapi.json


Pricing

PlanPriceIncludesAPIWatermark
Free$05 upscales/mo—Yes
Creator$9/mo50 stills + 20 min 4K video/mo—No
Studio$39/mo250 stills + 90 min 4K video/moYesNo

Studio tier unlocks the full API, batch processing, and no output watermark.

Compare plans → · vs. Topaz → · vs. Upscayl →


MCP (Claude, Cursor, Hermes)

bash
claude mcp add upres -- npx -y github:auroracapital/upres-cli mcp

Or in claude_desktop_config.json / Cursor:

json
{  "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:

StatusBehavior
401Prints API key error + link to key management, exits
402Prints quota exceeded + link to pricing, exits
429Prints rate limit message (60 req/min), exits
5xxThrows UpresError with message

In Python: raises AuthError, QuotaExceededError, or UpresError.


Contributing

See CONTRIBUTING.md. Tests run with:

bash
# Nodenpm test
# Pythonpip install -e ".[dev]"pytest tests/test_client.py -v

License

MIT — see LICENSE

Source: README.md at commit 3756fa4

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.2.0LatestSep 19, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts