Input / output schemas

Build

Input / output schemas

Schemas are standard JSON Schema files. They drive the browser form UI, API validation, and MCP argument descriptions.

Input schema#

input.schema.json
{
  "type": "object",
  "required": ["transcript"],
  "properties": {
    "transcript": {
      "type": "string",
      "title": "Meeting transcript",
      "description": "Paste the full text of your meeting.",
      "x-floom-format": "textarea"
    },
    "language": {
      "type": "string",
      "title": "Output language",
      "default": "English"
    }
  }
}

x-floom-format extension#

Floom-specific extension on any string field. Controls how the browser UI renders the field.

ValueRenders as
textareaMultiline text area
fileFile picker. File is base64-encoded and sent as the field value.

Output schema#

output.schema.json
{
  "type": "object",
  "properties": {
    "action_items": {
      "type": "array",
      "items": { "type": "string" }
    },
    "summary": { "type": "string" }
  }
}

If output_schema is declared, your app must print a JSON object as the last line of stdout, or write it to /home/user/output.json.

Output behaviour by config
# With output_schema declared:
# app prints JSON on stdout (last line), or writes /home/user/output.json
# Floom validates and returns parsed JSON

# No output_schema, stdout is valid JSON:
# Floom returns the parsed JSON directly

# No output_schema, plain stdout:
# Floom captures the last 4 KB of stdout as the output field

Schema constraints#

Floom passes standard JSON Schema constraints through to validation. Use any of these in your input or output schemas.

Enum: restrict to a fixed set of values
{
  "type": "string",
  "title": "Size",
  "enum": ["small", "medium", "large"]
}
Min / max: bound a numeric range
{
  "type": "integer",
  "title": "Count",
  "minimum": 1,
  "maximum": 100
}
Pattern: validate a string with regex
{
  "type": "string",
  "title": "Slug",
  "pattern": "^[a-z][a-z0-9-]{0,30}$"
}
oneOf: discriminated union of shapes
{
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "kind": { "const": "url" },
        "url": { "type": "string" }
      },
      "required": ["kind", "url"]
    },
    {
      "type": "object",
      "properties": {
        "kind": { "const": "text" },
        "text": { "type": "string" }
      },
      "required": ["kind", "text"]
    }
  ]
}

Last updated: 2026-05-04 · Floom v0.4