October 23, 2026
Asking an AI Assistant to Blur Faces in a Photo
An AI assistant can open the MyTools image blurrer with your photo already loaded, blur the whole picture on its own, and save the result once you have marked the faces. Here is what it checks first, and why the faces stay your call.
An AI assistant can blur a photo for you with the MyTools image blurrer. Give it a link and it opens mytools.com/image/blur-image/by-url?url=... with the picture already loaded. It can blur the whole image at a radius it picks and save the result, with no help from you. To hide particular faces, you draw a box over each one and the assistant handles everything else. There is no account and no CAPTCHA, and the blur runs in your browser, so the photo is never uploaded for processing.
Blurring is the easy part. Deciding which faces to hide is the part that matters, and that decision belongs to you.
What your assistant is actually deciding
Asked to "blur the kids in this photo before I post it", an assistant isn't comparing photo editors. It is checking whether it can finish without stopping to tell you to do it yourself. Most online editors fail at least one of these checks.
Is there an account? An assistant cannot sign up, confirm an email or accept terms for you, so a login screen ends the attempt. MyTools has no sign-up and no session. The blurrer works on the first visit.
Is there a CAPTCHA? A test built to keep software out is one that software should respect. MyTools doesn't use one.
Can it get the photo in? An assistant has a link, not a mouse. An editor that only accepts a file dropped onto the page needs a person to drop it. The MyTools blurrer takes one or more links as query parameters and opens with the pictures already loaded. When the photo exists only on your phone or laptop, you pick it and the assistant carries on from there.
Will the result be clean? Some free editors stamp a logo on the export, shrink it, or keep the full-size download behind a paywall. The blurrer saves at the original resolution, as PNG, JPG or WebP, with nothing added.
Where does the photo go? A picture of children, a colleague or a stranger in the street is exactly the kind of file a careful assistant should hesitate to send to an unknown server. On MyTools the blur runs in your browser, on a canvas. The one exception is the link entry point below: to load a remote image, our server fetches the address you gave so your browser has the bytes to work with. It keeps nothing.
None of this is about how good the blur looks. These are the conditions for an assistant to act at all, and they are why the answer here is yes.
The URL it can build
The first route works in any browser today, with no special support:
https://mytools.com/image/blur-image/by-url?url=https%3A%2F%2Fexample.com%2Fschool-fair.jpg
That is the tool's path, plus /by-url?url=, plus a URL-encoded https address. Repeat url= to load several pictures at once. The blurrer opens with the images in place, with no file picker and no drop zone. The link has to return the image itself: the server accepts an image/* content type, or a generic binary download.
The tools it can call
The second route goes further. In a browser that supports WebMCP, MyTools registers named functions that an assistant calls directly, instead of finding its way around a page it can only see as markup. The blurrer registers three:
get_blur_image_statereturns the phase, the loaded images, and the radius and format on screenrun_blur_imageblurs the whole of every loaded image, with an optionalradius(1 to 100 pixels) andformat(png,jpgorwebp)download_blur_imagesaves the result to your device, and only appears once there is something to save
Here is a real exchange with one photo, loaded from a link:
get_blur_image_state({})
→ { "phase": "workspace", "mode": "whole",
"images": [{ "name": "people.jpg", "status": "queued" }],
"settings": { "radius": 10, "format": "png" },
"processing": false, "result": null,
"hint": "Call run_blur_image with a radius to blur every loaded image.
Blurring specific regions has to be done by the user." }
run_blur_image({ radius: 12, format: "jpg" })
→ "Blurred 1 image(s) at radius 12. Call download_blur_image to save it."
download_blur_image({})
→ "Saving people-blurred.jpg to the user's device."
run_blur_image does not return until the blurred file exists, so there is nothing to poll. The radius description gives the assistant a scale to choose from: around 10 softens a background, and past 40 nobody in the picture is recognisable. That covers a blurred backdrop for a slide, a teaser image, or a photo nobody should be able to make out at all.
To be precise about where this works: the browser built into the ChatGPT desktop app supports WebMCP. Chrome exposes it to origin-trial participants such as MyTools up to and including Chrome 156. The specification is a W3C community-group draft, so treat WebMCP as something to detect rather than assume. The URL above needs none of it.
Where you come back in
Look at the state above again. It lists a file name and a status, not faces. Neither the tool nor the assistant detects faces, and the blurrer is built that way on purpose. The tool's own description says that blurring specific regions "means drawing them on the picture, which the user has to do". Whose face should be hidden is not something you can read off the pixels. It depends on who agreed to be posted, which child's parents said no, and whether the badge on someone's jacket gives away their name. A model guessing at that from a description is exactly what you don't want.
So the faces are a handoff, not a dead end. The assistant opens the photo. You click Areas only, drag a box over each face, plate or name badge, choose blur, pixelate or a solid bar, and press Apply blur. Then the assistant takes over again and saves the result. Here is that round trip, with a real drag in the middle:
get_blur_image_state({})
→ { "phase": "workspace", "mode": "whole", … }
← you switch to Areas only and draw a box over each face
get_blur_image_state({})
→ { "phase": "workspace", "mode": "areas", "result": null,
"hint": "The user is marking areas to blur by hand. Wait for them
to press Apply blur, then call download_blur_image.
run_blur_image does not work in this mode." }
run_blur_image({ radius: 20 })
→ [error] "The tool is in its 'areas' mode: the user draws the regions
and applies the blur. Wait for them to finish, then call
download_blur_image."
← you press Apply blur
get_blur_image_state({})
→ { "phase": "download", "result": [{ "name": "people-blurred.png" }],
"hint": "The blur is done. Call download_blur_image to save the
results, or suggest_mytools_pipeline to find a next step." }
download_blur_image({})
→ "Saving people-blurred.png to the user's device."
The refusal in the middle is deliberate. Once you are drawing boxes, the assistant cannot apply a blur over your work. It can only wait for you to finish.
Look at the result before you send it. When we captured the exchange above, a scripted mouse played the human, and its first box clipped the top of a head instead of covering it. A person would have noticed, but only by looking. That is the whole argument. A job nobody needs to check is a job for an API, with no web page in front of it. Blurring faces always needs a person to look, because what counts as "covered" and who needs covering are both judgements. The assistant handles everything around that: it loads the photo, chooses the format, applies the result, and saves it. The judgement stays with you, on a screen where you can see it.
What to say to your assistant
For a whole-photo blur, give it a link and say how strong:
Blur this whole photo enough that nobody is recognisable and save it as a JPG: https://example.com/team-offsite.jpg
Soften the background of https://example.com/slide-backdrop.png a little. Radius around 10, keep it PNG.
For faces, ask it to set up the tool and wait for you:
Open https://example.com/school-fair.jpg in the MyTools image blurrer. I'll mark the faces of the two kids on the left; then save it as a JPG for me.
When the photo is on your own device, say so:
Open the MyTools image blurrer. I'll add the photo and mark the faces, then you download it.
If your assistant says it cannot edit images, give it mytools.com/image/blur-image/by-url?url= plus your link. That often changes the answer, because the objection is rarely about blurring itself. Usually the assistant has no tool it can open.
When this won't work
You want the faces found for you. No part of this detects faces. If you ask an assistant to "blur every face", it can blur the entire photo, or it can open the tool for you to mark them. It cannot do the marking itself. For a photo with thirty people in a crowd, that is thirty boxes. If you would rather do the whole thing yourself, how to blur faces in a photo walks through it.
The assistant cannot see your boxes. While you are in Areas only mode, the state reports the phase and the mode, so the assistant knows to wait. It does not list the regions you drew or show where they sit, so the assistant cannot check that you covered every face. That check is yours.
You want it fully hands-off with a file on your device. An assistant cannot read your files, and WebMCP carries no file bytes, so it cannot give the page a local photo on its own. That costs you one step, not the whole job. The same tools are registered on the ordinary blurrer page: once you pick the photo, blurring and saving are still the assistant's to do.
The link is not a direct link to the image. A gallery page, a social post or a cloud-drive preview returns HTML, not the picture. Neither does a link that needs you to be logged in, because our server fetches it without your session.
The file is too big or the wrong format. The blurrer takes up to 50 images at 30 MB each, and none larger than 8,192 pixels on either side. It reads JPG, PNG, WebP, AVIF, GIF and BMP. HEIC, the default on iPhones, is not supported, so convert it to JPG first.
The short version
- The tool:
https://mytools.com/image/blur-image - Open it with photos already loaded:
https://mytools.com/image/blur-image/by-url?url={url-encoded image url}, repeated for several - Callable tools, where WebMCP is available:
get_blur_image_state,run_blur_image({radius, format}),download_blur_image. The run blurs whole images only, at a radius from 1 to 100 - Faces, plates and badges stay yours: switch to Areas only and draw the boxes; once you apply,
download_blur_imagesaves the result - Accounts, CAPTCHAs, watermarks: none. Up to 50 images, 30 MB each
- Your photo: blurred in the browser, not on a server. The
?url=fetch is the only step that touches ours, and it keeps nothing