Reading the stack top-down — there are **two paths into the same engine**, and that's the whole answer to your MCP confusion:

## CLI vs Skill vs MCP (the one mental model)

The **CLI is the engine.** Everything else just wraps `marlin caption` / `marlin find`.

- **Skill** = a `SKILL.md` file (+ the CLI) that teaches a *terminal* agent **when/how** to call the verbs. Install it and any Claude Code or Codex session *becomes* "the marlin agent." No server, no daemon. **This is your marlin agent** — not a separate binary.
- **MCP server** = a thin adapter that exposes the same two verbs as structured tools for clients with **no shell** (Claude Desktop, Cursor's MCP host). You only need it when your users aren't in a terminal.

So, your questions answered directly:

- **"Agent or skill?"** → A **Skill**. There is no separate "agent" artifact in this ecosystem — the skill *is* the packaged capability the agent uses.
- **"Do we need an MCP server?"** → **Not for launch.** Claude Code + Codex users are fully served by CLI + Skill today. Add MCP later *only if* Claude Desktop demand appears — it's ~a day, wrapping the same `caption`/`find` (the right-hand path in the diagram, into the same ship-now verbs).
- **"Are caption + find sufficient for a Claude-usable marlin agent?"** → **Yes, completely.** Those two *are* the model's entire native surface — exactly what your inference server does with the training prompts. A skill over them is a complete, launchable agent. `index`/`search` add *scale*, not *capability*.

## The rename you asked for — two tiers

The clean line: **`caption`/`find` = the model. `index`/`search` = a search engine built on the model.**

| Verb | Scope | Status | What it is |
|---|---|---|---|
| `marlin caption <video>` | one clip | **ship** | dense description — direct model call, training prompt |
| `marlin find <video> "q"` | one clip | **ship** | temporal grounding — direct model call |
| `marlin index <folder>` | a library | **WIP** | chunk → caption → embed → DB |
| `marlin search <folder> "q"` | a library | **WIP** | two-stage retrieval (was the folder `find`) |

`caption`/`find` work on **bounded clips inside the model's native window** (~2 min @ 2 fps) — they map 1:1 to the inference server, no DB, nothing to decide. `index`/`search` are the complex part (DB choice, ranking, UI all still open) → I'll mark them **WIP/experimental** in `--help` (separate group), keep the code in the repo, but not push users at them.

## Repo shape (priority 4 — many skills, easy for Codex/Claude)

`cute_video_agents` becomes the **platform monorepo**:
- `src/marlin/` = the CLI engine (the verbs)
- `skills/<name>/SKILL.md` = many skills riding the verbs — `video-understanding` (caption+find), `social-media` (next), … **adding a skill = adding a folder**
- `marlin skills install` already fans them into `.claude/skills` + `.agents/skills`, so Claude Code & Codex auto-discover them
- the published `nemostation` CLI is *exported from here*; skills ship with it

One cleanup: the published repo (`marlin-cli-pub`) and `cute_video_agents` have **diverged** — all my recent work (rename, onboarding, branding, the build fix) lives only in the published one. We should fold it back so `cute_video_agents` is the single source of truth.

## Plan against your four priorities

1. **Ship local CLI at full model capacity** — add `caption <video>`, rework `find` → single-video grounding, both in the onboarding examples + the skill; verify on a real clip. ← the launch
2. **Marlin agent = the `video-understanding` Skill** over those two verbs. Installable into Claude Code/Codex. No MCP.
3. **`index`/`search` → WIP**, marked in the CLI, parked until you settle DB + ranking (+ MCP-or-not).
4. **Repo as skill platform** — consolidate into `cute_video_agents`, make "add a skill = a folder," then `social-media` is the second skill that proves the pattern. MCP stays a later parallel adapter.

Want me to start on **#1** — add `caption`, rework `find` to single-video, rename the folder pair to `index`/`search` + mark them WIP, and wire `caption`/`find` into the onboarding + skill? And separately: should I **consolidate the two repos** (fold the published work back into `cute_video_agents`) so we're not maintaining two diverging copies?