> ## Documentation Index
> Fetch the complete documentation index at: https://docs.memo.solutions/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect Your Agent

> Give claude.ai, Claude Code, Cursor, or any MCP-compatible agent direct access to your Brand Kits, assets, Skills, Workflows, and on-brand generation.

Memo ships a remote MCP (Model Context Protocol) server on every plan — including Free. Connect it once and your AI agent can read your brand, search your assets, run your Workflows, and prepare on-brand image or video generations that only you can confirm.

## Connect

The server lives at:

```
https://app.memo.solutions/api/mcp/mcp
```

<Steps>
  <Step title="Add the connector">
    * **claude.ai**: Settings → Connectors → *Add custom connector* → paste the URL above.
    * **Claude Code**: `claude mcp add --transport http memo https://app.memo.solutions/api/mcp/mcp`
    * **Cursor / other MCP clients**: add a remote MCP server with the same URL.
  </Step>

  <Step title="Sign in">
    The connector uses OAuth — a browser window opens on app.memo.solutions, you approve the connection, and the agent gets scoped access to your workspace. No API keys to copy.
  </Step>

  <Step title="Try it">
    Ask your agent *"What's in my brand kit?"* or *"What's my Memo credit balance?"* — if it answers, you're connected.
  </Step>
</Steps>

## What your agent can do

Tools are grouped by job:

* **Find anything** — one search across your whole workspace by meaning, not keywords: saved inspirations, past generations, and brand assets in a single sweep ("that moody rooftop clip from the summer campaign").
* **Your library** — list your Collections, open one as a visual thumbnail grid right in the chat, read its taste profile and keywords, search every saved image (semantically, once your library is indexed), and read any image's AI analysis and tags.
* **Organize the library** — create, rename, and delete Collections; write or refresh a collection's taste profile after reading it; file images into them one by one or in bulk by tag; save new images from URLs, chat uploads, or finished generations — every save is auto-titled and described by AI so it lands searchable.
* **Read the brand** — list and read Brand Kits (voice, rules, colors, fonts), semantic search over kit photography and assets.
* **Generate** — browse the model catalog with live credit prices, prepare image or video generations, run saved Workflows. Every generation is estimate-first.
* **Name and re-find** — generations can carry an agent-chosen name (`label`), and `search_generations` finds past outputs by name or prompt in any later session, ready to reuse as references.
* **Skills** — read, create, and update reusable playbooks your team has saved — plus Memo's official starter pack (including the cinema production playbooks: scene testing, acting direction, staging maps, cinematic prompting, and the naming discipline), available read-only in every workspace.
* **Build the brand** — create kits, add colors/fonts/rules, import logos, photography, and characters (including drag-and-drop upload straight from the chat), and promote a finished generation into a named brand asset in one call.
* **Read the brand book** — attach a brand guidelines PDF to a kit, read its pages and text layer with the agent's own eyes (printed hex codes and typeface names arrive as ground-truth text), and cut logos and photos straight out of the book into named kit collections. The `brand-book-intake` skill is the full playbook — "set up this brand from the attached guidelines" is a one-ask job.
* **Workspace** — check who's signed in, list and create Studio boards, file generations into the right board, see plans and credits.
* **Work on the open project** — `get_studio_context` tells the agent which project, brief and scene you have open in Studio and what is selected on the canvas. `create_brief` plans a brief from scratch, `get_brief` reads the whole brief. `update_brief_scene`, `add_brief_scene`, `remove_brief_scene`, `reorder_brief_scenes` and `set_scene_references` change it; `open_brief` and `focus_canvas` move your view; `run_brief` presses Generate on the connected generators after you approve the estimate.

## Work on what you have open

When a Studio project is open, the agent knows where you are: the project, the brief and scene in the editor, and the nodes you selected. Say "rewrite this scene" or "make the logo the end frame of scene 3" and the change appears in your open tab within a few seconds, as an undoable edit that autosaves like your own typing. Ask for a whole set, such as two character sheets, a location and a creature, and the agent creates the brief itself, opens it for you and generates only after you approve the estimate. For a one-off image or clip it generates directly, with no brief.

If no tab is open, the same edits are applied to the saved project and appear the next time you open it. Opening the editor, focusing nodes and generating need the project open in Memo Studio. If you and the agent change the same scene in the same instant, your tab's version wins and the agent is told.

Generation through `run_brief` is estimate-first: the agent shows the scenes and credits, and only starts them after you confirm. The run happens in your open tab from the connected generators, so credit limits and errors show on the canvas exactly as they would if you pressed Generate yourself.

## Manage your Collections from any chat

Your inspiration library is fully agent-operable. A few things that work today:

* *"What's in our Summer campaign collection?"* — the agent opens it and, in Claude, shows the actual thumbnails inline.
* *"Save these 10 URLs into a new Moodboard collection"* — one call ingests, AI-titles, tags, and files them.
* *"What's the vibe of the Futurist Glam collection?"* — the agent answers from the collection's taste profile, and writes one if it is missing or stale.
* *"Generate three posters from the Futurist Glam collection"* — the taste profile and keywords become the brief for every prompt the agent builds from it.
* *"File everything tagged 'outdoor' into Lifestyle"* — bulk filing by tag is a single operation.
* *"Which images are still untagged? Clean them up."* — the agent looks at each image itself and writes better titles, descriptions, and tags.

Deleting a Collection never deletes images — they stay in your library. Adding images counts against your plan's link limit, same as saving from the extension.

Your agent also knows how to keep the library tidy on its own: it sees how many images aren't indexed or filed yet, and it follows built-in housekeeping rules — it does the describing with its own eyes (no Memo credits involved), your own tags are never touched, bulk moves are announced before they happen, and nothing can ever be deleted. In practice: *"tidy up my library"* is a one-line request. None of this machinery appears in your workspace — it lives entirely on the agent's side.

## Name what you make

Long-running projects live or die on naming. Two habits keep an agent-driven library organized:

1. **Label keepers at generation time.** Pass `label` (e.g. `product-fw25-sneaker-red-v2`) so the output's title is yours, not an automatic one — labeled outputs are findable by name with `search_generations` next week or next month.
2. **Promote finals into the Brand Kit.** When an output is approved, the agent can save it as a named brand asset (`add_brand_assets` with a `generation_id`) — including as a **character** — so it becomes a permanent, searchable reference the whole team can generate with.

## Credits and safety

Generating from an agent costs the **same credits as in the app** — and spending is deliberately two-step:

1. The agent calls `generate_image` / `generate_video` / `run_workflow` and gets back a **priced estimate** naming the destination board.
2. Nothing is spent until `confirm_generation` — the only tool that can spend credits.

Agent spending is also capped by a per-workspace monthly budget (30% of your allowance by default), so a runaway agent can never drain your balance.

## Brand rules apply automatically

Your kit's do/don't rules ride every agent generation without the agent having to remember them. When the references attached to `generate_image`, `generate_video` or `run_workflow` all belong to one Brand Kit, Memo prepends that kit's rules to the prompt on the server, together with any workspace-wide rules. Workspace-wide rules apply to every generation, references or not. If the references span several kits, only the workspace-wide rules apply and the estimate says so.

Rules scale by **subject**. A rule without subjects is kit-wide. A rule with subjects (for example `["Nano Gen 5"]`) rides only when one of the attached reference assets carries that name or subject tag, so product-specific rules never dilute an unrelated render, however many products a kit holds. Set subjects when adding a rule, or later with `update_brand_rules`, which also edits and deletes rules so a kit's list stays short.

The estimate and the confirmation both carry a `brandRules` field (`kit`, `applied`, `scoped` for the subject-matched ones, and `omitted` when a very long rule list was trimmed to fit the model's prompt limit), so you can see before spending which rules the model will follow. Rules are prompt guidance: they steer colours, copy, casing and composition well, but they cannot force pixel-exact geometry. For that, keep the truth as a kit asset and a kit skill, and attach the asset as a reference.

## The right skill at the right time

Skills can carry subjects too. A skill scoped to `["Nano Gen 5"]` is returned as `suggestedSkills` on the estimate, the confirmation and the completed result whenever the references, or the finished image's own enrichment tags, match, with its trigger hint saying when to run it. The agent no longer has to read every skill summary to find the one that applies. Skills without subjects stay invoke-by-name.

## Where generations land

Agent generations file themselves into Studio boards. Estimates name the destination; agents can create a campaign board (`create_project`) or re-file strays (`move_generations`) instead of piling into a shared inbox. Inside a board, `get_project` returns folder counts and descriptions, with one size-limited page of files, and `move_generations` with a `folder_id` files outputs into them — the same folders you see on the project's assets page. `create_project_folder` adds a folder by name (or returns the existing one) and can file generations in the same call.

When `move_generations` changes the project, an omitted `folder_id` puts the file in **Unfiled**. Within the same project it keeps the folder. Pass a destination folder explicitly to file it there, or `folder_id: "none"` to unfile it. The response lists the files actually moved and any IDs that were not found in your workspace.

`search_generations` can combine a project, media type and `review_status`. Asking for approved files filters the eligible files before selecting the results, so unapproved matches cannot use up the result limit. Name and description matches come first, followed by matches ranked by meaning. A newly named file can be found before its search index catches up.

Every generation the agent reads back carries its context: a `description` and `subjects` written from the finished image rather than the prompt, the user's `reviewStatus` when one was set on the canvas (prefer `approved` when several files fit; a missing status is not a rejection — `search_generations` accepts `review_status` to filter), the Character it depicts (`characterAssetId`), and what it was made from (`madeFromGenerationIds`, `madeFromAssetIds`).

## Character reference views

When a character has a portrait and additional reference sheets, Memo labels the sent images individually. A portrait, expression sheet and pose sheet keep their own descriptions even when they belong to the same character. This helps the generation model distinguish the purpose of each picture. Choose clear descriptions when saving reference sheets.

## Edit project files safely

Ask your connected agent to rename a file, record your review verdict, correct what an image shows, or link it to a Character. For example: “Rename this to Mira — final turnaround, and mark it approved.” A description is reference material; it never grants permission to perform an action.

The agent reads `get_generation`, then sends `update_generation` with the revision of each field it changes and a stable `operation_id`. It can change a name while someone else changes a review status. If both change the same field, Memo reports a conflict and saves none of that file's proposed changes. The agent must show the conflict and follow your intended choice. Retrying the same operation ID with the same request returns the original result.

Descriptions you or your agent author carry attribution and stay protected from later automatic descriptions. Review attribution records the authenticated user and connected client. Approval always represents an explicit verdict; a model's guess about image quality is not approval. Editor access is required, and writes stop if Memo cannot check the workspace's agent-access policy.

### Find every file in a large project

`get_project` provides an overview with folder counts and one globally limited file page. Its response contract is version 2: files are in `filePage.files`, not separate lists repeated inside every folder. Follow `nextFolderAfter` as `folder_after` for more folders, and pass `filePage.nextCursor` to `list_project_files` for more files. `items_per_folder: 0` returns a folder overview without a file page; other values no longer multiply the number of files by the folder count.

`list_project_files` supports folder, review status, media type, apparent role, Character, aspect ratio, text query, and missing name/description/folder/identity/provenance/embedding filters. Use `folder_id: "unfiled"` (or `"none"`) for Unfiled. Results are ordered by creation time and ID, so tied timestamps do not lose files. Continue until `hasMore` is false. Cursors belong to one workspace and filter set; start over when changing filters.

These tools limit each response's text to 8,000 UTF-8 bytes. A page can contain fewer files than requested to stay within that limit. Labels and descriptions in a list are summaries. `get_generation` returns the current edit revisions; its `prompt`, `description`, and `provenance` sections page through the full text using `nextOffset` and `expected_hash`. Join those pages in order. Pages are not a frozen database snapshot: edits and moves can change which files qualify while you read. Read a file again before editing it.

### Understand what a generation used

New stored generation runs capture the final provider request after model-specific settings and reference limits are applied. The run record separates the original creative request, effective settings, requested references, resolved references, images actually sent in their provider slots, and references dropped or unavailable. The provider receipt is recorded separately from the prepared request.

Older files without a captured run record say **unknown**. Memo does not reconstruct those inputs from guesses. Inline image bytes are represented by a hash; replay needs the original bytes. Remote files and provider models can change, so even a matching request does not guarantee an identical image.

### Keep Character sheets and repair search

`promote_character_sheet` saves a selected completed image as a permanent sheet of an existing workspace Character. It requires the Character-link revision from `get_generation`. The saved sheet has its own ID, permanent copy, and source record, so deleting the source generation does not remove it. Retrying resumes the same copy. A conflict returns the current link and revision; review them before choosing again. Removing a sheet from the Character is a separate explicit edit and retains the source record.

`reindex_generations` queues up to 100 authorized file IDs for search repair. It does not run image description or generate media. Indexing and automatic descriptions have separate durable queues. Interrupted work is retried with a lease; stale results cannot replace the index for newer content. Exhausted jobs remain visible for explicit retry.

Automatic generation descriptions reserve a monthly workspace allowance before each paid attempt, including retries. A failed or timed-out attempt still uses its reserved slot. If that allowance or its meter is unavailable, Memo makes no description call and uses a local prompt-based name when needed. This is separate from generation credits; names remain editable.
