The command line
Give your agent a library in one command.
Almost no two AI tools share a plugin format. All of them can run a shell command. So the fastest way to point your own AI at your photos is a small program it can call: install it, log in once with a token, and your agent has the whole library.
Install
One file, no dependencies.
It is about ten kilobytes of plain JavaScript and needs nothing but Node. There is no build step, no SDK, and nothing running in the background.
npm install -g https://dashboard.teamcapture.app/cli/teamcapture-cli.tgzThen log in once on the machine your agent runs on. The token is read from standard input rather than typed as an argument, so it never lands in your shell history or in the process list.
teamcapture login --profile acmeYou create the token yourself in the dashboard, under Agent access, and revoke it there the moment you want it gone.
The commands
Four verbs, and that is the whole tool.
ls— what is in the library. Filter by album, by tag, by approval state. Returns the facts about each photo, never the bytes.search— ask in words. Every photo carries a written description of what is in it, so you can ask for “the bottle on a cedar table” instead of guessing a filename. The tool tells you plainly when it could not rank and fell back to newest-first, rather than handing you an ordered-looking list that is not.pull— get one file. A signed link that expires, to the original, the web-sized copy or the colour-corrected one. A phone-native photo comes back as a JPEG, so your agent never receives a format it cannot open.push— send the work back. A crop, a caption card, a summary. It is filed against the photo it came from, not dropped in a folder somewhere else.
In practice
What a job actually looks like.
Find the shot, fetch it, do the work, put it back. Four lines, and the agent never sees anything outside the workspace its token belongs to.
teamcapture search "bottles on a cedar table" --profile acme
teamcapture pull 9f3c... --out shot.jpg --profile acme
# your agent does its work on shot.jpg
teamcapture push 9f3c... crop.jpg --kind social_crop --profile acmeOne token, one workspace
An agency runs five brands without them touching.
A token belongs to exactly one workspace, and a profile holds one token. Keep a profile per client and name it on every command; there is no shared mode and no way for a run against one brand to read another’s photos. Every call is recorded against the token that made it, so revoking one is a complete answer.
Why not a plugin
Because you will change model again.
A connector per vendor is a connector to maintain per vendor, and it makes you wait on us every time you switch. Claude, ChatGPT, something you wrote yourself, whatever comes next — they do not agree on plugins, but they all have a shell. If you would rather call the API directly, that is the same four operations over HTTP with the same token.
Access
Point it at your own events.
Tell us what your events look like and what you would want an agent to do with the photos, and we will tell you whether this fits and what it costs.
Request access