All twins

Service twin · API + UI

Discord

Test community and support agents that moderate servers, answer users, and coordinate channel workflows.

API + UIcaptured contractREST · MCP · CLI
Terminal
$ uv tool install blobfish-cli
$ blobfish twin login
$ blobfish twin-runs create --twins discord --ttl 60 --wait

What’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. This twin runs the captured contract sm--discord rekeyed onto seeded state.

Operations128
Reads67
Writes61
Entities71
Lifecycles0

Seeded entities

EntityTableFieldsAbout
applicationapplications3Inferred from MCP tool parameters; the tool contract remains the authority.
applications_commandapplications_commands16Inferred from MCP tool parameters; the tool contract remains the authority.
applications_emojiapplications_emojis6Inferred from MCP tool parameters; the tool contract remains the authority.
applications_entitlementapplications_entitlements16Inferred from MCP tool parameters; the tool contract remains the authority.
applications_entitlements_consumeapplications_entitlements_consumes4Inferred from MCP tool parameters; the tool contract remains the authority.
applications_guilds_commandapplications_guilds_commands17Inferred from MCP tool parameters; the tool contract remains the authority.
applications_guilds_commands_permissionapplications_guilds_commands_permissions6Inferred from MCP tool parameters; the tool contract remains the authority.
applications_guilds_commands_permissions_by_guild_idapplications_guilds_commands_permissions_by_guild_ids4Inferred from MCP tool parameters; the tool contract remains the authority.
applications_meapplications_mes2Inferred from MCP tool parameters; the tool contract remains the authority.
applications_role_connections_metadataapplications_role_connections_metadatas3Inferred from MCP tool parameters; the tool contract remains the authority.
channelchannels3Inferred from MCP tool parameters; the tool contract remains the authority.
channels_followerchannels_followers4Inferred from MCP tool parameters; the tool contract remains the authority.
channels_invitechannels_invites3Inferred from MCP tool parameters; the tool contract remains the authority.
channels_messagechannels_messages21Inferred from MCP tool parameters; the tool contract remains the authority.
channels_messages_crosspostchannels_messages_crossposts4Inferred from MCP tool parameters; the tool contract remains the authority.
channels_messages_pinchannels_messages_pins5Inferred from MCP tool parameters; the tool contract remains the authority.
channels_messages_reactionchannels_messages_reactions9Inferred from MCP tool parameters; the tool contract remains the authority.
channels_messages_reactions_by_emoji_namechannels_messages_reactions_by_emoji_names5Inferred from MCP tool parameters; the tool contract remains the authority.
channels_messages_reactions_mechannels_messages_reactions_mes5Inferred from MCP tool parameters; the tool contract remains the authority.
channels_messages_threadchannels_messages_threads7Inferred from MCP tool parameters; the tool contract remains the authority.
channels_polls_answerchannels_polls_answers7Inferred from MCP tool parameters; the tool contract remains the authority.
channels_polls_expirechannels_polls_expires4Inferred from MCP tool parameters; the tool contract remains the authority.
channels_threadchannels_threads3Inferred from MCP tool parameters; the tool contract remains the authority.
channels_thread_memberchannels_thread_members7Inferred from MCP tool parameters; the tool contract remains the authority.
channels_thread_members_mechannels_thread_members_mes3Inferred from MCP tool parameters; the tool contract remains the authority.
channels_threads_archived_publicchannels_threads_archived_publics5Inferred from MCP tool parameters; the tool contract remains the authority.
channels_threads_searchchannels_threads_searches14Inferred from MCP tool parameters; the tool contract remains the authority.
channels_typingchannels_typings3Inferred from MCP tool parameters; the tool contract remains the authority.
channels_users_me_threads_archived_privatechannels_users_me_threads_archived_privates5Inferred from MCP tool parameters; the tool contract remains the authority.
channels_webhookchannels_webhooks5Inferred from MCP tool parameters; the tool contract remains the authority.
gatewaygateways2Inferred from MCP tool parameters; the tool contract remains the authority.
guildguilds4Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_audit_logguilds_audit_logs9Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_banguilds_bans7Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_channelguilds_channels22Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_emojiguilds_emojis7Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_inviteguilds_invites3Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_memberguilds_members12Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_members_by_user_idguilds_members_by_user_ids11Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_members_meguilds_members_mes7Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_members_roleguilds_members_roles5Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_members_searchguilds_members_searches5Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_onboardingguilds_onboardings3Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_previewguilds_previews3Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_regionguilds_regions3Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_roleguilds_roles12Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_roles_member_countguilds_roles_member_counts3Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_scheduled_eventguilds_scheduled_events5Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_scheduled_events_userguilds_scheduled_events_users8Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_soundboard_soundguilds_soundboard_sounds9Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_templateguilds_templates3Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_threads_activeguilds_threads_actives3Inferred from MCP tool parameters; the tool contract remains the authority.
guilds_welcome_screenguilds_welcome_screens3Inferred from MCP tool parameters; the tool contract remains the authority.
inviteinvites5Inferred from MCP tool parameters; the tool contract remains the authority.
oauth2_keyoauth2_keys2Inferred from MCP tool parameters; the tool contract remains the authority.
oauth2_meoauth2_mes2Inferred from MCP tool parameters; the tool contract remains the authority.
soundboard_default_soundsoundboard_default_sounds2Inferred from MCP tool parameters; the tool contract remains the authority.
sticker_packsticker_packs2Inferred from MCP tool parameters; the tool contract remains the authority.
userusers3Inferred from MCP tool parameters; the tool contract remains the authority.
users_meusers_mes2Inferred from MCP tool parameters; the tool contract remains the authority.
users_me_applications_entitlementusers_me_applications_entitlements5Inferred from MCP tool parameters; the tool contract remains the authority.
users_me_channelusers_me_channels5Inferred from MCP tool parameters; the tool contract remains the authority.
users_me_connectionusers_me_connections2Inferred from MCP tool parameters; the tool contract remains the authority.
users_me_guildusers_me_guilds6Inferred from MCP tool parameters; the tool contract remains the authority.
users_me_guilds_memberusers_me_guilds_members3Inferred from MCP tool parameters; the tool contract remains the authority.
voice_regionvoice_regions2Inferred from MCP tool parameters; the tool contract remains the authority.
webhookwebhooks9Inferred from MCP tool parameters; the tool contract remains the authority.
webhooks_by_webhook_idwebhooks_by_webhook_ids6Inferred from MCP tool parameters; the tool contract remains the authority.
webhooks_githubwebhooks_githubs26Inferred from MCP tool parameters; the tool contract remains the authority.
webhooks_messagewebhooks_messages14Inferred from MCP tool parameters; the tool contract remains the authority.
webhooks_slackwebhooks_slacks10Inferred from MCP tool parameters; the tool contract remains the authority.

Three surfaces, one state

Mount Discord 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":["discord"],"ttl_minutes":60}'

Known limitations

This twin mirrors the captured contract sm--discord: its tool surface is the captured server’s, with synthetic seeded values. Operations outside that capture are not mounted — we mount fewer, executable operations rather than stub the rest.