Integration Aliases

Configure the same integration multiple times in a workspace and target each instance with aliases.

Integration aliases let you add the same integration to a workspace multiple times, each with its own connection strategy, default connection, enabled actions, and identity. This is useful when you need separate configured instances for the same service, such as an office Slack workspace and a customer-context Slack account.

The naming model is:

PrimitiveWhere it is setWhere it is used
integrationNameIntegration catalogBase app slug, such as slack
aliasWorkspace integration setupStable configured instance name agents see, such as office_slack
integrationAliasExecution, partials, dynamic properties, MCP toolsSelector field for the same alias concept
workspaceIntegrationIdWorkspace integration responseExact UUID selector when your backend has it

MCP servers sync workspace integrations automatically. Manual MCP tool aliases are still available for server-specific overrides, but the workspace integration alias is the primary primitive. In Code Mode, the alias becomes weavz.<alias>; in Tool Mode, it becomes the {alias}__{action} tool prefix.

Use Cases

  • Slack Bot vs Useroffice_slack for automated messages, customer_slack for user-context messages
  • GitHub Org vs Personalwork_github for work repos, personal_github for personal repos
  • Multiple Google Accountsmarketing_google and engineering_google with different OAuth connections
  • Staging vs Productionairtable_staging and airtable_prod pointing to different bases

Creating Aliased Workspace Integrations

1

Open your workspace

Navigate to the workspace that will own the configured integrations.

2

Add a workspace integration

Open Integrations and select the integration, such as Slack.

3

Set the alias

In the Alias field, enter a custom name like office_slack. This becomes the integrationAlias used by actions, partials, dynamic properties, and MCP tools.

4

Choose a connection

Select the connection to use for this alias (e.g., your bot token connection).

5

Repeat for additional aliases

Add the same integration again with a different alias, such as customer_slack, and a different connection strategy.

Full workspace-integration fields are in the Workspace Integrations API. Omit alias to use the integration name, omit enabledActions to expose all actions, and use displayName, settings, or sortOrder when those should affect dashboard, MCP, or generated surfaces.

Naming Rules

Aliases must follow these rules:

  • Format: lowercase letters, numbers, hyphens, and underscores only (/^[a-z][a-z0-9_-]*$/)
  • Length: maximum 64 characters
  • Must start with a lowercase letter
  • Consistent mapping: each alias in a workspace should represent one configured integration instance with a clear purpose

Valid examples: office_slack, support_slack_bot, customer_gmail, billing_stripe, work_github

Avoid vague aliases such as default, prod, or slack2. They work syntactically, but agents have less context when a workspace contains more than one configured account. Prefer underscores in examples because they stay readable in both JavaScript namespaces and MCP tool names.

Invalid examples: Slack_Bot (uppercase), 123slack (starts with number), slack bot (spaces)

Tool Naming with Aliases

In TOOLS mode, tool names use the alias instead of the integration name:

AliasActionTool Name
office_slacksend_channel_messageoffice_slack__send_channel_message
customer_slacksend_channel_messagecustomer_slack__send_channel_message
github_workcreate_issuegithub_work__create_issue

Without an alias, the tool name defaults to using the integration name (e.g., slack__send_channel_message).

Code Mode with Aliases

In CODE mode, aliases create separate namespaces under weavz.*:

javascript
// With aliases, each has its own namespace
await weavz.office_slack.send_channel_message({
  channel: '#alerts',
  text: 'Automated alert!',
})
 
await weavz.customer_slack.send_channel_message({
  channel: '#general',
  text: 'Message from user context',
})

The weavz_read_api tool returns separate TypeScript declarations for each alias. When an agent needs more than one alias, it can request them together with aliases: [...]:

text
AI Agent calls: weavz_read_api({ alias: "office_slack" })
 
Returns:
  declare namespace weavz {
    namespace office_slack {
      function send_channel_message(input: {
        channel: string;
        text: string;
      }): Promise<{ ok: boolean }>;
    }
  }
text
AI Agent calls: weavz_read_api({ aliases: ["office_slack", "customer_slack"] })

Alias Conflicts

Within a workspace, an alias should identify exactly one configured integration instance. Creating the same alias twice, or using one alias for two different base integrations, is rejected.

For advanced manual MCP tools, server-local aliases follow the same principle. If you try to add a manual tool with an alias already associated with a different integration on the same server, you get a 409 ALIAS_CONFLICT error:

json
{
  "error": "Alias 'office_slack' is already associated with integration 'slack' on this server",
  "code": "ALIAS_CONFLICT"
}

This prevents confusion: one alias should map to one configured integration in a workspace, and one integration per server when you use manual tool overrides.

Default Behavior

When no custom alias is provided for a workspace integration, the integration name itself is used as the alias. That means slack produces slack__send_channel_message in Tool Mode and weavz.slack in Code Mode.