MCP Actions

When a routing rule has action_type: "mcp_action", Supp executes a real action on the connected integration. Here's what each provider does:

OAuth auto-populate: When a provider is connected via OAuth (GitHub, Slack, Linear, Jira, Notion), the routing page automatically shows searchable dropdowns for fields like repository, channel, team, and project — no manual ID copying needed.

linear

Creates an issue on the specified team with intent, message, and conversation context.

action_config fields: team_id, priority (1-4, opt), auto_priority (yes/no), label_ids (opt), assignee_id (opt), project_id (opt), cycle_id (opt), state_id (opt)

github

Creates an issue in the specified repo with intent and message body.

action_config fields: repo (owner/repo), labels (opt, comma-separated), assignees (opt, comma-separated), auto_priority_label (yes/no)

jira

Creates a Jira issue in the specified project.

action_config fields: project_key, issue_type (Task/Bug/Story/Epic), auto_priority (yes/no), labels (opt), components (opt), assignee_account_id (opt)

notion

Creates a page in the specified Notion database.

action_config fields: database_id

slack

Posts a formatted message to the configured Slack channel via bot token or webhook.

action_config fields: channel (e.g. #support-alerts), message_format (rich/plain), mention_group (opt, usergroup ID)

discord

Sends a rich embed to the Discord webhook with intent, confidence, and message.

action_config fields: channel_name (for reference), mention_role_id (opt)

teams

Sends an Adaptive Card to the incoming Teams webhook.

action_config fields: channel_name (for reference), card_style (rich/simple)

zendesk

Creates a ticket in Zendesk with the conversation context.

action_config fields: priority (auto/urgent/high/normal/low), type (incident/problem/question/task), tags (opt), group_id (opt), assignee_id (opt), internal_note (yes/no)

intercom

Tag conversations, assign to teams, add notes, reply, or create tickets.

action_config fields: admin_id, action_type (note/tag/assign/reply/create_ticket), tag_name (opt), assign_to (opt), contact_email (opt)

hubspot

Creates a CRM ticket in HubSpot with pipeline and owner.

action_config fields: priority (auto/HIGH/MEDIUM/LOW), pipeline_id (opt), pipeline_stage (opt), owner_id (opt), auto_associate_contact (yes/no), contact_email (opt)

shopify

Look up orders, check fulfillment, add notes/tags, or search customers.

action_config fields: customer_email, action_type (lookup_orders/fulfillment_status/tag_customer/note_order), customer_tags (opt), order_note (opt)

email

Sends a formatted support email via Resend.

action_config fields: to, include_priority (yes/no)

zapier / custom

POSTs a JSON payload to the webhook URL with event data.

action_config fields: webhook_url (opt override)

Example: Bug report → Linear + Slack

You can chain actions by creating multiple routing rules for the same intent:

bash
# Rule 1: Create a Linear issue
curl -X POST https://api.supp.support/api/routing \
  -H "Content-Type: application/json" \
  -H "Cookie: <session-cookie>" \
  -d '{
    "intent": "bug_report",
    "action_type": "mcp_action",
    "action_config": { "provider": "linear", "category": "technical" },
    "confidence_threshold": 0.85
  }'

# Rule 2: Also notify Slack
curl -X POST https://api.supp.support/api/routing \
  -H "Content-Type: application/json" \
  -H "Cookie: <session-cookie>" \
  -d '{
    "intent": "bug_report",
    "action_type": "mcp_action",
    "action_config": { "provider": "slack", "channel": "#bugs" },
    "confidence_threshold": 0.85
  }'