Apolo
MCPB · LINUX-X64 · 5 COMPONENTS
Optimize, convert and compare images locally: WebP, AVIF, JPEG XL, JPEG and PNG.
Last scanned (19 hours ago)
Scores higher than 84% of MCPB servers
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to webcafeina/Apolo). View diagnostics → Pass
- Clear OSI-approved license (GPL-3.0-or-later).Pass
- Actively maintained (last published 4 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability58
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3761 tokens (~341/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 11 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.
- 30 Oct 26 +2
- Stability: unverified → 0.10 ▲ functional
- Package version: 1.0.0 → 1.0.1 functional
- 27 Oct 26 48
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Analysed mcpb/https://github.com/webcafeina/Apolo/releases/download/v1.0.1/Apolo-1.0.1-linux-amd64.mcpb@1.0.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | mcpb |
| Reason | Verified |
| Discovered via | GitHub artifact attestations |
| Source repo | webcafeina/Apolo |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/webcafeina/Apolo/.github/workflows/publicar.yml@refs/tags/v1.0.1 |
| Rekor log index | 3599641914 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha256:b61c6e43bc6f3ff48975a2e064fb7cdca073ec851103a60a740a14d692cec7f6 |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
acerca_de_apolo ~75
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
analizar_imagen ~88
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"}
| Name | Type | Req | Description |
|---|---|---|---|
| ruta | string | yes | Absolute path of an image or a folder (~ is accepted). |
No output schema declared.
No examples provided.
cancelar_lote ~50
Stops a batch. What has already been converted stays. Example: {"id": "l-1"}
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The id that empezar_lote gave, like “l-3”. |
No output schema declared.
No examples provided.
comparar_formatos ~516
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"]}
| Name | Type | Req | Description |
|---|---|---|---|
| alto | integer|null | – | Maximum height, in pixels: scales down if larger and never enlarges (with ancho alone, proportional). |
| ancho | integer|null | – | Maximum width, in pixels: scales down if larger and never enlarges (with alto alone, proportional). |
| enderezar | boolean|null | – | Auto-rotate according to the EXIF orientation if the photo needs it. Yes by default. |
| formatos | array|null | – | The formats to compare. By default, webp, avif and jpeg. |
| guardar | – | – | What to save: mejor (the best one, by default), todos (all) or ninguno (none). |
| lado_mayor | integer|null | – | Maximum longest side, in pixels: the width if landscape, the height if portrait; never enlarges. Not together with ancho, alto or porcentaje. |
| nota_objetivo | number|null | – | The SSIMULACRA 2 score they all have to reach. 80 by default. |
| paleta | integer|null | – | Reduce the palette to this number of colors (2 to 256), with dithering. |
| porcentaje | number|null | – | Reduce to this percentage (50 = half the width and height). From above 0 to 100. Not together with ancho, alto or lado_mayor. |
| recorte | object | – | Crop to this rectangle, before resizing (in pixels of the already auto-rotated image; whatever goes past the edge is trimmed). |
| ruta | string | yes | Absolute path of the image (~ is accepted). |
| salida | string|null | – | Folder to save to. By default, next to the original. |
No output schema declared.
No examples provided.
empezar_lote ~561
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}
| Name | Type | Req | Description |
|---|---|---|---|
| alto | integer|null | – | Maximum height, in pixels: scales down if larger and never enlarges (with ancho alone, proportional). |
| ancho | integer|null | – | Maximum width, in pixels: scales down if larger and never enlarges (with alto alone, proportional). |
| calidad | integer|null | – | Fixed quality from 0 to 100. Not together with nota_objetivo. |
| enderezar | boolean|null | – | Auto-rotate each photo according to its EXIF orientation if it needs it. Yes by default. |
| entradas | array | yes | Folders or images, absolute paths (~ is accepted). |
| formatos | array|null | – | Output formats (one or several). By default, the preset's or webp. |
| lado_mayor | integer|null | – | Maximum longest side, in pixels: the width if landscape, the height if portrait; never enlarges. Not together with ancho, alto or porcentaje. |
| mas_ligero | boolean | – | With several formats: keep only the lightest one of each image. |
| medir | boolean | – | Measure the score of each file (takes longer). |
| nota_objetivo | number|null | – | Search, image by image, for the quality that gives this score. 80 by default. |
| orden | string|null | – | Options of the official tool (only with one format). |
| paleta | integer|null | – | Reduce the palette to this number of colors (2 to 256), with dithering. |
| porcentaje | number|null | – | Reduce to this percentage (50 = half the width and height). From above 0 to 100. Not together with ancho, alto or lado_mayor. |
| preset | string|null | – | A saved preset, the base for everything. |
| salida | string|null | – | Output folder. By default, next to the input one with -webp, -apolo…; with loose images, a webp/, apolo/… subfolder next to them. |
| sin_perdida | boolean | – | Lossless (WebP, AVIF, JPEG XL). PNG and QOI always are. |
No output schema declared.
No examples provided.
guardar_preset ~607
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}
| Name | Type | Req | Description |
|---|---|---|---|
| alto | integer|null | – | Maximum height, in pixels: scales down if larger and never enlarges (with ancho alone, proportional). |
| ancho | integer|null | – | Maximum width, in pixels: scales down if larger and never enlarges (with alto alone, proportional). |
| calidad | integer|null | – | Fixed quality from 0 to 100. Not together with nota_objetivo. |
| enderezar | boolean|null | – | Auto-rotate according to the EXIF orientation if the photo needs it. Yes by default. |
| formato | – | – | webp, jpeg, png, qoi, avif or jxl. By default, the preset's, or webp. |
| lado_mayor | integer|null | – | Maximum longest side, in pixels: the width if landscape, the height if portrait; never enlarges. Not together with ancho, alto or porcentaje. |
| nombre | string | yes | The name of the new preset. It can't exist already. |
| nota_objetivo | number|null | – | Search for the lowest quality that gives this SSIMULACRA 2 score (90 indistinguishable; 80 very high; 70 high; 50 medium). Takes a few seconds. |
| orden | string|null | – | Options of the official tool, as they are: “-q 80 -m 6” (cwebp), “-quality 85 -progressive” (cjpeg), “-o 4” (oxipng), “-q 60 -s 6” (avifenc), “-d 1 -e 7” (cjxl). It may start with the tool's name. Fo… |
| paleta | integer|null | – | Reduce the palette to this number of colors (2 to 256), with dithering: mainly for PNGs of logos, icons and screenshots. |
| porcentaje | number|null | – | Reduce to this percentage (50 = half the width and height). From above 0 to 100. Not together with ancho, alto or lado_mayor. |
| preset | string|null | – | A saved preset (listar_presets lists them). It is the base for everything else. |
| recorte | object | – | Crop to this rectangle, before resizing (in pixels of the already auto-rotated image; whatever goes past the edge is trimmed). |
| sin_perdida | boolean | – | Lossless (WebP, AVIF, JPEG XL). PNG and QOI always are. |
No output schema declared.
No examples provided.
listar_presets ~48
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
medir_calidad ~137
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": "~/a.jpg", "resultado": "~/a.webp"}
| Name | Type | Req | Description |
|---|---|---|---|
| original | string | yes | The original image, absolute path. |
| resultado | string | yes | The image to measure, of the same size. |
No output schema declared.
No examples provided.
optimizar_imagen ~805
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": "~/a.jpg"} · {"ruta": "~/a.png", "formato": "avif", "nota_objetivo": 85} · {"ruta": "~/a.jpg", "formato": "webp", "orden": "-q 80 -m 6", "ancho": 1600} For the person's images, use it instead of converting them yourself in another environment (a cloud interpreter): it works with the file on their disk, with the official engines. Apolo doesn't see images attached to the conversation: if one is attached, ask for its path.
| Name | Type | Req | Description |
|---|---|---|---|
| alto | integer|null | – | Maximum height, in pixels: scales down if larger and never enlarges (with ancho alone, proportional). |
| ancho | integer|null | – | Maximum width, in pixels: scales down if larger and never enlarges (with alto alone, proportional). |
| calidad | integer|null | – | Fixed quality from 0 to 100. Not together with nota_objetivo. |
| enderezar | boolean|null | – | Auto-rotate according to the EXIF orientation if the photo needs it. Yes by default. |
| formato | – | – | webp, jpeg, png, qoi, avif or jxl. By default, the preset's, or webp. |
| lado_mayor | integer|null | – | Maximum longest side, in pixels: the width if landscape, the height if portrait; never enlarges. Not together with ancho, alto or porcentaje. |
| medir | boolean | – | Also measure PSNR and SSIM (the score is already measured when searching for it). |
| nota_objetivo | number|null | – | Search for the lowest quality that gives this SSIMULACRA 2 score (90 indistinguishable; 80 very high; 70 high; 50 medium). Takes a few seconds. |
| orden | string|null | – | Options of the official tool, as they are: “-q 80 -m 6” (cwebp), “-quality 85 -progressive” (cjpeg), “-o 4” (oxipng), “-q 60 -s 6” (avifenc), “-d 1 -e 7” (cjxl). It may start with the tool's name. Fo… |
| paleta | integer|null | – | Reduce the palette to this number of colors (2 to 256), with dithering: mainly for PNGs of logos, icons and screenshots. |
| porcentaje | number|null | – | Reduce to this percentage (50 = half the width and height). From above 0 to 100. Not together with ancho, alto or lado_mayor. |
| preset | string|null | – | A saved preset (listar_presets lists them). It is the base for everything else. |
| recorte | object | – | Crop to this rectangle, before resizing (in pixels of the already auto-rotated image; whatever goes past the edge is trimmed). |
| ruta | string | yes | Absolute path of the image (~ is accepted). |
| salida | string|null | – | Where to put it: a folder, or a file with the format's extension. By default, next to the original. Nothing is ever overwritten. |
| sin_perdida | boolean | – | Lossless (WebP, AVIF, JPEG XL). PNG and QOI always are. |
No output schema declared.
No examples provided.
ver_imagen ~244
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": "~/a.webp"} · {"ruta": "~/a.webp", "diferencias_con": "~/a.jpg"} · {"ruta": "~/a.webp", "zona": {"x": 400, "y": 300, "ancho": 256, "alto": 256}}
| Name | Type | Req | Description |
|---|---|---|---|
| diferencias_con | string|null | – | Path of the original: instead of the image, the map of where it departs from it. |
| lado_max | integer|null | – | The longest side of the view, in pixels: 768 by default, 1568 at most. |
| ruta | string | yes | Absolute path of the image to view. |
| tipo_mapa | – | – | With diferencias_con: estructura (structure, by default) or diferencia (difference). |
| zona | object | – | View only this area, in pixels of the image (to look at defects at 1:1). |
No output schema declared.
No examples provided.
ver_lote ~161
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}
| Name | Type | Req | Description |
|---|---|---|---|
| desde | integer | – | From which image to count the new ones (siguiente_desde from the previous answer). 0 by default: all of them. |
| esperar_segundos | integer | – | Wait up to this number of seconds (25 at most) for something new or for the end, instead of asking in a loop. |
| id | string | yes | The id that empezar_lote gave, like “l-3”. |
No output schema declared.
No examples provided.
How do I install the Apolo MCP server?
Apolo ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, b61c6e43bc6f3ff48975a2e064fb7cdca073ec851103a60a740a14d692cec7f6; the commands to do that are on this page. If it does not match, do not open it.
mcpb · linux-x64
Download bundleCheck the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.
SHA-256
b61c6e43bc6f3ff48975a2e064fb7cdca073ec851103a60a740a14d692cec7f6
macOS / Linux
echo "b61c6e43bc6f3ff48975a2e064fb7cdca073ec851103a60a740a14d692cec7f6 Apolo-1.0.1-linux-amd64.mcpb" | shasum -a 256 -c
Windows (PowerShell)
(Get-FileHash -Algorithm SHA256 .\Apolo-1.0.1-linux-amd64.mcpb).Hash -eq "b61c6e43bc6f3ff48975a2e064fb7cdca073ec851103a60a740a14d692cec7f6"
Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.
What is the Apolo MCP server?
Apolo is an MCP server listed in the public MCP registry as io.github.webcafeina/apolo. Optimize, convert and compare images locally: WebP, AVIF, JPEG XL, JPEG and PNG. This page covers its MCPB bundle (https://github.com/webcafeina/Apolo/releases/download/v1.0.1/Apolo-1.0.1-linux-amd64.mcpb).
Is the Apolo MCP server safe to use?
Apolo scores 52 out of 100 on VerifyMCP. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Apolo MCP server expose?
Apolo exposes 11 tools: acerca_de_apolo, analizar_imagen, cancelar_lote, comparar_formatos, empezar_lote, and 6 more. Their descriptions and schemas cost roughly 3,292 tokens of context every time the server is loaded.
What licence is the Apolo MCP server under?
Apolo declares the GPL-3.0-or-later licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.