Browse your library
read-onlylist_libraryLists everything you have generated and uploaded, newest first, filtered by project, folder or media type, so the assistant can find earlier work and build on it.
Inputs: projectId, folderId, mediaType, search, favoritesOnly, includePreviews, limit, cursor
What the assistant reads (in English)
Browse the caller’s LUVI library — everything they have generated plus everything they have uploaded, newest first, across their own and shared projects. Use this to answer “what do I have”, to find an earlier piece of work, or to pick an existing asset to build on. Every item carries a `referenceUri` (luvi://asset/…): pass that string inside `generate`’s `parameters` at the model’s reference key to edit or riff on that asset, and a `creditsCharged` — what its generation cost, from the same ledger the account page bills from. Paginate with `cursor`.
Open one item
read-onlyget_assetShows a single item from your library with a share link, what it cost and a reference the assistant can use in the next generation.
Inputs: assetId
What the assistant reads (in English)
Fetch one library asset by its `assetId` (from list_library). Embeds the image inline so it can be shown to the user, and returns its `referenceUri` for reuse in `generate`, a no-login share link for generated results, and `creditsCharged` — what the generation behind it cost.
Search your library
read-onlysearchFinds your generations and uploads by words in their prompt or file name. ChatGPT uses it to look through your work.
Inputs: query
What the assistant reads (in English)
Search the caller’s LUVI library — everything they generated or uploaded — by a free-text query matched against generation prompts and uploaded filenames. Returns a list of results, each with an `id`, `title` and `url`; pass an `id` to `fetch` to read the full record. (This is the ChatGPT / Deep Research compatibility entrypoint; list_library exposes richer filters.)
Open a search result
read-onlyfetchReturns the full details of one search result: prompt, model, media type, size and cost.
Inputs: id
What the assistant reads (in English)
Fetch the full record for one library asset by the `id` returned from `search`. Returns `id`, `title`, `text` (a description of the prompt, model, media type, dimensions and the credits its generation cost), `url` and `metadata`. (ChatGPT / Deep Research compatibility entrypoint; get_asset returns the same asset with an inline image and share link.)
List your projects
read-onlylist_projectsShows your projects and the ones shared with you. When you name none, results go to a project created for the connection.
What the assistant reads (in English)
List the LUVI projects the caller can open — their own plus any shared with them (`shared: true`). Pass a project id to `generate`/`list_folders`/`list_library` to work inside it. If you omit projectId on `generate`, results go to an auto-created project named after your connection (e.g. "ChatGPT Studio").
Create a project
create_projectCreates a new project in your account so the next results land in it.
Inputs: name, description
What the assistant reads (in English)
Create a new LUVI project with a given name in the caller’s account. Returns its id — pass that as `projectId` to `generate` so results land in this project. (Omitting projectId on generate instead uses a per-connection auto-project.)
List folders
read-onlylist_foldersShows the folders inside a project.
Inputs: projectId
What the assistant reads (in English)
List folders inside a LUVI project you have access to.
Create a folder
create_folderCreates a folder in a project, inside another folder if you like, so new results can be filed straight into it.
Inputs: projectId, name, parentFolderId, description
What the assistant reads (in English)
Create a new folder inside a LUVI project you have access to. Returns its id — pass that as `folderId` to `generate` so results land in this folder. Optionally nest it under an existing parent folder (from list_folders) in the same project.
Rename a folder
rename_folderChanges a folder's name; everything inside it and every existing reference stays the same.
Inputs: folderId, name
What the assistant reads (in English)
Rename a folder in a LUVI project you have access to. Pass the folderId from list_folders. Only the name changes — the folder keeps its id, its place in the tree, and everything inside it, so any assetId or reference you already have stays valid.
Move items into a folder
move_to_folderSorts results and uploads that are already in your library into a folder of the same project, or back to the project root.
Inputs: assetIds, folderId
What the assistant reads (in English)
Move generations and/or uploads that ALREADY exist in the library into a folder (or back to the project root). Use this to organize existing results — e.g. after generating a batch, sort them into folders you created. `generate`’s folderId only routes NEW results; this moves ones already made. Pass assetIds from list_library ("gen:<uuid>:<idx>" or "upload:<uuid>") and the target folderId from list_folders (or null / omit to move to the project root). The folder must be one you have access to and must be in the same project as the assets — if any asset belongs to another project, nothing is moved; assets you do not own are skipped.
Move a folder to the trash
delete_folderPuts a folder and the folders inside it in the trash for 24 hours. The files are not deleted; they stay in your library at the project root.
Inputs: folderId
What the assistant reads (in English)
Move a folder (and any folders nested inside it) to the trash. The files inside are NOT deleted — they stay in the library and appear at the project root while the folder is in the trash. Recoverable with restore_folder for 24 hours, after which the folder itself is removed for good and its contents simply stay at the root. Pass the folderId from list_folders. To empty a folder without removing it, use move_to_folder instead.
Restore a folder
restore_folderBrings a trashed folder back within 24 hours, with its files where they were.
Inputs: folderId
What the assistant reads (in English)
Undo a delete_folder within its 24-hour window: the folder comes back with its contents exactly where they were, along with any folders that were nested inside it. If the folder was inside another trashed folder, that parent is restored too — otherwise the folder would have nowhere to sit. Pass the folderId that delete_folder returned. After 24 hours the folder is gone and this will report it as not found; the files it held are not lost, they are at the project root.