{"ok":true,"site":{"host":"formless-health.vercel.app","url":"https://formless-health.vercel.app/","type":"live","desc":"A live, agent-editable interface running in your browser.","tools":[{"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.","title":"Get website summary","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Get website prompt","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_project_files","kind":"answer","impl":"imperative","description":"Lists source files in the live WebContainer project with revision, editability, size, and hash.","title":"List project files","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Read project files","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"paths":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"string"}},"revision":{"type":"integer","minimum":0}},"required":["paths"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Apply project changes","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Reset project","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"baseRevision":{"type":"integer","minimum":0},"confirm":{"type":"boolean","const":true}},"required":["baseRevision","confirm"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_ui_elements","kind":"answer","impl":"imperative","description":"Returns the stable IDs and current state of instrumented elements in the live preview.","title":"Get UI elements","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Navigate to route","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"path":{"type":"string"}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Highlight UI elements","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"clear_ui_highlights","kind":"act","impl":"imperative","description":"Restores every registered UI element to its normal visual state.","title":"Clear UI highlights","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Poll user messages","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"afterId":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Speak text","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"stop_speaking","kind":"act","impl":"imperative","description":"Immediately stops anything the page is saying and drops whatever is queued behind it.","title":"Stop speaking","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Get health summary","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"List health records","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Read health records","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"List app versions","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Publish app version","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Switch app version","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Health & Education","apiSurface":"spec","toolCount":19}}