lua integrations connects a third-party service to the agent through Unified.to. A connected integration provisions an MCP server of tools the model can call at once, and can subscribe the agent to the service’s events as integration webhooks.
Verified against lua-cli 3.33.0.
Synopsis
Description
A connection belongs either to the agent (--scope agent, the default and the narrower grant: the credential lives on the agent and dies with it) or to you (--scope user: every private agent you own can use it, including ones you create later, and publishing an agent removes its access). Integration webhooks, --account-label and --hide-sensitive exist at agent scope only; connect refuses them with --scope user before anything else runs, and update --scope user ignores them. convert turns an agent connection into a personal one; there is no way back. At agent scope connect offers only types the agent doesn’t have yet (Integration "<type>" not found or already connected.), so a second account of one type is added as a personal connection with --scope user.
connect and update always finish in the browser: the CLI opens the authorization URL (printing it when it cannot) and waits up to 5 minutes for the callback. connect prompts for every flag it needs when omitted, including --scope, so a --ci run must pass --scope, --integration, --auth-method (when the type supports both), --scopes (OAuth types with configurable scopes) and --account-label. update never asks for the scope: it acts on the agent unless you pass --scope user, and keeps the existing account label. Any other prompt under --ci fails with ✖ error: Interactive prompt required but --ci flag is set. Provide all required flags or arguments. (exit 1); the one exception is the trigger step of connect, whose prompts and validation are reported as ℹ️ Note: Could not fetch available triggers and skipped.
--hide-sensitive hides PII fields from the MCP tools. Its default is false: fields are exposed unless you pass --hide-sensitive true, and non-interactive runs never ask. (The built-in --help text says the default is true; the command behaves as described here.) --json is honored by info, webhooks list and webhooks events; list prints text only.
Some failures print a
❌ line and still exit 0: an authorization that fails or times out, a failed disconnect or convert, an unknown id on disconnect, convert, webhooks delete, pause or resume, and mcp activate or deactivate with an unknown --connection id (a missing --connection exits 2). Read the output, not only $?.Custom MCP servers
A custom MCP server, added by URL from the Tools page or the admin dashboard, is a connection too.list shows it with the agent’s other connections, labelled (lua-cli 3.46.0 and later) Type: Custom MCP server (managed from Tools) (or personal · managed from Tools when it serves only you), with its host, its state, and how many of its tools are on. The state reads Active, Paused, Can't reach the server - check it on the Tools page, Signed out - sign in again on the Tools page, or Credentials rejected - update them on the Tools page. In lua-cli 3.46.0 and later, update and mcp activate|deactivate refuse a custom server with exit 2 before changing anything, the update menu doesn’t offer it, and mcp list leaves it out. disconnect, pause, and resume act on it like on any connection. Edit it or sign in again from the Tools page.
Arguments
Actions
Options
connect
update, convert, disconnect, list, info
webhooks
mcp
Examples
Discover a type, then connect it to the agent with every scope and two integration webhooks.Output
Output
Output
Exit codes
See also
- Connect an integration — the how-to, scope by scope
- Integration events — what an integration webhook delivers to the agent
- Integration MCP servers — the tools a connection provisions
- Add a custom MCP server — servers added by URL from the Tools page
Integrations—Integrations.passthroughfrom codelua triggers— the agent’s own paste-anywhere triggers, a different command

