Service twin · API + UI
Slack
Test workplace agents that answer questions, coordinate teams, and act across channels and threads.
API + UIspec-groundedREST · MCP · CLI
Terminal
$ uv tool install blobfish-cli
$ blobfish twin login
$ blobfish twin-runs create --twins slack --ttl 60 --waitWhat’s inside
A deterministic, seeded, resettable replica: every operation below executes real state transitions against the twin’s own SQLite state — reads are hash-invariant, writes produce inspectable diffs, and reset restores the seed baseline.
Seeded entities
| Entity | Table | Fields | About |
|---|---|---|---|
| admin_app | admin_apps | 5 | Inferred from operation parameters (spec has no named schema). |
| admin_apps_approved | admin_apps_approveds | 2 | Inferred from operation parameters (spec has no named schema). |
| admin_apps_request | admin_apps_requests | 2 | Inferred from operation parameters (spec has no named schema). |
| admin_apps_restricted | admin_apps_restricteds | 2 | Inferred from operation parameters (spec has no named schema). |
| admin_conversation | admin_conversations | 13 | Inferred from operation parameters (spec has no named schema). |
| admin_conversations_ekm | admin_conversations_ekms | 2 | Inferred from operation parameters (spec has no named schema). |
| admin_conversations_restrict_access | admin_conversations_restrict_accesses | 6 | Inferred from operation parameters (spec has no named schema). |
| admin_emoji | admin_emojis | 7 | Inferred from operation parameters (spec has no named schema). |
| admin_invite_request | admin_invite_requests | 4 | Inferred from operation parameters (spec has no named schema). |
| admin_invite_requests_approved | admin_invite_requests_approveds | 2 | Inferred from operation parameters (spec has no named schema). |
| admin_invite_requests_denied | admin_invite_requests_denieds | 2 | Inferred from operation parameters (spec has no named schema). |
| admin_team | admin_teams | 6 | Inferred from operation parameters (spec has no named schema). |
| admin_teams_admin | admin_teams_admins | 2 | Inferred from operation parameters (spec has no named schema). |
| admin_teams_owner | admin_teams_owners | 2 | Inferred from operation parameters (spec has no named schema). |
| admin_teams_setting | admin_teams_settings | 9 | Inferred from operation parameters (spec has no named schema). |
| admin_user | admin_users | 13 | Inferred from operation parameters (spec has no named schema). |
| admin_usergroup | admin_usergroups | 7 | Inferred from operation parameters (spec has no named schema). |
| admin_users_session | admin_users_sessions | 7 | Inferred from operation parameters (spec has no named schema). |
| api | apis | 2 | Inferred from operation parameters (spec has no named schema). |
| app | apps | 2 | Inferred from operation parameters (spec has no named schema). |
| apps_event_authorization | apps_event_authorizations | 2 | Inferred from operation parameters (spec has no named schema). |
| apps_permission | apps_permissions | 2 | Inferred from operation parameters (spec has no named schema). |
| apps_permissions_resource | apps_permissions_resources | 2 | Inferred from operation parameters (spec has no named schema). |
| apps_permissions_scope | apps_permissions_scopes | 2 | Inferred from operation parameters (spec has no named schema). |
| apps_permissions_user | apps_permissions_users | 2 | Inferred from operation parameters (spec has no named schema). |
| auth | auths | 2 | Inferred from operation parameters (spec has no named schema). |
| bot | bots | 2 | Inferred from operation parameters (spec has no named schema). |
| bot_profile | bot_profiles | 7 | |
| call | calls | 11 | Inferred from operation parameters (spec has no named schema). |
| calls_participant | calls_participants | 3 | Inferred from operation parameters (spec has no named schema). |
| channel | channels | 32 | |
| comment | comments | 11 | |
| dialog | dialogs | 2 | Inferred from operation parameters (spec has no named schema). |
| dnd_status | dnd_statuses | 4 | Inferred from operation parameters (spec has no named schema). |
| emoji | emojis | 2 | Inferred from operation parameters (spec has no named schema). |
| enterprise_user | enterprise_users | 6 | |
| external_org_migration | external_org_migrations | 3 | |
| file | files | 48 | |
| icon | icons | 9 | |
| message | messages | 41 | |
| migration | migrations | 2 | Inferred from operation parameters (spec has no named schema). |
| oauth | oauths | 2 | Inferred from operation parameters (spec has no named schema). |
| oauth_v2 | oauth_v2s | 2 | Inferred from operation parameters (spec has no named schema). |
| paging | pagings | 7 | |
| pin | pins | 4 | Inferred from operation parameters (spec has no named schema). |
| primary_owner | primary_owners | 2 | |
| reaction | reactions | 4 | |
| reminder | reminders | 7 | |
| resource | resources | 4 | |
| rtm | rtms | 2 | Inferred from operation parameters (spec has no named schema). |
| star | stars | 6 | Inferred from operation parameters (spec has no named schema). |
| subteam | subteams | 21 | |
| team | teams | 29 | |
| team_profile_field | team_profile_fields | 9 | |
| team_profile_field_option | team_profile_field_options | 5 | |
| user | users | 12 | Inferred from operation parameters (spec has no named schema). |
| user_profile | user_profiles | 44 | |
| user_profile_short | user_profile_shorts | 12 | |
| usergroup | usergroups | 9 | Inferred from operation parameters (spec has no named schema). |
| view | views | 2 | Inferred from operation parameters (spec has no named schema). |
| workflow | workflows | 2 | Inferred from operation parameters (spec has no named schema). |
Three surfaces, one state
Mount Slack in a twin environment and the same seeded state serves vendor-shaped REST operations, an MCP endpoint for tool calling, and a generated bf-twin CLI — with copy-on-write sessions per rollout and a one-call reset to the seed baseline. Prefer raw HTTP? The same create works with curl:
API
$ curl -sS -X POST https://blobfish.ai/api/v1/twin/environments \
-H "X-API-Key: $BLOBFISH_API_KEY" -H "Content-Type: application/json" \
-d '{"services":["slack"],"ttl_minutes":60}'Known limitations
Spec-grounded surface with synthetic seeded values; operations outside the spec are not mounted.