Describe the capabilities you need
Use prompt to create an MCP app, update an existing local config, or draft a sequential Unified Operation for review.
Author and deploy
--service accepts comma-separated selectors or repeated flags. Use the canonical <service>@<version> form when the server must select one exact immutable service version.
For each service, All operations is highlighted by default. Press Enter to expose the complete service, or open Choose operations… to search by operation ID, method, path, summary, or tag. The example below assumes you accepted all operations for both services.
Init enables any missing service after one combined confirmation under a separate workspace receipt. It builds and validates the MCP candidate in memory, then plans it before creating .fused/mcps/support-agent.yaml. A successful plan creates the file atomically; init then applies the MCP server and prints its connection details. If the MCP plan fails, no app config or app receipt is created, though a completed workspace activation remains applied. MCP planning never changes credentials, and missing values do not block publication. The first affected tool call stops before contacting the provider and returns the exact safe secret set command.
The resulting config is durable desired state:
description summarizes what the server helps an agent accomplish in one to three concise sentences. Keep operation IDs out of this overview; the agent discovers exact calls later through search_docs. In a terminal, init prompts when you omit it. With --no-input, pass it explicitly.
Each service resolves credentials through its own bucket: override when set, otherwise the top-level bucket:. A local ${bucket.auth...} reference joins services in the same bucket. A managed ${fused.bucket.auth...} reference selects a Fused Managed App while keeping user connections in the selected bucket.
Use fused-cli mcp list whenever you need to recover the stable and pinned endpoints after initialization.
Flags
fused-cli init --mcp
--language is SDK-only. An MCP server is a runtime, not a generated package.
Init also resolves server-template variables for the operations you selected and writes the matching server_variable injections, reporting a count of what it generated. The behaviour is identical to the SDK side — how init fills in routing.
Omit the mode flags in a terminal to choose between SDK, API, and MCP interactively. With --no-input, pass --mcp, --description, and an explicit --operation or --select-all for every service.
fused-cli extend
Add another service or operation without repeating --mcp:
extend reads .fused/mcps/support-agent.yaml, infers MCP mode, and updates that same file. An idempotent repeat keeps its version. A real change to a stable SemVer version advances to the next minor version and is shown in terminal confirmation; the same inference works with --no-input. Use --version to override the inferred successor. Prerelease and non-SemVer versions require an explicit successor.
mcp plan
MCP planning never mutates credentials. It reports missing entries as readiness metadata and still creates a valid plan. By contrast, an SDK plan in a terminal can offer to store missing credentials securely and retry once; declining also keeps the valid plan. Use
mcp validate only when you need an offline-only check.
mcp apply
--download and --json are SDK-only. An MCP server has no package to download.
MCP-specific constraints
- Explicit webhook selection. Set
webhook_attachmentand a per-servicewebhookslist to expose provider events as MCP resources. Event-only services are supported.webhooks_select_all: trueis rejected. See receive MCP events for client requirements, live notifications, and retained payload reads. - Unified operations require explicit targets. A top-level
unified_operationsmap uses the same bindings, dependencies, rollback, mapping, and output contract as an SDK. Each operation authorized by the execution token appears insearch_docsand runs through the existingexecutetool withawait call(operationId, {input, targets, selectors?, pagination?, idempotencyKey?}).targetsis always required, must be dependency-closed, and never defaults to every declared binding. See declare a unified operation and call a unified operation. - No implicit latest app. Init may default a provider version while writing the config, but MCP app references and runtime promotions always resolve one exact immutable app version.
Versions
One MCP name has one stable MCP ID shared by every version, and each explicit version has its own immutable Version ID. Multiple versions can run at once. Applying a version explicitly promotes it for new sessions on the stable MCP URL. Applying an older version again explicitly rolls the stable target back. Existing sessions continue on the immutable version they resolved during initialization. The CLI displays both endpoints after apply and inmcp list:
Applying identical content to the same version is a no-op. Changing its description, operation, auth, or injection scope returns
app_version_immutable — publish a new version instead.
Deactivating the promoted version makes the stable URL unavailable. The Engine does not guess another sibling version; explicitly apply the version you want to promote next.
Deactivating
Connect an agent with a scoped token
Bind a token to the right connected user and place it in the MCP client.