B3

B3 Agent Runs API

The agent-runs API from B3 — 4 operation(s) for agent-runs.

Operations 4

POST /v1/agent-runs Start an agent run
GET /v1/agent-runs/agents List available agent types
GET /v1/agent-runs/artifacts List a conversation's app artifacts
GET /v1/agent-runs/{id} Get an agent run

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/b3-agent-runs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

b3-agent-runs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Workflow management API for B3OS
  title: B3OS Workflow Agent Runs API
  version: '1.0'
tags:
- name: agent-runs
paths:
  /v1/agent-runs:
    post:
      description: 'Spawns a first-party containerized agent (e.g. the workflow-builder

        deep-agent) on the runtime worker. The org + user are taken from the

        authenticated request; the server mints the worker session.'
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - type: object
              - $ref: '#/components/schemas/StartAgentRunParams'
                summary: body
                description: Agent run request
        description: Agent run request
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/data'
                properties:
                  code:
                    type: integer
                  data: {}
                  message:
                    type: string
                  requestId:
                    type: string
                type: object
          description: OK
      security:
      - BearerAuth: []
      summary: Start an agent run
      tags:
      - agent-runs
  /v1/agent-runs/agents:
    get:
      description: 'Returns the enabled first-party agents the deep-agent runtime can

        run. Each item''s `agentType` is the value to pass as

        StartAgentRunParams.agentType. Use this to discover what''s

        available before starting a run.'
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/data'
                properties:
                  code:
                    type: integer
                  data: {}
                  message:
                    type: string
                  requestId:
                    type: string
                type: object
          description: OK
      security:
      - BearerAuth: []
      summary: List available agent types
      tags:
      - agent-runs
  /v1/agent-runs/artifacts:
    get:
      description: 'Returns the durable list of served web-app artifacts built by

        completed app-builder runs in the given Caddie conversation. The

        organization is taken from the authenticated request; the

        conversation is scoped to it. Each item carries the run id and the

        absolute, browser-openable served URL.'
      parameters:
      - description: Conversation ID
        in: query
        name: conversationId
        required: true
        schema:
          type: string
      - description: Max items to return (default 20, max 100)
        in: query
        name: limit
        schema:
          type: integer
      - description: Items to skip (default 0)
        in: query
        name: offset
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/data'
                properties:
                  code:
                    type: integer
                  data: {}
                  message:
                    type: string
                  requestId:
                    type: string
                type: object
          description: OK
      security:
      - BearerAuth: []
      summary: List a conversation's app artifacts
      tags:
      - agent-runs
  /v1/agent-runs/{id}:
    get:
      description: 'Returns the run''s status plus the append-only event log rows after

        the `since` sequence number. Poll this to stream a run''s progress.'
      parameters:
      - description: Run ID
        in: path
        name: id
        required: true
        schema:
          type: string
      - description: Return events with seq greater than this (default 0)
        in: query
        name: since
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/data'
                properties:
                  code:
                    type: integer
                  data: {}
                  message:
                    type: string
                  requestId:
                    type: string
                type: object
          description: OK
      security:
      - BearerAuth: []
      summary: Get an agent run
      tags:
      - agent-runs
components:
  schemas:
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.CommentReply:
      properties:
        createdAt:
          type: string
        createdBy:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.StickyNoteUser'
        id:
          type: string
        text:
          type: string
        updatedAt:
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.StickyNoteSize:
      properties:
        height:
          type: number
        width:
          type: number
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowInput:
      properties:
        description:
          type: string
        key:
          type: string
        required:
          type: boolean
        type:
          description: '"string", "number", "boolean", "object", "array"'
          type: string
      type: object
    StartAgentRunParams:
      properties:
        agentType:
          description: 'AgentType selects which registered first-party agent to run. Required —

            the caller picks one from GET /v1/agent-runs/agents (the worker''s

            enabled-agent discovery list). There is no default: routing an empty type

            to a fixed agent risks dispatching to a disabled one (an opaque 403).'
          type: string
        conversationId:
          description: 'Optional. Threads the run into an existing agent conversation; when empty

            the server generates a fresh conversation id (an independent thread).'
          type: string
        payload:
          additionalProperties: {}
          description: 'Payload is agent-type-specific input passed opaquely to the runtime

            (e.g. app-builder build params: workflowId, manifest, archetypeHint,

            parentBuildId, recentBuilds). workflow-builder ignores it.'
          type: object
        prompt:
          type: string
      required:
      - agentType
      - prompt
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowNode:
      properties:
        blockContext:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.BlockNodeContext'
        branch:
          description: '"then"/"else" (if parent), "resumed"/"timed_out" (wait parent)'
          type: string
        children:
          items:
            type: string
          type: array
          uniqueItems: false
        connector:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ConnectorReference'
        description:
          description: AI-generated 1-sentence description
          type: string
        loopBody:
          description: Loop body nodes (only for for-each nodes)
          items:
            type: string
          type: array
          uniqueItems: false
        payload:
          additionalProperties: {}
          type: object
        resultSchema:
          additionalProperties: {}
          description: 'ResultSchema describes the output structure of this node (populated dynamically for x402 endpoints).

            This is used by the frontend to show available output variables in the variable picker.'
          type: object
        titleOverride:
          description: AI-generated short title (2-6 words), only when more descriptive than default
          type: string
        type:
          type: string
      required:
      - payload
      - type
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.BlockOutputProperty:
      properties:
        description:
          type: string
        properties:
          additionalProperties:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.BlockOutputProperty'
          type: object
        type:
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropVisibleWhen:
      description: 'VisibleWhen controls conditional visibility: show this prop only when

        the referenced prop has the specified value.'
      properties:
        propKey:
          type: string
        value: {}
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropSchemaSummaryAggregate:
      properties:
        column:
          description: Column key in PropSchema.Columns.
          type: string
        label:
          description: 'Optional override for the displayed label. If empty, the frontend

            derives a label from the column + reducer (e.g. "Total amount").'
          type: string
        reduce:
          description: 'Reducer name. Matches the key in the frontend cell-spec''s

            `aggregate` map (currently: "sum", "count"). Unknown reducers are

            silently skipped on the frontend.'
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TemplateProp:
      properties:
        default: {}
        description:
          type: string
        key:
          type: string
        name:
          type: string
        properties:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropSchema'
        required:
          type: boolean
        sensitive:
          type: boolean
        type:
          description: '"string", "number", "integer", "boolean", "object" (for csvTable)'
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TemplateVisibility:
      enum:
      - org
      - public
      - org
      - public
      type: string
      x-enum-comments:
        TemplateVisibilityOrg: Only visible to organization members
        TemplateVisibilityPublic: Visible to everyone
      x-enum-varnames:
      - TemplateVisibilityOrg
      - TemplateVisibilityPublic
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropSource:
      properties:
        fieldPath:
          type: string
        nodeId:
          type: string
        nodeLabel:
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.StickyNote:
      properties:
        color:
          type: string
        createdAt:
          type: string
        createdBy:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.StickyNoteUser'
        id:
          type: string
        position:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.NodePosition'
        size:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.StickyNoteSize'
        text:
          type: string
        updatedAt:
          type: string
        zIndex:
          type: integer
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowDefinition:
      description: 'Definition is the inline workflow graph to analyze. Same shape as a

        saved workflow''s definition. Unlike the ephemeral-run endpoint there

        is no trigger restriction — analysis is read-only and method-agnostic.'
      properties:
        blockExpansions:
          additionalProperties:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.BlockExpansionMeta'
          description: Set on run snapshots only (not workflow DB)
          type: object
        inputSchema:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowInput'
          type: array
          uniqueItems: false
        nodes:
          additionalProperties:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowNode'
          type: object
        sensitivePropKeys:
          description: 'Legacy: kept for old runs; no longer populated for new workflows'
          items:
            type: string
          type: array
          uniqueItems: false
        triggerNodeIds:
          description: 'TriggerNodeIDs lists the node IDs that are trigger (root) nodes. Every

            workflow declares this — single-trigger workflows ship ["root"] (the

            legacy node id), multi-trigger workflows list every trigger node id.

            Treating single-trigger as a forest-of-1 removes the two-path branching

            throughout the BE + FE; older rows without the field are backfilled by

            migration 000282 and the field-missing path stays as a read-side safety

            net (see FindTriggerNodeIDs) but is no longer exercised by saves.


            "root" is also a runtime alias for "the trigger that fired this run" —

            {{root.X}} variable references resolve to the firing trigger regardless

            of which trigger fired. Don''t repurpose the literal "root" as a trigger

            id on a multi-trigger workflow.'
          items:
            type: string
          type: array
          uniqueItems: false
        variableDefs:
          description: 'VariableDefs is a snapshot of the workflow''s declared variables at run

            creation time. The canonical source lives on the workflows row

            (Workflow.VariableDefs column). Snapshotted into the run definition

            so the worker can resolve {{$vars.x}} lookups and route variable-action

            writes to the right scope without an extra DB round trip.'
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.VariableDef'
          type: array
          uniqueItems: false
      required:
      - nodes
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.BlockNodeContext:
      description: 'BlockContext is set on nodes that were expanded from a block.

        It traces the node back to its source block and carries the inputMapping

        needed to resolve {{$inputs.key}} references at execution time.'
      properties:
        blockId:
          description: Block entity ID
          type: string
        blockNodeId:
          description: Original block node ID in the workflow
          type: string
        blockVersion:
          description: Pinned block version
          type: integer
        inputMapping:
          additionalProperties: {}
          description: From block node payload (consumer-authored)
          type: object
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropSchemaSummary:
      description: 'Summary drives the csvTable footer summary. Nil means no summary is

        rendered. See PropSchemaSummary for details.'
      properties:
        aggregates:
          description: Aggregates declared in display order, left-to-right.
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropSchemaSummaryAggregate'
          type: array
          uniqueItems: false
        position:
          description: 'Position in the grid. "footer" (default) renders inline under the

            table. "none" suppresses even when aggregates are declared — use to

            disable inherited summaries. Other values reserved.'
          type: string
      type: object
    ? github_com_b3-fun_b3-mono_services_b3os-workflow_PaginatedData-github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity_Template
    : properties:
        hasMore:
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.Template'
          type: array
          uniqueItems: false
        limit:
          type: integer
        offset:
          type: integer
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.StickyNoteUser:
      properties:
        clientId:
          type: string
        name:
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TableSchema:
      properties:
        columns:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ColumnSchema'
          type: array
          uniqueItems: false
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.VariableDef:
      properties:
        default: {}
        description:
          type: string
        lifetime:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.VariableLifetime'
        name:
          type: string
        type:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.VariableType'
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropSchema:
      properties:
        accountType:
          description: 'AccountType filters the wallet picker by account type on

            inputType="walletConnector" fields (e.g. "polymarket_deposit_wallet").'
          type: string
        allowWalletPicker:
          description: 'AllowWalletPicker controls the org-wallet picker on inputType="address"

            fields. When false, the frontend hides the inline "Wallets" badge and

            the org-wallet autocomplete popover. Use for third-party address fields

            (e.g. a deployer filter) where suggesting org wallets is misleading.

            Pointer so explicit false survives JSON round-trip (default true on FE).'
          type: boolean
        allowedChannels:
          description: 'AllowedChannels constrains the notification-channel picker

            (inputType: "notification-channel") to a subset of channels. Used by

            templates whose downstream nodes only work with one channel type

            (e.g. ["slack"] for a Slack-only approval flow). Frontend ignores

            unknown keys; a length-1 list auto-selects in the picker.'
          items:
            type: string
          type: array
          uniqueItems: false
        autoFillFromWallet:
          description: 'AutoFillFromWallet, when true, auto-fills this prop with the selected

            workflow wallet address and hides it from the form. Pointer so an

            explicit false survives the JSON round-trip (same rationale as

            AllowWalletPicker).'
          type: boolean
        bindsConnectorNodes:
          description: 'BindsConnectorNodes lists workflow node IDs whose wallet-type connector

            should be prefilled from this prop''s picked wallet (inputType:

            "walletConnector"). The connector stays a plain, editable connector —

            this is a prefill, not a permanent bind.'
          items:
            type: string
          type: array
          uniqueItems: false
        chainId:
          description: 'For tokenAmount: hardcoded chain ID'
          type: integer
        chainPropKey:
          description: 'For tokenSelector/tokenAmount: prop key providing chainId'
          type: string
        columns:
          description: 'Columns describes a csvTable prop (inputType: "csvTable"). The stored

            value is an object-of-columnar-arrays: {colKey: []value}. Payload

            templates reference each column via {{$props.<propKey>.<colKey>}}.'
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropColumn'
          type: array
          uniqueItems: false
        dex:
          description: 'For hyperliquidAsset: hardcoded DEX name (fallback when no dexPropKey)'
          type: string
        dexPropKey:
          description: 'For hyperliquidAsset: prop key providing HIP-3 DEX name'
          type: string
        enum:
          items: {}
          type: array
          uniqueItems: false
        enumLabels:
          items:
            type: string
          type: array
          uniqueItems: false
        excludeNative:
          description: 'For tokenSelector/multiTokenSelector: hide native tokens (field only accepts ERC-20 contract addresses)'
          type: boolean
        groupKey:
          description: Groups related props for unified UI rendering
          type: string
        inputType:
          description: 'InputType is a UI rendering hint. The frontend uses it to pick a rich

            selector component instead of a plain text input. Unknown values are

            silently ignored (falls back to default input).

            Valid values: chainSelector, tokenSelector, multiTokenSelector, tokenAmount,

            coinSelector, multiCoinSelector, address, contractAddress, recipientAddress,

            email, telegram-chat, slack-channel, pushover-recipient, pushbullet-device,

            webpush-subscription, textarea, password, polymarketUser, twitterUsername,

            storkAsset, hyperliquidAsset, morphoVault, morphoMarket, csvTable,

            notification-channel, googleSheetUrl, rrule, walletConnector'
          type: string
        maxRows:
          description: 'csvTable: maximum allowed rows (0 = no cap)'
          type: integer
        maximum:
          type: number
        minRows:
          description: 'csvTable: minimum required rows (0 = default 1)'
          type: integer
        minimum:
          type: number
        pattern:
          type: string
        placeholder:
          type: string
        showWalletBalances:
          description: 'For tokenSelector: show wallet balances (useful for "sell" tokens)'
          type: boolean
        sources:
          description: 'Sources lists the workflow node fields this prop was created from.

            Each entry identifies a node + field path so the frontend can

            reliably match props back to their source fields on reload.

            Multiple entries indicate the prop was merged from fields with

            identical values across different nodes.'
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropSource'
          type: array
          uniqueItems: false
        summary:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropSchemaSummary'
        tokenAddress:
          description: 'For tokenAmount: hardcoded token address'
          type: string
        tokenAddressPropKey:
          description: 'For tokenAmount: prop key providing tokenAddress'
          type: string
        visibleWhen:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropVisibleWhen'
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ColumnSchema:
      properties:
        default:
          type: string
        name:
          type: string
        notNull:
          type: boolean
        primaryKey:
          type: boolean
        type:
          type: string
        unique:
          type: boolean
      type: object
    data:
      properties:
        data:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_PaginatedData-github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity_Template'
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.Template:
      properties:
        archived:
          type: boolean
        category:
          description: 'Deprecated: Use Tags instead'
          type: string
        cooldownMs:
          type: integer
        createdAt:
          type: string
        createdBy:
          type: string
        definition:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowDefinition'
        description:
          type: string
        forkCount:
          type: integer
        generatedAppId:
          description: 'Generated-app attachment (nil when the template ships no app). On

            adoption the referenced app is CLONED into the adopting org''s new

            workflow. GeneratedAppVersionID optionally pins a specific version

            whose manifest is used as the clone source.'
          type: string
        generatedAppVersionId:
          type: string
        id:
          type: string
        isPromoted:
          type: boolean
        maxRuns:
          type: integer
        moderationStatus:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TemplateModerationStatus'
        name:
          type: string
        organizationDescription:
          type: string
        organizationId:
          description: Fields for user-generated templates (nil for built-in templates)
          type: string
        organizationName:
          type: string
        organizationPhoto:
          type: string
        promotedAt:
          type: string
        promotedBy:
          type: string
        promotedOrder:
          type: integer
        rejectionReason:
          type: string
        reviewedAt:
          type: string
        reviewedBy:
          type: string
        slug:
          type: string
        sourceWorkflowId:
          description: Source workflow link (nil for built-in or legacy templates)
          type: string
        submittedAt:
          type: string
        tableSchemas:
          additionalProperties:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TableSchema'
          type: object
        tags:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.Tag'
          type: array
          uniqueItems: false
        templateProps:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TemplateProp'
          type: array
          uniqueItems: false
        uiMetadata:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowUIMetadata'
        updatedAt:
          type: string
        updatedBy:
          type: string
        version:
          type: integer
        visibility:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TemplateVisibility'
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ConnectorReference:
      description: nil if action doesn't need connector
      properties:
        chainId:
          type: integer
        id:
          type: string
        type:
          type: string
        walletAddress:
          description: 'WalletAddress is the wallet''s on-chain address, only meaningful for

            type:"wallet" refs. Not used by ConnectorResolver (which resolves the

            address from the wallet DB record); exists for frontend round-trip fidelity.'
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.VariableLifetime:
      enum:
      - persist
      - reset
      type: string
      x-enum-varnames:
      - VariableLifetimePersist
      - VariableLifetimeReset
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.BlockExpansionMeta:
      properties:
        blockId:
          type: string
        blockVersion:
          type: integer
        entryNodeIds:
          description: Subset of ExpandedIDs that are entry points
          items:
            type: string
          type: array
          uniqueItems: false
        expandedIds:
          description: All namespaced node IDs produced by expansion
          items:
            type: string
          type: array
          uniqueItems: false
        outputSchema:
          description: Block's output schema for reference
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.BlockOutput'
          type: array
          uniqueItems: false
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.VariableType:
      enum:
      - number
      - text
      - boolean
      - list
      - object
      type: string
      x-enum-varnames:
      - VariableTypeNumber
      - VariableTypeText
      - VariableTypeBoolean
      - VariableTypeList
      - VariableTypeObject
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.BlockOutput:
      properties:
        description:
          description: Human-readable description for the variable picker
          type: string
        key:
          description: Output field name exposed to consumers
          type: string
        properties:
          additionalProperties:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.BlockOutputProperty'
          description: Nested schema for object/array outputs (shown in variable picker)
          type: object
        sourceField:
          description: Field path from the source node's result (e.g., "balance")
          type: string
        sourceNode:
          description: Node ID within the block definition
          type: string
        type:
          description: '"string", "number", "boolean", "object", "array"'
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowUIMetadata:
      properties:
        comments:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.Comment'
          type: array
          uniqueItems: false
        nodePositions:
          additionalProperties:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.NodePosition'
          type: object
        stickyNotes:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.StickyNote'
          type: array
          uniqueItems: false
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.NodePosition:
      properties:
        x:
          type: number
        y:
          type: number
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.Comment:
      properties:
        createdAt:
          type: string
        createdBy:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.StickyNoteUser'
        id:
          type: string
        nodeId:
          type: string
        position:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.NodePosition'
        replies:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.CommentReply'
          type: array
          uniqueItems: false
        resolved:
          type: boolean
        text:
          type: string
        updatedAt:
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.Tag:
      properties:
        categories:
          description: e.g., ["blockchain", "finance"]
          items:
            type: string
          type: array
          uniqueItems: false
        count:
          description: 'Scope-dependent: template, action, trigger, or conn

# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/b3/refs/heads/main/openapi/b3-agent-runs-api-openapi.yml