Before/after comparison GIFs from two image URLs, by crisp.photos, the free browser photo upscaler
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Make a looping before/after comparison GIF from two images. A slider sweeps across the frame and reveals the before image over the after image, with Before and After labels. Use it to show the effect of an edit such as upscaling, retouching or colour correction. Both images should show the same scene: the before image is resized to the after image's size. The GIF is at most 800 px on its longer side and loops one 3 s back-and-forth sweep. A small crisp.photos mark sits in the bottom right corner.
Public https URL of the edited image, showing the same scene. JPEG, PNG or WebP, at most 20 MB.
Public https URL of the original image. JPEG, PNG or WebP, at most 20 MB.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http image-tools https://crisp.photos/api/mcp
Make a looping before/after comparison GIF from two images. A slider sweeps across the frame and reveals the before image over the after image, with Before and After labels. Use it to show the effect of an edit such as upscaling, retouching or colour correction. Both images should show the same scene: the before image is resized to the after image's size. The GIF is at most 800 px on its longer side and loops one 3 s back-and-forth sweep. A small crisp.photos mark sits in the bottom right corner.
| Argument | Type | Description |
|---|---|---|
| url_after* | string | Public https URL of the edited image, showing the same scene. JPEG, PNG or WebP, at most 20 MB. |
| url_before* | string | Public https URL of the original image. JPEG, PNG or WebP, at most 20 MB. |
{
"type": "object",
"required": [
"url_before",
"url_after"
],
"properties": {
"url_after": {
"type": "string",
"description": "Public https URL of the edited image, showing the same scene. JPEG, PNG or WebP, at most 20 MB."
},
"url_before": {
"type": "string",
"description": "Public https URL of the original image. JPEG, PNG or WebP, at most 20 MB."
}
},
"additionalProperties": false
}| Argument | Type | Description |
|---|---|---|
| name* | string |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 9, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.