Input Partials

Saved parameter presets with defaults and enforcement for actions and triggers.

Input Partials

Input partials are saved parameter configurations (presets) that you attach to actions and triggers. They let you pre-fill default values, lock down enforced values that cannot be overridden, and share configurations across your team.

How Partials Work

A partial is a named configuration scoped to a workspace integration alias. It stores:

  • Values — key-value pairs that pre-fill action or trigger inputs
  • Enforced keys — a subset of those values that cannot be overridden at runtime
  • Scope — integration-wide, action-specific, or trigger-specific

When you execute an action or enable a trigger, partials merge into the final input following a defined order.

If a workspace configures the same integration more than once, create partials with workspaceIntegrationId or integrationAlias. Default partials only auto-apply to calls that target the same configured alias.

Merge Order

When an action executes, inputs are merged in this order (each layer overrides the previous):

  1. Input defaults — the integration's built-in default values
  2. Partial values (non-enforced) — your preset values that users can override
  3. Runtime input — the values provided at execution time
  4. Enforced values — your preset values that cannot be overridden

This means enforced keys always win, regardless of what the caller passes.

Creating a Partial

bash
curl -X POST https://api.weavz.io/api/v1/partials \
  -H "Authorization: Bearer wvz_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "workspaceId": "550e8400-e29b-41d4-a716-446655440000",
    "integrationName": "slack",
    "integrationAlias": "slack_bot",
    "actionName": "send_channel_message",
    "name": "General Channel Preset",
    "values": {
      "channel": "C01ABCDEF"
    },
    "enforcedKeys": ["channel"]
  }'

In this example, the channel field is both set as a value and listed in enforcedKeys. This means the channel is always C01ABCDEF and callers cannot override it.

Default Partials

Mark a partial as the default for its scope, and it applies automatically when no explicit partialIds are provided:

bash
curl -X POST https://api.weavz.io/api/v1/partials/{partialId}/set-default \
  -H "Authorization: Bearer wvz_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"isDefault": true}'

Default partials auto-resolve in this order: matching alias-scoped integration-wide default first, then the matching alias-scoped action-specific or trigger-specific default. Up to 2 defaults can stack. To run without defaults, send an explicit empty partialIds array.

Using Partials with Actions

Pass partialIds when executing an action to apply specific partials:

bash
curl -X POST https://api.weavz.io/api/v1/actions/execute \
  -H "Authorization: Bearer wvz_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "integrationName": "slack",
    "actionName": "send_channel_message",
    "input": {
      "text": "Hello from Weavz!"
    },
    "workspaceId": "550e8400-e29b-41d4-a716-446655440000",
    "integrationAlias": "slack_bot",
    "partialIds": ["partial_id_here"]
  }'

Since the partial enforces channel, the caller only needs to provide text. The channel is locked to C01ABCDEF.

MCP Server Behavior

When a partial is assigned to an MCP server tool, enforced keys are automatically removed from the tool's input schema. This means the AI agent never sees or tries to set those fields — they are silently injected at execution time.

This is useful for:

  • Locking down channels — ensure a Slack bot only posts to a specific channel
  • Pre-filling API parameters — set a default model for OpenAI calls
  • Restricting scope — limit which GitHub repo an agent can interact with

For the normal path, create default partials for the workspace integration alias. API calls, SDK calls, Playground, and MCP tools that target the same alias use the same defaults. Assign partialIds directly to MCP tools only for advanced server-local manual tools that should differ from the workspace default behavior.

bash
curl -X POST https://api.weavz.io/api/v1/mcp/servers/{serverId}/tools \
  -H "Authorization: Bearer wvz_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "integrationName": "slack",
    "actionName": "send_channel_message",
    "integrationAlias": "slack_bot",
    "connectionId": "conn_abc",
    "partialIds": ["partial_id_here"]
  }'

Integration-Wide vs Operation-Specific

  • Action-specific partials (actionName set) only apply to that action
  • Trigger-specific partials (triggerName set) only apply to that trigger
  • Integration-wide partials (actionName and triggerName null) apply to all actions and triggers for that configured integration alias

When both exist, the operation-specific partial takes precedence over the integration-wide one.

Next Steps