Skip to main content
Use slack in twins and put this configuration under seed_config.slack. Slack workspace with channels, users, messages, and workspace-level settings.

Example seed

This is the complete Scenario request body for creating a Scenario. You can also import it with arga test-runner scenarios import --file scenario.json.

Parameters

The following fields belong directly inside seed_config.slack. Required nested fields are marked in their tables. Provider-native objects can contain service-specific fields beyond the representative record shapes below.

Seeding behavior

Use nested replies for threads. Imported timestamps use source_ts; flat thread_ts values reference those source timestamps. Each DM users list includes the opener and every counterpart (2-9 distinct aliases). Message/reaction authors must be participants. Explicit token scopes are preserved after seeding. Supply event callback URLs only when you have a recipient endpoint for the fixture.

Resource fields

These tables describe the record shapes used by the example. Keep native field names and casing. Map keys such as property names, IDs, and metadata keys are supplied by your fixture.

channels[]

channels[].messages[]

channels[].messages[].reactions[]

channels[].messages[].replies[]

direct_messages[]

direct_messages[].messages[]

users[]

canvases[]

tokens[]

API coverage and limitations

Twin name: slack Supports
  • Slack Web API methods for conversations, channels, messages, scheduled messages, users, reactions, pins, bookmarks, do-not-disturb, modal views, direct messages, and files.
  • Block Kit messages on chat.postMessage: requests with a non-empty blocks array are accepted even when fallback text is blank or whitespace, and the submitted blocks are returned in the response and persisted in conversation history. Posts with both empty text and empty blocks still return no_text.
  • Auth methods including api.test, auth.test, auth.revoke, and auth.teams.list.
  • OAuth 2.0 authorization code grant through /oauth/v2/authorize and /api/oauth.v2.access, plus MCP OAuth aliases at /oauth/v2_user/authorize and /api/oauth.v2.user.access.
  • Bot, user, and enterprise-style tokens, method-level OAuth scope enforcement, configurable token scopes, and missing-scope errors.
  • File uploads, external upload completion, downloadable files, file-share events, workspace tier constraints, storage quotas, rate-limit simulation, event delivery, replay, and admin inspection.
  • Slack CLI app management surface including manifest validate/create/update/export, app status, developer install/uninstall, app delete, connections open, hosted package upload placeholders, hosted environment variables (add/list/remove), and Slack CLI secondary API families covering activities, auth tickets and token rotation, app approvals, external auth, datastores, workflow triggers, function permissions, collaborators, icons, certified installs, and developer sandboxes. Point the Slack CLI at the twin by setting SLACK_API_URL to the twin’s /api/ base.
  • Slack MCP Streamable HTTP endpoint at /mcp with JSON-RPC 2.0 initialize, tools/list, and tools/call, OAuth protected resource metadata at /.well-known/oauth-protected-resource/mcp, authorization server metadata at /.well-known/oauth-authorization-server, and Slack-shaped MCP tools (slack_search_messages, slack_search_messages_and_files, slack_search_public_and_private, slack_search_public, slack_search_files, slack_search_users, slack_search_channels, slack_list_channels, slack_read_channel, slack_send_message, slack_schedule_message, slack_send_message_draft, slack_read_thread, slack_list_users, slack_get_user, slack_read_user_profile, slack_create_canvas, slack_update_canvas, slack_read_canvas) that share state with the Web API surface.
Known limitations
  • Channels start empty unless seeded or created through conversations.create.
  • File upload limits and workspace features are controlled by the twin’s configured tier and constraints, not by a live Slack workspace.
  • The REST, OAuth, Slack CLI, and Slack MCP surfaces are the fidelity targets; websocket/Socket Mode behavior is not described as primary support here.
  • Hosted package upload endpoints (apps.hosted.generatePresignedPost, apps.hosted.upload) accept the CLI lifecycle but do not execute hosted runtimes.
MCP tools: get_twin_catalog, provision_twins, start_url_validation, get_validation_results. See Scenario seeding for saving, provisioning, and resetting fixtures.