Service twin · API + UI
Resend
Test email agents and applications that send, receive, schedule, and track transactional messages.
$ uv tool install blobfish-cli
$ blobfish twin login
$ blobfish twin-runs create --twins resend --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. This twin runs the captured contract sm--resend rekeyed onto seeded state.
Seeded entities
| Entity | Table | Fields | About |
|---|---|---|---|
| api_key | api_keys | 6 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| audience | audiences | 3 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| audiences_contact | audiences_contacts | 8 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| audiences_contacts_by_audience_id | audiences_contacts_by_audience_ids | 7 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| audiences_contacts_segment | audiences_contacts_segments | 7 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| audiences_contacts_topic | audiences_contacts_topics | 7 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| broadcast | broadcasts | 13 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| broadcasts_send | broadcasts_sends | 3 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| contact_property | contact_properties | 8 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| domain | domains | 8 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| domains_verify | domains_verifies | 3 | Inferred from MCP tool parameters; the tool contract remains the authority. |
emails | 19 | Inferred from MCP tool parameters; the tool contract remains the authority. | |
| emails_attachment | emails_attachments | 7 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| emails_batch | emails_batches | 3 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| emails_cancel | emails_cancels | 3 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| emails_receiving | emails_receivings | 6 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| emails_receiving_attachment | emails_receiving_attachments | 7 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| segment | segments | 8 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| template | templates | 13 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| templates_duplicate | templates_duplicates | 2 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| templates_publish | templates_publishes | 2 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| topic | topics | 7 | Inferred from MCP tool parameters; the tool contract remains the authority. |
Three surfaces, one state
Mount Resend 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:
$ 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":["resend"],"ttl_minutes":60}'Known limitations
This twin mirrors the captured contract sm--resend: 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.