Agent Skills

Agent Skills

A Claude Code plugin that teaches your agent the right order of RiffAds calls.

Read as Markdown

Agent Skills: not distributed yet

Everything on this page is built and works against the live API. The package itself is not published yet, so the install command below will not resolve until it is. The REST API and the MCP server are open today.

The riffads plugin gives Claude Code the RiffAds MCP tools plus a written procedure: look up, estimate, quote, submit, follow, hand over the file. No code, no new capability.

Install

Inside Claude Code
/plugin marketplace add riffads-ai/skills
/plugin install riffads@riffads
  • riffads@riffads is <plugin>@<marketplace>. The repo is its own marketplace.
  • Claude Code only. Other clients get the same tools, without the procedure: connect a client.
  • No API key. The plugin adds the MCP server, and you sign in in a browser.

The plugin ships this .mcp.json:

.mcp.json
{
  "mcpServers": {
    "riffads": {
      "type": "http",
      "url": "https://mcp.riffads.com"
    }
  }
}

Not live for you yet? Add the server by hand. You get all 17 tools, just not the procedure:

Terminal
claude mcp add --transport http riffads https://mcp.riffads.com

First run

Sign in

The first tool call opens a browser. Sign in and approve.

Pick a workspace (only if you have several)

Until you pick, every call refuses with connection_not_configured. Pick at app.riffads.com/connections.

Just ask

No command to type. A skill loads when your request matches:

  • "make me an ad"
  • "what would this cost in RiffAds"
  • "give me four variants of this image"
  • "the same script with three different actors"

Check it worked: ask "What are you connected to?". The agent calls riffads_ping and names the workspace.

The three skills

SkillUse it forLoads on
cost-aware-generationAny single generation, including talking actor ads. The other two build on it."make me an ad", "generate a talking actor video", "what would this cost in RiffAds", "check on the RiffAds generation from earlier"
batch-image-variantsUp to 4 takes of one image or video config, read back with get_batch."give me four variants of this image", "some options for this product shot"
batch-actor-variantsOne script, several actors, through a workflow template."the same script with three different actors", "which actor reads this script best", "run a RiffAds workflow"

All three can start paid work. Only the short descriptions load each session. The full procedure loads when a skill runs.

How the agent behaves

Free calls first. Never submits to find out a price.

#ToolWhy
1riffads_pingWhich workspace, whether it may spend. Once per conversation
2get_credit_balanceStops early if nothing can be spent
3list_capabilitiesOnly if the capability id is unknown
4get_capability_schemaBuilds a valid config
5estimate_generationThe number to quote
6submit_generationOnly after you agree to the quote

Quotes before spending. Tells you the number and waits for a yes. Sends max_credits of at least ceil(estimate * 1.1), never a big round number.

Follows the job itself. Calls wait_for_generation until still_running is false. You do not have to ask "is it done?".

Hands over the file fast. Links last about 10 minutes. Expired links get refreshed with get_generation.

Respects retryable. false: never resends, explains or changes the request. true: at most 2 more tries, honouring retry_after_seconds. moderation_blocked is never reworded around.

Talking actor = two generations. tts first, then generate_talking_actor with approved_voice_generation_id. Quotes both up front.

Several actors = a workflow. Starts with list_templates (node ids cannot be guessed), sets max_credits for every step, polls get_workflow_run about every 30 seconds.

Uploads honestly. create_upload, one PUT, finalize_upload, and uses the asset only after usable: true. If it cannot make the PUT, it says so.

Never says posted, published or shared. Never says finished before the job ends. Never invents an actor id, voice id, capability id or number.

Guidance, not enforcement

The server enforces every rule on every call, plugin or not: moderation, max_credits, workspace spend caps, one agent submission at a time. An agent that skips the procedure gets refused, not overcharged.

Every tool and argument: MCP tools. Every refusal code: errors.

On this page