Skip to main content
Glama

immich_search

Read-only

Searches an Immich photo library for assets by metadata, smart queries, people, places, cities, paths, map markers, and time buckets, plus statistics and search suggestions.

Instructions

immich_search covers the search toolset (16 operations). Auth header x-api-key. Actions: get_assets_by_city: GET /search/cities. Retrieve assets by city get_assets_by_original_path: GET /view/folder. Retrieve assets by original path get_explore_data: GET /search/explore. Retrieve explore data get_map_markers: GET /map/markers. Retrieve map markers get_search_suggestions: GET /search/suggestions. Retrieve search suggestions get_time_bucket: GET /timeline/bucket. Get time bucket get_time_buckets: GET /timeline/buckets. Get time buckets get_unique_original_paths: GET /view/folder/unique-paths. Retrieve unique paths reverse_geocode: GET /map/reverse-geocode. Reverse geocode coordinates search_asset_statistics: POST /search/statistics. Search asset statistics search_assets: POST /search/metadata. Search assets by metadata search_large_assets: POST /search/large-assets. Search large assets search_person: GET /search/person. Search people search_places: GET /search/places. Search places search_random: POST /search/random. Search random assets search_smart: POST /search/smart. Smart asset search

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "action": "<action>"
    },
    "name": "immich_search"
  }
}

Input Schema

NameRequiredDescriptionDefault
bodyNoJSON body for the Immich operation. Secrets are redacted in output.
queryNoOpenAPI query parameters.
actionYesImmich operation to call.
paramsNoOpenAPI path parameters, such as id.
checksumNoOptional x-immich-checksum header for asset upload.
file_pathNoLocal file to upload as multipart assetData. Confirm-gated. The path is omitted from output.
save_pathNoLocal path to save a binary download. If omitted, only metadata is returned. The path is omitted from output.
sidecar_pathNoOptional local XMP sidecar for asset upload. The path is omitted from output.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context by disclosing the required auth header (x-api-key), which the annotations do not. It adds nothing about pagination, result limits, rate limits, or what an empty search returns, so the addition is real but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The size is defensible for 16 operations, but the structure is broken: operation names and their descriptions run together with no delimiter ("Retrieve assets by city get_assets_by_original_path: GET /view/folder."), making the list hard to parse. Several entries are tautological restatements of the action name ("get_map_markers: GET /map/markers. Retrieve map markers"), so words are spent without adding meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-action router with freeform query/body objects and no output schema, the description is not complete enough: it never indicates which parameters each action requires or what shape the body takes for the POST search actions. There is also no mention of return values. The detail that file_path, sidecar_path, checksum, and save_path exist in the schema but map to none of the listed search actions is left entirely unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all eight parameters are documented in the schema and the baseline of 3 applies. The description contributes only the GET/POST distinction per action, which hints at whether an action expects query versus body content, but it never states which query or body fields a given action accepts.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening clause names the resource and scope unambiguously ("covers the search toolset (16 operations)"), and each action is mapped to a verb and REST endpoint, so an agent can see this is the read/search surface rather than albums, assets, people, or server. It falls short of a 5 because the enumeration is machine-generated route mapping rather than a statement of what the tool as a whole returns or accomplishes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no routing advice versus the sibling tools, and no help choosing between overlapping actions such as search_assets, search_smart, search_large_assets, and search_random. The action labels imply some selection logic ("Search people", "Search places"), but nothing states the conditions under which one action should be picked over another, or when to use this tool instead of immich_assets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.