Midway

Current product reference

Set up a new onboarding

Midway represents an onboarding as a published definition and an instance of that definition. The definition specifies the checklist, evidence contract, completion gates, agent instructions, and optional HTTP integrations. The instance provides the administrator and public collaboration workspaces.

Data model

ObjectPurpose
DefinitionVersioned configuration for a reusable onboarding process.
CriterionOne checklist requirement, its accepted evidence, dependencies, and gates.
OnboardingA live checklist and conversation created from one published definition version.
EvidenceImmutable user input, including files and answers, linked to applicable criteria.
ArtifactAgent-generated output with hashes, lineage, and transformation records.

1. Create a definition

  1. Open Templates → New definition.
  2. Enter a name and description. Definitions with the same normalized name receive sequential version numbers.
  3. Enter agent instructions specific to the onboarding. The runtime already directs the agent to repair, map, normalize, and reformat usable inputs before requesting replacements.
  4. Add at least one criterion and save the definition as a draft.
  5. Review the draft and publish it. Only published definitions can be instantiated.
The current interface creates a new draft version; it does not edit a published definition in place.

2. Configure checklist criteria

Each criterion currently supports the following configuration.

  • Key: a stable lowercase identifier matching [a-z][a-z0-9_-]{0,63}.
  • Name, description, and customer guidance: text shown in the checklist and supplied to the agent.
  • Group: a display grouping in the public checklist.
  • Dependencies: criterion keys that must be satisfied or waived first.
  • Accepted evidence: file, text, URL, structured data, confirmation, or external evidence.
  • Required and waivable: whether completion is expected and whether an administrator can waive the criterion.
  • Agent judgment: require the agent to propose satisfaction.
  • Downloadable output required: prevent satisfaction until the agent identifies at least one complete generated artifact for the criterion.
  • Validators: require all or any configured validator keys to pass for the exact evidence and artifact hashes.
  • Human approval: hold an agent proposal until an administrator approves it.
  • Blocking finding codes: finding codes that prevent satisfaction until resolved or dismissed.

The current definition form fixes conservative transformation policy defaults: partial and lossy artifacts are disabled, validator failures block, and inferred values require approval.

3. Configure optional integrations

The definition form accepts JSON arrays for context sources, validators, and destinations. All are optional. Endpoint methods areGet,Post, orPut.

Context source

Exposes a native fetch_context tool to the agent. The agent decides whether the source is needed and selects it by key. Endpoint URLs and credentials remain in the application control plane and are not exposed to the model.

  • OnStart caches the first requested snapshot for the onboarding.
  • PerTurn reuses the first requested snapshot within a turn.
  • Manual refreshes on every tool call.
  • Ttl reuses an unexpired requested snapshot.

Every successful response is stored as immutable external evidence with a SHA-256 hash. The tool returns its evidence ID for artifact and criterion lineage. A source failure can warn or hold assessment.

[
  {
    "key": "account_context",
    "name": "Account context",
    "enabled": true,
    "url": "https://api.example.com/onboarding-context",
    "method": "Post",
    "headersTemplate": {},
    "authentication": {
      "type": "bearer",
      "token": "paste-customer-token-here"
    },
    "agentRequest": {
      "mode": "Schema",
      "allowQuery": true,
      "allowHeaders": false,
      "allowSensitiveHeaders": false,
      "allowBody": false,
      "instructions": "Fetch one entity type at a time.",
      "schema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "object",
            "properties": {
              "entityType": {
                "enum": ["members", "vendors", "products"]
              }
            },
            "required": ["entityType"],
            "additionalProperties": false
          }
        },
        "required": ["query"],
        "additionalProperties": false
      }
    },
    "timeoutMs": 10000,
    "maxResponseBytes": 1048576,
    "refreshPolicy": "PerTurn",
    "onFailure": "Warn"
  }
]

Set agentRequest.mode to Unrestricted to let the agent provide any bounded JSON body, query parameters, and enabled application headers to this fixed endpoint. Set allowSensitiveHeaders only when the agent may also construct authorization, cookie, or API-key headers. Stored endpoint authentication cannot be overridden.

Unrestricted request mode is a high-trust setting. It allows the model to send onboarding-derived data to the configured endpoint. Cross-origin redirects lose all agent headers and request bodies.
Context authentication is write-only. The token is encrypted when the definition is created, cannot be recovered from the UI, and is injected only by the backend fetcher. For an API-key header, use{ type: "header", headerName: "X-API-Key", value: "…" }instead.

A context endpoint without an agent-supplied or static body receives the following default JSON. Parameterized sources may instead receive the configured exact JSON body. The response may be JSON or text and remains subject to the configured response-size limit.

{
  "contract": "context-source/v1",
  "organizationId": "<organization-id>",
  "onboardingId": "<onboarding-id>",
  "variables": {}
}

Validator

Receives an onboarding ID, criterion ID and key, and the exact IDs and SHA-256 hashes of evidence and artifacts under the validator/v1 contract.

[
  {
    "key": "customer_file",
    "name": "Customer file validator",
    "enabled": true,
    "url": "https://api.example.com/validate/customers",
    "method": "Post",
    "headersTemplate": {},
    "credentialReference": "example_api",
    "timeoutMs": 30000,
    "maxResponseBytes": 1048576,
    "mode": "Sync",
    "onError": "AdminAttention"
  }
]

The response is strict JSON:

{
  "contract": "validator/v1",
  "decision": "pass",
  "checkId": "check-123",
  "findings": [],
  "resultExpiresAt": null
}

Destination

Sends the current immutable artifact manifest. Deliveries include an idempotency key and preserve the first-attempt manifest across retries.

[
  {
    "key": "import_api",
    "name": "Import API",
    "enabled": true,
    "url": "https://api.example.com/imports",
    "method": "Post",
    "headersTemplate": {},
    "credentialReference": "example_api",
    "timeoutMs": 30000,
    "maxResponseBytes": 1048576,
    "trigger": "Manual",
    "payload": "ArtifactsAndSummary"
  }
]
Validator and destination credential references must currently be installed by the deployment operator inCOLLABORATION_CREDENTIALS_JSON. Production endpoints must use HTTPS on the default port and resolve only to public addresses.

4. Start an onboarding

  1. Open Onboardings → New onboarding.
  2. Enter an instance title and select a published definition version.
  3. Create the onboarding.
  4. Copy the generated public share link immediately. The raw capability token is displayed at creation time and is stored only as a hash.
  5. Send the share link to the participant who will supply the inputs.

5. Operate an onboarding

The public workspace currently provides:

  • A grouped checklist, completion count, and needs-action filter.
  • Chat messages and ordered file attachments in a single conversation flow. General submissions are left for the agent to classify.
  • Direct file uploads: up to 20 files per submission, 250 MiB per file, and 1 GiB total.
  • Responses to upload, answer, choose, and confirm requests.
  • Evidence, generated artifacts, transformation summaries, assumptions, and findings by criterion.
  • Automatic polling while an agent turn is queued or running.

The administrator workspace currently provides:

  • The same checklist state and the full public or internal conversation.
  • Customer-visible messages and internal notes.
  • Manually requested uploads, answers, choices, and confirmations.
  • Approval of pending criterion proposals, waivers where allowed, and finding dismissal.
  • Manual delivery to configured destinations.
Agent processing is asynchronous. A submission is accepted first; the worker then validates inputs, attempts safe repair or reformatting, creates artifacts where useful, and asks for additional authoritative data only when it cannot safely complete the work.

Current limits

  • Definition and integration configuration is performed in the web interface; there is no public definition-management API.
  • Optional integration arrays are entered as JSON rather than through dedicated field editors.
  • The public composer has dedicated controls for files, free text, choices, and confirmations. URL, structured, and external evidence kinds are supported by the definition model but do not yet have dedicated public controls.
  • Published definitions are versioned records and are not edited in place by the current interface.
  • Delivery is exposed as an administrator action when a destination is configured. A general participant-facing submission action is not exposed.
  • Integration credentials require deployment configuration; administrators cannot enter secret values in the definition form.