# The eroq plugin for Claude Code — remote server, sign-in and a skill that knows the prices

> Install eroq in Claude Code from our own marketplace: the remote MCP server with OAuth sign-in plus a skill that teaches Claude Code the models, prices and async renders. How it differs from the one-line command and the CLI.

Published 2026-09-22 · eroq.ai — canonical: https://eroq.ai/blog/claude-code-plugin-and-skill


There are now three ways to give Claude Code the eroq tools, and they are not the same thing. The one-line `claude mcp add` gives it the tools. The **plugin** gives it the tools *and a skill* — a short document that tells Claude Code how eroq prices, which model to pick, and how to wait for a video without being told. The [CLI](/blog/claude-code-and-the-eroq-cli) gives it a local server that writes files. This guide is the plugin: install, what the skill says, and when to pick which.

## Install

Claude Code plugins come from marketplaces, and eroq serves its own from eroq.ai — no git repository involved:

```text
/plugin marketplace add https://eroq.ai/claude-code/marketplace.json
/plugin install eroq@eroq
```

Then `/mcp`, select **eroq**, choose **Authenticate**. eroq opens in the browser; sign in and click **Allow**. Claude Code gets its own key, « Claude Code (connected) », under Developers → API keys — revoke it there to disconnect.

The marketplace entry is an archive pinned by SHA-256, so what installs is exactly what we published. Without the plugin, the server alone is:

```bash
claude mcp add --transport http eroq https://eroq.ai/mcp
```

(add `--scope user` to have it in every project), followed by the same `/mcp` → Authenticate. Prefer a key in a header? `--header "Authorization: Bearer eroq_sk_…"` works too.

## What the skill teaches

A skill is a markdown file Claude Code reads when the task matches its description. The eroq skill triggers when you ask for a picture, a clip, a voice line or visual assets for the project, and it says, in short:

- **Do not guess prices.** Call `list_models` once per session when the user has not named a model; it returns every model with its price and whether the plan unlocks it. Call `get_account` for the balance, and say so instead of rendering when a generation would clearly exceed it.
- **Enhance rough briefs.** `enhance_prompt` is free; use it on a vague ask and show the user the prompt when it changes the intent.
- **Images**: `generate_image` waits and returns the picture plus a signed link valid thirty minutes; `aspect` from the five ratios at the same price; save into the project right away with `curl -L -o <path> "<url>"` because the link expires. A job id on a slow start means poll `get_image_status`.
- **Video**: asynchronous. `generate_video` waits up to about 45 seconds, then returns a job id; poll `get_video_status` every ten seconds or so; renders take one to five minutes. Name the engine with `model` when the look matters; `seconds` is capped by the plan and snapped to the engine's grid; `reference_image_url` is the first frame on engines with image-to-video.
- **Speech**: `generate_speech` returns MP3; pick a voice from `list_voices`, or `char:<id>` from `list_characters` to speak as one of the user's characters.
- **Prompts**: one flowing paragraph — subject, action, setting, light, lens or camera move, mood; concrete nouns over adjectives; for video, describe the motion and the camera.
- **Policy**: adults only; never request minors or real people without consent; surface eroq's refusal messages as they come.

None of this is magic. It is the difference between an agent that renders a 20-second clip on the most expensive engine because you said « make a video », and one that asks which engine, quotes 45 credits for five seconds on the default, and polls until the file exists.

## A session with the plugin

> **You:** The onboarding screens need illustrations — one per step in `steps.ts`, 4:3, flat pastel style, consistent.
>
> Claude Code reads `steps.ts` (five steps), calls `list_models` and `get_account` (« 1,240 credits; five Krea 2 images are 50 »), runs `enhance_prompt` on the style once and reuses the enhanced style line for each step, calls `generate_image` five times with `aspect: "4:3"`, saves each to `public/onboarding/step-N.webp` with `curl`, and updates `steps.ts` with the paths. « Spent 50 credits, 1,190 remaining. »

Without the skill, the same ask usually gets five separate style guesses and no budget line.

## Plugin, command or CLI

| | `claude mcp add` | Plugin | CLI (`eroq mcp`) |
| --- | --- | --- | --- |
| Tools | Remote server | Remote server | Local server |
| Sign-in | OAuth via `/mcp` | OAuth via `/mcp` | Key in env |
| Skill | No | Yes | No |
| Output | Links + inline images | Links + inline images | Files at paths |
| Best for | Trying it | Daily use | Build steps, CI |

The plugin and the command are the same server; the plugin adds the skill and pins a version. The CLI is a different server, local, that writes files — combine it with the plugin if you want both the skill's judgement and file output, since the skill's advice applies to either.

## Updating

The marketplace entry carries a version; `/plugin update eroq@eroq` when we publish a new one (the skill changes as models and prices do). Validate a local copy with `claude plugin validate` if you fork it.

## FAQ

### What does the plugin add over the one-line command?

The same server, plus a skill that teaches Claude Code how eroq prompts, prices and async video work — so it picks sensible models, quotes credits, and polls clips without being told.

### Do I need an API key?

No — `/mcp` → Authenticate runs the browser sign-in. A key in a header still works for scripted setups.

### Can it save renders into my repo?

The remote server answers with links and inline images; the skill tells Claude Code to `curl` them into the project. For direct file output, use the CLI's local server: `npx -y @eroq/cli mcp`.

### Is the marketplace safe to add?

It is served from eroq.ai over HTTPS and the plugin archive is pinned by SHA-256 in the marketplace file, so Claude Code verifies what it installs.

The [Claude Code page](/plugins/claude-code) has both commands to copy.
