Concepts
Twin reference
29 twins are mounted on this deployment. Every row is projected from the twin’s own resolved spec — the reference cannot list an operation the runtime does not serve. Click through for entities, guarded lifecycles, and each twin’s known limitations.
| Twin | Kind | Runtime | Ops | Entities | Lifecycles |
|---|---|---|---|---|---|
| Attio | API + UI | captured contract | 34 | 26 | 0 |
| Box | API only | captured contract | 273 | 191 | 0 |
| Check | API + UI | docs-transcribed | 31 | 7 | 3 |
| Datadog | API + UI | spec-grounded | 133 | 26 | 1 |
| Discord | API + UI | captured contract | 128 | 71 | 0 |
| Documenso | API + UI | captured contract | 17 | 13 | 0 |
| Dropbox | API + UI | captured contract | 12 | 9 | 0 |
| GitHub | API + UI | spec-grounded | 1108 | 400 | 0 |
| GitLab | API + UI | spec-grounded | 1108 | 421 | 0 |
| Gmail | API + UI | spec-grounded | 79 | 41 | 0 |
| Google Calendar | API + UI | spec-grounded | 38 | 11 | 0 |
| Google Docs | API + UI | spec-grounded | 4 | 3 | 0 |
| Google Drive | API + UI | spec-grounded | 64 | 40 | 0 |
| Google Sheets | API + UI | spec-grounded | 18 | 16 | 0 |
| Google Workspace | API only | docs-transcribed | 34 | 7 | 1 |
| HubSpot | API only | spec-grounded | 28 | 7 | 3 |
| Jira | API only | captured contract | 46 | 35 | 0 |
| Linear | API only | captured contract | 25 | 12 | 0 |
| API + UI | docs-transcribed | 29 | 6 | 2 | |
| Notion | API + UI | spec-grounded | 24 | 14 | 0 |
| Outlook | API + UI | Roadmap | — | — | — |
| QuickBooks | API + UI | captured contract | 18 | 11 | 0 |
| Resend | API + UI | captured contract | 65 | 22 | 0 |
| Salesforce | API only | domain twin | 52 | 9 | 6 |
| Slack | API + UI | spec-grounded | 174 | 61 | 0 |
| Stripe | API + UI | spec-grounded | 587 | 203 | 0 |
| Trolley | API + UI | docs-transcribed | 51 | 10 | 5 |
| Twilio | API only | Roadmap | — | — | — |
| Unified | API only | docs-transcribed | 28 | 6 | 2 |
| Unstructured | API only | docs-transcribed | 26 | 6 | 2 |
| Waterfall | API only | domain twin | 25 | 5 | 1 |
Runtime rungs: first-party IR (spec-grounded, battery- proven; tier badges captured API / docs-transcribed / domain twin / spec-grounded) and captured contract (a pinned captured MCP server rekeyed onto seeded state). See Digital twins for the ladder.
Platform MCP tools
Every twin above can be discovered and provisioned from a coding agent through the platform MCP server at /api/v1/twin/mcp: get_twin_catalog lists these ids (no key), provision_twins starts an environment from them, and the rest of the table drives it. The rows are rendered from the registry the server serves.
| Tool | Arguments | Key | Returns |
|---|---|---|---|
get_twin_catalog | — | none | plane, twins[] {id, slug, name, description, surface, status, mounted, provisionable, runtime{source, operations, entities}}, counts |
provision_twins | twins: string[], ttl_minutes?: integer, name?: string, scenario_id?: string, scenario_prompt?: string | bf_ key | env_id, status, plane, name, world_id, services, mounted_services[], scenario_rows?, routing{console_url, gateway_url, health_url, world_mcp_url, sessions_url, services[]{mcp_url, rest_base_url, …}, mcp_config}, links, next |
get_twin_environment | env_id: string | bf_ key | the environment record + status, lease_expired, links, and gateway{services[]{mcp_url, rest_base_url, tools[]}, sessions_url, examples{curl, python, typescript}} |
list_twin_environments | limit?: integer | bf_ key | plane, environments[] {env_id, name, status, services, expires_at, lease_expired, mcp_path, …}, count |
extend_twin_environment | env_id: string, ttl_minutes: integer | bf_ key | ok, env_id, expires_at |
teardown_twin_environment | env_id: string | bf_ key | ok, env_id, detail |
check_twin_health | env_id: string | bf_ key | ok, env_id, plane, status, checks[] {name, ok, detail}, latency_ms, checked_at, http_status (200 | 503) |
list_twin_tasks | env_id: string | bf_ key | env_id, plane, world_id, source (world_tasks | minted_programmatic), seed, count, tasks[] {task_id, instruction, difficulty, kind, grades[], assertions}, rejected_count, detail, links |
run_model_on_twin | env_id: string, model?: string, prompt?: string, task_id?: string, task_ids?: string[], max_tasks?: integer, max_steps?: integer, provider?: string, base_url?: string | bf_ key | run_id, env_id, plane, model{provider, model, label, credential_source}, status, finish, steps[], final_answer, tool_calls, failed_tool_calls, usage, session_id, error?, links; graded runs add task_id, task_instruction, score, passed, verifier{kind, detail, assertions_passed, assertions_total, failed_conditions}; task_ids answers the batch {batch_id, runs[], skipped[], aggregate} |
list_scenarios | twin?: string | bf_ key | plane, scenarios[] {scenario_id, name, twins, seed_config | prompt, tags, captured_from?, created_at}, count |
list_preset_scenarios | twin?: string | bf_ key | presets[] {scenario_id, name, category, description, services, seeded_entities, seed_rows, seed_config}, count, revision |
create_scenario | name: string, twins: string[], seed_config?: object, prompt?: string, description?: string, tags?: string[] | bf_ key | scenario_id, name, twins, seed_config, source_prompt?, synthesis?, plane, detail, links{self, export, apply} |
save_scenario_from_twin | env_id: string, name: string, description?: string, tags?: string[] | bf_ key | scenario_id, twins, seed_config, captured_from{env_id, world_id, session_id?}, capture{captured_rows, skipped_modified, skipped_tables}, detail, links |