Apolo
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| acerca_de_apoloA | Which version of Apolo is answering, where it starts from (the app, or the Claude Desktop extension handing over to it) and the engines it carries (libwebp, MozJPEG, oxipng, avifenc, cjxl). For when someone asks about the version or something doesn't match what was expected. |
| analizar_imagenA | What an image is (format, dimensions, size, transparency, metadata, EXIF orientation) or which images a folder holds. Use it first if you don't know what it is. It doesn't measure quality: for that, medir_calidad. Example: {"ruta": "~/Photos/beach.heic"} |
| cancelar_loteA | Stops a batch. What has already been converted stays. Example: {"id": "l-1"} |
| comparar_formatosA | Encodes the same image in several formats at the same perceived quality (SSIMULACRA 2 score, 80 by default) and says which one is the lightest. Saves the best one (by default), all or none, always as new files. It takes a while: about 7 trials per format (with a 12 MP photo, over a minute; with 24 MP, about three). With photos over about 20 MP, better use empezar_lote with that image, the formats and mas_ligero: it does the same in the background and isn't cut off by a timeout, although it only gives the winner. For a single output already decided, optimizar_imagen. Example: {"ruta": "~/a.png", "formatos": ["webp", "avif", "jxl"]} |
| empezar_loteA | Converts folders or many images in the background, subfolders included, without overwriting anything, and comes back right away with an id. By default, WebP at score 80, in a folder next to the input one (photos-webp, or photos-apolo with several formats); with loose images, in a subfolder next to them (webp/, apolo/). One at a time. Afterwards, ver_lote. Example: {"entradas": ["~/Photos/trip"], "formatos": ["webp", "avif"], "mas_ligero": true} |
| guardar_presetA | Saves a combination of format and options as a new preset, to use in Apolo, on the command line or here. It doesn't overwrite: if the name exists, it's an error (changing or deleting presets is done in Apolo). Example: {"nombre": "Light web", "formato": "avif", "nota_objetivo": 75, "ancho": 1920} |
| listar_presetsA | Apolo's saved presets (the same ones as the app and the command line), with their format and their command. They are used with preset in optimizar_imagen and empezar_lote. |
| medir_calidadA | How far an image is from its original: SSIMULACRA 2 (90 or more indistinguishable, 80 very high, 70 high, 50 noticeable), PSNR and SSIM. They have to be the same size (if the result is auto-rotated, the original is auto-rotated too). To see where the loss is, ver_imagen with diferencias_con. Example: {"original": " |
| optimizar_imagenA | Optimizes an image and saves it as a NEW file (next to the original, or in salida; if the name exists, -2, -3…). Without a quality, it searches for the lowest one that gives a SSIMULACRA 2 score of 80. Gives the equivalent command for cwebp, cjpeg, oxipng, avifenc or cjxl. To choose between formats, comparar_formatos; for many images, empezar_lote. Examples: {"ruta": " |
| ver_imagenA | Returns the image to look at: scaled down (768 px by default), an area at full size to spot defects, or the map of differences from its original (diferencias_con). Each view uses up context: ask for one only when it helps. Examples: {"ruta": " |
| ver_loteA | How a batch is going: the new images since “desde”, and the summary when it ends. With esperar_segundos (up to 25) it waits until there is something new, instead of asking in a loop. Example: {"id": "l-1", "esperar_segundos": 20} |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Tools are mostly distinct: inspection (analizar_imagen), quality measurement (medir_calidad), viewing (ver_imagen) and the batch lifecycle (empezar/ver/cancelar_lote) are cleanly separated. The only mild overlap is between comparar_formatos and optimizar_imagen, since both encode an image, but the descriptions explicitly cross-reference each other and state when to use which.
All names follow a consistent Spanish verb_noun snake_case pattern (analizar_imagen, optimizar_imagen, empezar_lote, ver_lote, guardar_preset, listar_presets, medir_calidad). acerca_de_apolo is the only non-verb name, but 'about' naming is a conventional exception and remains clearly readable.
Eleven tools is well within the ideal range and each maps to a genuine step in the image optimization workflow: inspect, optimize, compare, measure, view, batch, presets, info. No tool appears redundant or like filler.
Coverage is strong: single-image and batch conversion, cancellation and progress polling, quality metrics, visual diffing, and preset listing/creation form a full lifecycle. The main gap is preset management — update/delete are explicitly deferred to the Apolo app, so an agent cannot fully manage presets from here.