Tool tree
gradeNot graded
get_website_summaryAnswer
Call this first when you connect to the website. Explains what Formless Labs is and how to use its tools.
View tool JSON
{
"name": "get_website_summary",
"kind": "answer",
"impl": "imperative",
"description": "Call this first when you connect to the website. Explains what Formless Labs is and how to use its tools.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}get_website_promptAnswer
Returns the prompt that governs how the agent should work with this website, capability by capability, naming the tool that delivers each one.
View tool JSON
{
"name": "get_website_prompt",
"kind": "answer",
"impl": "imperative",
"description": "Returns the prompt that governs how the agent should work with this website, capability by capability, naming the tool that delivers each one.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}list_project_filesAnswer
Lists source files in the live WebContainer project with revision, editability, size, and hash.
View tool JSON
{
"name": "list_project_files",
"kind": "answer",
"impl": "imperative",
"description": "Lists source files in the live WebContainer project with revision, editability, size, and hash.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}read_project_filesAnswer
Reads one to twenty UTF-8 source files from the live project. Use list_project_files first.
View tool JSON
{
"name": "read_project_files",
"kind": "answer",
"impl": "imperative",
"description": "Reads one to twenty UTF-8 source files from the live project. Use list_project_files first.",
"inputSchema": {
"type": "object",
"properties": {
"paths": {
"type": "array",
"minItems": 1,
"maxItems": 20,
"items": {
"type": "string"
}
},
"revision": {
"type": "integer",
"minimum": 0
}
},
"required": [
"paths"
],
"additionalProperties": false
}
}apply_project_changesAction
Atomically writes or deletes editable application files, validates the project, and rolls back failures. Full file contents are required for writes.
View tool JSON
{
"name": "apply_project_changes",
"kind": "act",
"impl": "imperative",
"description": "Atomically writes or deletes editable application files, validates the project, and rolls back failures. Full file contents are required for writes.",
"inputSchema": {
"type": "object",
"properties": {
"baseRevision": {
"type": "integer",
"minimum": 0
},
"changes": {
"type": "array",
"minItems": 1,
"maxItems": 20,
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"operation": {
"type": "string",
"enum": [
"write",
"delete"
]
},
"content": {
"type": "string"
}
},
"required": [
"path",
"operation"
],
"additionalProperties": false
}
}
},
"required": [
"baseRevision",
"changes"
],
"additionalProperties": false
}
}reset_projectAction
Restores the editable app to the starter snapshot. Call only after the user explicitly requests a reset.
View tool JSON
{
"name": "reset_project",
"kind": "act",
"impl": "imperative",
"description": "Restores the editable app to the starter snapshot. Call only after the user explicitly requests a reset.",
"inputSchema": {
"type": "object",
"properties": {
"baseRevision": {
"type": "integer",
"minimum": 0
},
"confirm": {
"type": "boolean",
"const": true
}
},
"required": [
"baseRevision",
"confirm"
],
"additionalProperties": false
}
}get_ui_elementsAnswer
Returns the stable IDs and current state of instrumented elements in the live preview.
View tool JSON
{
"name": "get_ui_elements",
"kind": "answer",
"impl": "imperative",
"description": "Returns the stable IDs and current state of instrumented elements in the live preview.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}navigate_to_routeAction
Moves the live preview to one of the routes the app declares. Prefer this over clicking a link: it works even when the navigation control is off-screen, and it cannot miss. Call with no path to list the available routes.
View tool JSON
{
"name": "navigate_to_route",
"kind": "act",
"impl": "imperative",
"description": "Moves the live preview to one of the routes the app declares. Prefer this over clicking a link: it works even when the navigation control is off-screen, and it cannot miss. Call with no path to list the available routes.",
"inputSchema": {
"type": "object",
"properties": {
"path": {
"type": "string"
}
},
"additionalProperties": false
}
}highlight_ui_elementsAction
Highlights one or more live UI elements, optionally blinks between two colors, and dims or hides everything else in the preview. Set durationSeconds to clear the highlight automatically.
View tool JSON
{
"name": "highlight_ui_elements",
"kind": "act",
"impl": "imperative",
"description": "Highlights one or more live UI elements, optionally blinks between two colors, and dims or hides everything else in the preview. Set durationSeconds to clear the highlight automatically.",
"inputSchema": {
"type": "object",
"properties": {
"elementIds": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "string"
}
},
"color": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"alternateColor": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"blinkIntervalMs": {
"type": "number",
"minimum": 100,
"maximum": 5000
},
"durationSeconds": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 300
},
"restTreatment": {
"type": "string",
"enum": [
"dim",
"hide"
]
},
"dimOpacity": {
"type": "number",
"minimum": 0.1,
"maximum": 0.8
}
},
"required": [
"elementIds",
"color",
"restTreatment"
],
"additionalProperties": false
}
}clear_ui_highlightsAction
Restores every registered UI element to its normal visual state.
View tool JSON
{
"name": "clear_ui_highlights",
"kind": "act",
"impl": "imperative",
"description": "Restores every registered UI element to its normal visual state.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}poll_user_messagesAnswer
Returns typed and final speech messages after a monotonic cursor. Poll approximately every two seconds while listening for user input.
View tool JSON
{
"name": "poll_user_messages",
"kind": "answer",
"impl": "imperative",
"description": "Returns typed and final speech messages after a monotonic cursor. Poll approximately every two seconds while listening for user input.",
"inputSchema": {
"type": "object",
"properties": {
"afterId": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"additionalProperties": false
}
}speak_textAction
Speaks text aloud through the page, using the browser's speech synthesizer. Use it to answer a user who is talking rather than typing. Keep each turn to a sentence or two: the call does not return until the utterance finishes. The result lists the available voices, so a later call can pick one by name.
View tool JSON
{
"name": "speak_text",
"kind": "act",
"impl": "imperative",
"description": "Speaks text aloud through the page, using the browser's speech synthesizer. Use it to answer a user who is talking rather than typing. Keep each turn to a sentence or two: the call does not return until the utterance finishes. The result lists the available voices, so a later call can pick one by name.",
"inputSchema": {
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"voice": {
"type": "string"
},
"lang": {
"type": "string"
},
"rate": {
"type": "number",
"minimum": 0.5,
"maximum": 2
},
"pitch": {
"type": "number",
"minimum": 0,
"maximum": 2
},
"volume": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"interrupt": {
"type": "boolean"
}
},
"required": [
"text"
],
"additionalProperties": false
}
}stop_speakingAction
Immediately stops anything the page is saying and drops whatever is queued behind it.
View tool JSON
{
"name": "stop_speaking",
"kind": "act",
"impl": "imperative",
"description": "Immediately stops anything the page is saying and drops whatever is queued behind it.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}get_health_summaryAnswer
Summarizes the patient-authorized health record: what it contains, how much of it there is, and over what dates. Call this before any other health tool. Reports whether the record is the user's own, the de-identified sample, or absent.
View tool JSON
{
"name": "get_health_summary",
"kind": "answer",
"impl": "imperative",
"description": "Summarizes the patient-authorized health record: what it contains, how much of it there is, and over what dates. Call this before any other health tool. Reports whether the record is the user's own, the de-identified sample, or absent.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}list_health_recordsAnswer
Lists items in the health record as dated, titled lines, newest first. Filter by group, free text, status, or a date range, and page with offset. This is the cheap way to find the handful of refs worth reading in full.
View tool JSON
{
"name": "list_health_records",
"kind": "answer",
"impl": "imperative",
"description": "Lists items in the health record as dated, titled lines, newest first. Filter by group, free text, status, or a date range, and page with offset. This is the cheap way to find the handful of refs worth reading in full.",
"inputSchema": {
"type": "object",
"properties": {
"group": {
"type": "string"
},
"query": {
"type": "string"
},
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"status": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 200
},
"offset": {
"type": "integer",
"minimum": 0
},
"sort": {
"type": "string",
"enum": [
"date_desc",
"date_asc",
"group"
]
}
},
"additionalProperties": false
}
}read_health_recordsAnswer
Reads the full content of specific health records by ref, as taken from the provider's FHIR API. format "fields" is the labelled human reading, "fhir" is the verbatim resource JSON, and "text" is the prose of a clinical-note file. Give refs from list_health_records, or a group to read its first items.
View tool JSON
{
"name": "read_health_records",
"kind": "answer",
"impl": "imperative",
"description": "Reads the full content of specific health records by ref, as taken from the provider's FHIR API. format \"fields\" is the labelled human reading, \"fhir\" is the verbatim resource JSON, and \"text\" is the prose of a clinical-note file. Give refs from list_health_records, or a group to read its first items.",
"inputSchema": {
"type": "object",
"properties": {
"refs": {
"type": "array",
"minItems": 1,
"maxItems": 20,
"items": {
"type": "string"
}
},
"group": {
"type": "string"
},
"offset": {
"type": "integer",
"minimum": 0
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20
},
"format": {
"type": "string",
"enum": [
"fields",
"fhir",
"text"
]
},
"textOffset": {
"type": "integer",
"minimum": 0
},
"maxChars": {
"type": "integer",
"minimum": 1,
"maximum": 100000
}
},
"additionalProperties": false
}
}list_app_versionsAnswer
Lists the published versions of this app that anyone can switch to, and reports which one the live preview is currently showing.
View tool JSON
{
"name": "list_app_versions",
"kind": "answer",
"impl": "imperative",
"description": "Lists the published versions of this app that anyone can switch to, and reports which one the live preview is currently showing.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}publish_app_versionAction
Publishes the current editable app as a named version that every visitor can see and load. Publishing is public and permanent until you unpublish it, so ask the user before calling this.
View tool JSON
{
"name": "publish_app_version",
"kind": "act",
"impl": "imperative",
"description": "Publishes the current editable app as a named version that every visitor can see and load. Publishing is public and permanent until you unpublish it, so ask the user before calling this.",
"inputSchema": {
"type": "object",
"properties": {
"baseRevision": {
"type": "integer",
"minimum": 0
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"description": {
"type": "string",
"maxLength": 280
},
"confirm": {
"type": "boolean",
"const": true
}
},
"required": [
"baseRevision",
"name",
"confirm"
],
"additionalProperties": false
}
}switch_app_versionAction
Replaces the live preview with a published version. The current working copy is overwritten, so confirm with the user first — publish their unsaved work before switching if they want to keep it.
View tool JSON
{
"name": "switch_app_version",
"kind": "act",
"impl": "imperative",
"description": "Replaces the live preview with a published version. The current working copy is overwritten, so confirm with the user first — publish their unsaved work before switching if they want to keep it.",
"inputSchema": {
"type": "object",
"properties": {
"baseRevision": {
"type": "integer",
"minimum": 0
},
"versionId": {
"type": "string",
"pattern": "^[0-9a-f]{16}$"
},
"confirm": {
"type": "boolean",
"const": true
}
},
"required": [
"baseRevision",
"versionId",
"confirm"
],
"additionalProperties": false
}
}