Service twin · API + UI
Check
Test payroll agents and integrations that onboard workers, run payroll, and coordinate payments and filings.
$ uv tool install blobfish-cli
$ blobfish twin login
$ blobfish twin-runs create --twins check --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 |
|---|---|---|---|
| company | companies | 7 | Employer of record that runs payroll through Check. |
| workplace | workplaces | 8 | Physical work location used for tax jurisdiction assignment. |
| employee | employees | 9 | W-2 employee with an onboarding lifecycle that must complete before payroll. |
| contractor | contractors | 8 | 1099 contractor paid outside the W-2 payroll flow. |
| payroll | payrolls | 9 | Pay run for a company: drafted, approved into pending, processed on payday, then paid. |
| payroll_item | payroll_items | 8 | One employee's earnings line inside a payroll run. |
| tax_filing | tax_filings | 8 | Tax filing/payment obligation Check prepares and files with a jurisdiction. |
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.
employee.onboard_status
complete_onboarding: blocking|needs_attention → completed
payroll.status
approve: draft → pendingreopen: pending → draft
tax_filing.status
file: draft → submitted
Three surfaces, one state
Mount Check 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":["check"],"ttl_minutes":60}'Known limitations
- transcribed from https://docs.checkhq.com/reference; parameter and response schemas simplified
- nested Check resources flattened to top-level collections addressed by *_id filters; employee onboarding completion modeled as an explicit action
- synthetic seeded values