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.
| Value | Renders as |
|---|---|
| textarea | Multiline text area |
| file | File 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 fieldSchema 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"]
}
]
}