Agents (MCP)
Qix embeds an MCP server, so an AI agent can search, inspect, keyword, rate, and file your photos — through Qix's own command layer, with every safety rail attached, and every edit undoable with ⌘Z.
Why embedded matters
An agent that touched library files directly would bypass everything this manual has promised: pair-atomic planning, verified writes, the undo journal, trash-only deletion. So the MCP server lives inside the running app — agent calls execute the same code the keyboard does. An agent physically cannot split a Live pair, overwrite a file, or delete anything: there is no delete tool at all. Deletion stays a human act.
Hooking up a client
The server listens on a Unix socket that only your user account can reach — no open port, no token to leak. Clients spawn the bundled --mcp-proxy bridge. For Claude Code:
{ "mcpServers": { "qix": {
"command": "~/Applications/Qix.app/Contents/MacOS/qix",
"args": ["--mcp-proxy"] } } }
Qix must be running; the proxy says so plainly if it isn't.
The toolset
| Tool | What it does |
|---|---|
qix_state | the open library, mounted sources, recents |
qix_list_folder | a folder's subfolders and items, Live pairs fused, with dates and ratings |
qix_search | library-wide search with the full query grammar |
qix_inspect | full metadata for files — camera, exposure, GPS, keywords, everything |
qix_thumbnail | returns an actual image — agents can look at your photos, not just their filenames |
qix_set_keywords / qix_set_rating / qix_set_description | verified metadata writes, pair-aware, journaled |
qix_move / qix_create_folder | filing — pair-atomic, hash-verified across volumes, journaled |
qix_rename_preview / qix_rename_apply | the same rename engine as ⌘R, preview first, one undo entry |
What this makes possible
Things you can ask an agent to do against a real library, today:
- "Look through my Inbox and suggest keywords for each photo." — the agent pulls thumbnails, actually sees the pictures, and tags them.
- "Find everything from the Iceland trip without GPS and caption it with where it was taken."
- "File the Inbox: bursts stay together, food shots to Food, and rename by my dated pattern."
- "Which 2025 photos are still unrated? Rate the obviously bad ones one star so I can review."
Watch the app while an agent works: the grid updates live through the same watcher that tracks Finder, and afterward the whole session unwinds with ⌘Z if you disagree with its taste.
Guardrails, spelled out
- Every path must lie under the open library or a mounted source — traversal outside is rejected.
- Item arguments resolve through the same pair-fused listing the UI uses: pass either member of a Live pair, operate on the whole item.
- Every write goes through the journal. ⌘Z does not care who made the change.
- No trash tool, no delete tool, no Photos-import tool. Photos.app remains untouchable.