Skip to main content
Your Unified App can be called directly over REST, or selected by another Fused app. This page covers the second option. For a direct call, follow the quickstart.

1. Select the deployed app

Add unified_apps to the config of the SDK or MCP server that will call it. Choose a name for the call, such as customer_lookup, and select the deployed app by name and version:

2. Deploy the calling app

Run plan and apply on that SDK or MCP config:
For an existing SDK or MCP, keep its existing config and add unified_apps, then increment the consumer’s version. For MCP, use kind: mcp, omit SDK-only language, provide the server’s description, and run the same app plan / app apply commands with -f pointing to that MCP config. Selecting the consumer file keeps deployment scoped when the Unified App’s own config is in the same project. Physical services can remain alongside these references; they are optional for a consumer containing only hosted apps. Use the SDK or MCP server’s execution token to call it. You do not copy the Unified App’s token into this config. The Unified App continues to use its own credential bucket.

3. Call the selected app

With your generated SDK client:
Configure FusedSDK with your Engine’s HTTP origin as engineUrl and the SDK execution token as token.
Check the returned status before using output. Calls wait for the hosted action and do not retry automatically.

When you deploy a new version

These selections stay on the exact version you chose. When you switch the Unified App’s traffic, update this config to select that version and publish a new SDK or MCP version. Otherwise, promote the previously selected Unified App version back.

Call from another Unified App

Add the same unified_apps entry to the calling app’s YAML. In its TypeScript, import fused from @fused/unified-app and call:
Check result.status before using result.output. Each app uses its own credentials and execution data. Pass any connected-user reference explicitly in the input.
  • The actor and owner need app.unified_app.use on the selected app, alongside the calling app’s normal permissions.
  • Restricted execution tokens must allow unified_app:customer_lookup.
  • The selected version must be receiving traffic during plan, apply, and execution.
  • Each config can select up to 16 hosted apps. Call names use lowercase letters, digits, and underscores, start with a letter, and cannot be reserved language names or conflict with another call’s _sync method.
  • Execution records belong to the hosted app. Calling it does not grant access to unrelated execution history.
  • Nested calls cannot recurse. A root execution permits eight app levels and 32 nested calls. Each waiting parent occupies a worker slot, so the Engine needs capacity for the whole chain; a child fails immediately when capacity is unavailable.
  • Nested calls are synchronous, are not automatically retried, and remain bounded by parent cancellation and deadlines. Replay uses recorded child responses.