Monterosa Labs

Monterosa CLI

mic is the command line for the Interaction Cloud. Create test content, copy events between shows and environments, back up and compare project settings, and script the clicks you do by hand in Studio. The same commands run from your terminal, from a CI job, and from Claude.

~ mic
# 1. Install mic and the MCP adapter.
$ curl -fsSL \
    https://assets.monterosa.co/cli/install.sh \
    | bash
  ✓ installed mic 0.17.0

# 2. Point it at your Studio instance.
$ mic auth login \
    --url https://studio.monterosa.cloud
  Saved profile "default" (…4f2a).

# 3. Run a command.
$ mic orgs list
  id       name
  org_7k2  Monterosa
Day to day

What people use it for

Six jobs that take the longest in Studio, each one a command. Every command accepts --json, so the output goes straight into a script.

01

Create test content

One command makes an event, adds one element of every type the project has enabled, publishes it and prints the consumer URL. Use it for a demo, a QA pass, or checking a new FanKit version. mic smoke clean removes what it made.

$ mic smoke run --project $PID
02

Copy an event

Clone an event and all its elements into a new one. mic elements clone-from copies a subset between two events, and clone-group copies a wrapper with its children and rewrites the link between them so the copy still works.

$ mic events clone evt_8h2 --name "Week 13"
03

Back up and compare settings

Pull a project's settings to a file on disk. settings diff shows what changed, key by key, before settings push replaces the blob. mic projects diff compares two projects and tells you which setting is behind the different behaviour.

$ mic projects settings pull $PID --out settings.json
04

Publish and schedule in bulk

Publish every unpublished element on an event, children before wrappers, with --dry-run to see the order first. mic events schedule spaces element start offsets across an event instead of setting each one by hand.

$ mic elements publish-pending --event $EID --dry-run
05

Get the URL you need

Derive the consumer, Studio, feeds and livestats URLs for a project or event, rather than assembling them from the embed settings yourself.

$ mic url consumer --project $PID --event $EID
06

Describe a project as a file

Export a live project to a YAML manifest, keep it in git, and apply it somewhere else. mic plan prints the add and update steps without touching anything. mic apply runs them. It never deletes what the manifest leaves out. This part is early.

$ mic export --project $PID --out project.yaml
Agents and CI

Run it from Claude, or run it at 08:00 with nobody watching

The CLI is the only surface. Everything else calls it, so an agent and a person get the same commands, the same auth and the same result.

  • Tools nobody hand-writes. mic describe emits metadata for every command it exposes: the name, the arguments, the flag types, and which of them are required. The monterosa-mcp adapter runs it at startup and builds one MCP tool per command. In 0.17.0 that is 183 commands across 28 groups.
  • Ship once, every agent picks it up. Add a command, publish the CLI, restart the agent. There is no separate schema to update.
  • Your editor, wired on install. The installer offers to configure Claude Desktop, Claude Code, Gemini CLI and Cursor. Say no to any of them, or set MIC_SKIP_CURSOR=1 and friends for an unattended install.
  • In CI, use a token and a profile. mic auth login --url … --token "$MIC_TOKEN" --profile prod, then any command with --json.

There is also mic interactive, a terminal UI with an agent that calls the same commands. It runs on AWS Bedrock and needs credentials for it, so for now it is a Monterosa engineering tool rather than something you can switch on.

~ ci
# Roll last week's quiz forward, unattended.
$ mic events clone evt_8h2 \
    --name "Week 13" --json
  {"id":"evt_9k4","name":"Week 13"}

$ mic elements apply --event evt_9k4 \
    --file questions.yaml --publish

$ mic url consumer --project $PID \
    --event evt_9k4
  https://apps.monterosa.cloud/fankit/
  v25.1.0/index.html?p=$PID&e=evt_9k4#/
Safety

Lock a profile to what it is allowed to change

Your token can do anything your Studio user can do, including deleting a project. Give each profile an allow-list and the CLI checks it before it sends the request.

~ scope
# Lock this profile to one project.
$ mic auth scope add project $PID

# Or paste a Studio URL and pick the level.
$ mic auth scope add \
    "https://studio…/projects/$PID"

# See what the active profile may touch.
$ mic scope show

# Drop every restriction.
$ mic auth scope clear
  • Reads are never restricted. You can still list and inspect anything your token can see.
  • Writes outside the list fail before the request is sent. Nothing reaches the API, so there is nothing to undo.
  • An agent cannot widen its own scope. mic scope show is readable through MCP. Adding and clearing entries is not: the agent gets an error telling you to run it in your shell.
  • Settings pushes keep a backup. settings push writes the current remote settings to disk before it replaces them, unless you pass --no-backup.
Install

Get mic on your machine

macOS and Linux. You need Node 24 or newer, npm, and a Studio account. The installer downloads public tarballs and installs mic and monterosa-mcp globally. This page describes mic 0.17.0.

~ install
$ curl -fsSL https://assets.monterosa.co/cli/install.sh | bash

# Pin a version instead of taking the latest.
$ MIC_VERSION=0.17.0 curl -fsSL \
    https://assets.monterosa.co/cli/install.sh | bash

# No prompts, for a scripted or CI install.
$ MIC_INSTALL_YES=1 curl -fsSL \
    https://assets.monterosa.co/cli/install.sh | bash

Then log in

mic auth login --url https://yourinstance.monterosa.cloud. It prompts for your bearer token.

Check it worked

mic auth whoami shows the active profile. mic orgs list is the first real call.

Find a command

mic --help, then mic events --help. Every command explains its own flags.

Stay current

mic update upgrades the CLI and the MCP adapter. mic update --check tells you what is available.

Questions about mic?

Tell us what you are trying to automate. We will point you at the command, or say plainly that it does not exist yet.