Search your images from Claude Code
An agent that can generate images but cannot find the ones you already have will keep remaking them. The Nano Studio Pro MCP server gives Claude Desktop, Claude Code, or any MCP host a search tool over your whole library — matching on what is inside each photo, not what the file happens to be called.
Why filenames are not enough
Most image libraries can only match text someone typed: a filename, a folder, or the prompt that made the picture. That fails in the normal case. You remember a navy sneaker on a concrete floor; the file is called final_v3_edit.png and it lives in a project you have forgotten the name of.
Every image that enters Nano Studio Pro — generated here, uploaded from disk, or pulled from a URL — is run through a detection scan first. The scan records the objects in the frame, their colors and textures, their positions, and a short narrative describing the scene. That is the index search queries, which is why a description of the photo finds the photo.
The search tool
One argument is enough. query is plain language — not a boolean expression or a tag list. limit defaults to 40.
{
"name": "search",
"arguments": { "query": "navy sneaker on concrete", "limit": 20 }
}jsonResults come back with an id, the kind of record, a relevance score, and a URL the model can open to look at the image:
{
"items": [
{
"id": "gen_8f2c...",
"kind": "generation",
"name": "Studio sneaker, overhead",
"score": 0.91,
"image_url": "https://..."
}
],
"total": 14
}jsonSearch spans assets and generations together — across every project by default, or inside one with project_id — and is free to call, so an agent can look before it generates.
Scoping, modes, and regions
Every filter the in-app search has is on the tool too. project_id keeps a query inside one project (or several, comma-separated); type, style, aspect, and colors narrow by what a hit is and how it looks. With include_regions each hit also carries its detected items with bounding boxes — the agent learns not just which image has the red cap, but where in the frame the cap is.
{
"name": "search",
"arguments": {
"query": "arena background",
"project_id": "prj_a1b2...",
"aspect": "landscape",
"include_regions": true
}
}jsonSearch reaches inside indexed videos, too. When the words match an instant of footage, the hit arrives as a normal result flagged is_video, and its video_moment names the exact millisecond inside the clip — one clip is one result, its best-matching moment. gen_type narrows to one kind of generation when you want only clips (gen_type: "video") or only transparent cutouts.
Three more modes cover the searches a keyword cannot express: mode: "browse" walks the library newest-first with no query at all, mode: "color" ranks by closeness to a hex color, and mode: "similar" ranks by likeness to an anchor image you already have — by its items, its scene, its story, or all three.
What to ask for
You do not call the tool yourself; you describe the picture and the model calls it. These all work because the scan indexed the contents, not the name:
- “Find the shot of the red dress against a brick wall and use it as a reference.”
- “Do we already have a product photo of the white sneakers on a light background?”
- “Pull up every image in this project with a person wearing a jacket.”
- “Find the hero image I made for the landing page last month, then upscale it.”
The last one is the pattern worth designing for: find first, then act on what you found. It is cheaper than regenerating and it keeps a project visually consistent.
Seeing what the engine sees
When a search is not matching, or when you need the exact item name to pass to restyle, ask for the detections on a single image. It is free.
{
"name": "get_detections",
"arguments": { "id": "gen_8f2c..." }
}jsonYou get back the detected items with their bounding boxes, the color and texture readings, and the scene narrative — the raw material the index is built from. If a term you expected is not in there, that is why the search missed.
Narrowing without searching
Three list tools cover the cases where a query is the wrong instrument: list_generations and list_assets walk a project in order, and list_favorites returns only the shots you hearted — a good shortcut when you want the best images from a project rather than a specific one.
Images that were never made here
Search is only as good as what is in the library, and the library is not limited to generated work. Existing product shots, client photos, and screenshots can all be brought in and are scanned on the way through — see importing your existing images.
Full tool list and install steps are on the MCP server page. The same search is available over HTTP in the API reference.