Service twin · API only
Jira
Test engineering agents that triage issues, update sprints, and coordinate delivery workflows.
$ uv tool install blobfish-cli
$ blobfish twin login
$ blobfish twin-runs create --twins jira --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 cx--jira rekeyed onto seeded state.
Seeded entities
| Entity | Table | Fields | About |
|---|---|---|---|
| jira_all_issue_type_scheme | jira_all_issue_type_schemes | 11 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_all_project | jira_all_projects | 18 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_all_statuse | jira_all_statuses | 5 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_all_user | jira_all_users | 7 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_assign_issue | jira_assign_issues | 7 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_attachment | jira_attachments | 7 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_board | jira_boards | 16 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_bulk_issue | jira_bulk_issues | 9 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_comment | jira_comments | 24 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_current_user | jira_current_users | 15 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_issue | jira_issues | 48 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_issue_comment | jira_issue_comments | 13 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_issue_link | jira_issue_links | 11 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_issue_link_type | jira_issue_link_types | 5 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_issue_property | jira_issue_properties | 8 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_issue_resolution | jira_issue_resolutions | 5 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_issue_type | jira_issue_types | 5 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_issue_type_scheme | jira_issue_type_schemes | 10 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_issue_watcher | jira_issue_watchers | 11 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_issue_worklog | jira_issue_worklogs | 13 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_move_issue_to_sprint | jira_move_issue_to_sprints | 8 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_project | jira_projects | 18 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_project_version | jira_project_versions | 7 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_remote_issue_link | jira_remote_issue_links | 7 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_search_for_issues_using_jql | jira_search_for_issues_using_jqls | 17 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_send_notification_for_issue | jira_send_notification_for_issues | 11 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_sprint | jira_sprints | 21 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_transition | jira_transitions | 11 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_transition_issue | jira_transition_issues | 15 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_user | jira_users | 13 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_version | jira_versions | 16 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_vote | jira_votes | 9 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_watcher_from_issue | jira_watcher_from_issues | 7 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_watcher_to_issue | jira_watcher_to_issues | 7 | Inferred from MCP tool parameters; the tool contract remains the authority. |
| jira_worklog | jira_worklogs | 21 | Inferred from MCP tool parameters; the tool contract remains the authority. |
Three surfaces, one state
Mount Jira 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":["jira"],"ttl_minutes":60}'Known limitations
This twin mirrors the captured contract cx--jira: 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.