Emits

Docs

The Agent Plugin

The Agent Plugin gives an agent a place to put the HTML it just wrote. It is an Agent Plugins 1.0.0 bundle (a plugin.json carrying identity, an mcp.json describing the MCP server, and one skill), portable across ChatGPT, Codex, Cursor, Copilot, Kiro, and VS Code. Claude Code reads the same three pieces under different names, so the bundle also carries them in Claude's layout; the two manifests are held equal on every build, and the skill is shared rather than duplicated.

What it gives an agent

The four tools: publish, update, list, unpublish. publish takes the HTML as a string rather than a path, so a page the agent just composed reaches a live URL in one tool call, no temp file in between.

The skill is the other half: it tells an agent that Emits exists, when reaching for it is the right move, and how to fall back to the CLI in a client that loaded the skill but not the server.

The bundle wires up the local stdio server. The same four tools are also hosted at https://api.emits.app/mcp for clients that cannot launch a subprocess (see MCP).

Install

Claude Code

claude plugin marketplace add raymond-UI/emits-plugin
claude plugin install emits@mzed

Any other client

Point the client's MCP configuration at the CLI's server:

{
  "mcpServers": {
    "emits": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@mzedstudio/emits-cli", "mcp"]
    }
  }
}

Then log in once so the server has a credential to publish with:

npx -y @mzedstudio/emits-cli login

A client that cannot launch a subprocess

Use the remote server at https://api.emits.app/mcp. There is no login step: the client registers itself, sends its human to a browser consent screen, and receives a scoped OAuth token: pages:read covers list, and pages:write covers the other three tools. The handshake is described in MCP.

Auth

The plugin ships no credentials and hardcodes no token. The local MCP server reads the same stored credential the CLI writes, so emit login once serves both, and tokens stay on your machine. See authentication for the model behind the tokens themselves.

Source

The plugin is generated from the CLI's own skill renderer (the same document emit skill prints), so the plugin and the CLI cannot describe the product differently. Every build validates the bundle against the vendored Agent Plugins 1.0.0 schemas.