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 witharga test-runner scenarios import --file scenario.json.
Parameters
The following fields belong directly insideseed_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 nestedreplies 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-emptyblocksarray are accepted even when fallbacktextis blank or whitespace, and the submittedblocksare returned in the response and persisted in conversation history. Posts with both emptytextand emptyblocksstill returnno_text. - Auth methods including
api.test,auth.test,auth.revoke, andauth.teams.list. - OAuth 2.0 authorization code grant through
/oauth/v2/authorizeand/api/oauth.v2.access, plus MCP OAuth aliases at/oauth/v2_user/authorizeand/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_URLto the twin’s/api/base. - Slack MCP Streamable HTTP endpoint at
/mcpwith JSON-RPC 2.0initialize,tools/list, andtools/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.
- 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.
get_twin_catalog, provision_twins, start_url_validation, get_validation_results.
See Scenario seeding for saving, provisioning, and resetting fixtures.
