All twins

Service twin · API only

Waterfall

Test revenue and GTM agents that find prospects, enrich contacts and companies, and verify work emails.

API onlydomain twinREST · MCP · CLI
Terminal
$ uv tool install blobfish-cli
$ blobfish twin login
$ blobfish twin-runs create --twins waterfall --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.

Operations25
Reads11
Writes14
Entities5
Lifecycles1

Seeded entities

EntityTableFieldsAbout
companycompanies7Target account enriched with firmographics for GTM prospecting.
prospect_listprospect_lists6Saved segment of prospects targeted by one campaign or outbound motion.
prospectprospects10Contact-level prospect on a list, enriched with role, persona, and work email.
enrichment_jobenrichment_jobs8Waterfall enrichment run over a prospect list, cascading through data providers until a match.
email_verificationemail_verifications9Deliverability verdict for a prospect's work email: valid, risky, invalid, or unknown.

Guarded lifecycles

These state machines are enforced, not decorative: an action whose fromstate doesn’t match is rejected the way the production service rejects it.

enrichment_job.status

queued → running → completed → failed → canceled
  • run: queued running
  • cancel: queued|running canceled
  • complete: running completed
  • retry: failed queued

Three surfaces, one state

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

Known limitations