{"ok":true,"site":{"host":"formwork-omega.vercel.app","url":"https://formwork-omega.vercel.app/","type":"live","desc":"Formwork","tools":[{"name":"list_form_fields","kind":"answer","impl":"imperative","description":"List every field on this visa application, with its id, label, section, whether it is required, and guidance on what belongs in it. Call this first to learn the form before filling anything.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"section":{"type":"string","description":"Optional. Limit to one section: personal, contact, travel, employment, history."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_form_progress","kind":"answer","impl":"imperative","description":"Describe the current state of the application out loud: what is filled, what is still missing, and what is flagged for the applicant to confirm. Use this to answer \"where am I up to?\", to decide what to ask for next, or to read the form back to someone who cannot see the screen.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"read_source_document","kind":"answer","impl":"imperative","description":"Read whatever the applicant pasted into the \"Source documents\" box on the page — a passport transcription, an invitation letter, an itinerary, a previous application. Call this before fill_fields so you are copying from what they actually supplied rather than asking them to repeat it. Returns their text verbatim.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"fill_fields","kind":"act","impl":"imperative","description":"Write one or more values into the application. Use this after reading a document the applicant supplied — a passport, an invitation letter, an itinerary, an old application — to transfer what it says onto the formRef.current. Pass values exactly as they appear in the source; do not tidy, translate, or reformat names. If you are inferring rather than copying, set a \"flag\" explaining the doubt. Fill every section you can in a single call, and do this BEFORE the declare_travel_plans form tool, which blocks until the applicant presses Confirm.","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"values":{"type":"array","description":"The fields to write.","items":{"type":"object","properties":{"id":{"type":"string","description":"Field id from list_form_fields."},"value":{"type":"string","description":"Value to write. Dates as YYYY-MM-DD. Booleans as \"true\"/\"false\"."},"flag":{"type":"string","description":"Optional. If you are not certain, say why in one short sentence addressed to the applicant, e.g. \"Your letter says Lagos but your passport says Ibadan — which is right?\"."}},"required":["id","value"]}}},"required":["values"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"flag_field_for_review","kind":"act","impl":"imperative","description":"Mark a field as needing the applicant to look at it, without changing its value. Use when you spot a contradiction between documents, a legally sensitive answer, or something only the applicant can know. A flagged field blocks submission until the applicant resolves it.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Field id to flag."},"reason":{"type":"string","description":"One short sentence, addressed to the applicant, explaining what to check."}},"required":["id","reason"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"clear_field","kind":"act","impl":"imperative","description":"Empty a single field. Use when a value turns out to be wrong and you have nothing correct to put in its place — an empty field the applicant can see is safer than a plausible wrong one.","annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Field id to clear."}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"check_before_submitting","kind":"answer","impl":"imperative","description":"Run the pre-submission checks a caseworker would run: internal contradictions, dates in the wrong order, a passport expiring too soon. Returns problems in plain language. This never submits the application — only the applicant can do that, using the button on the page.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"declare_travel_plans","kind":"act","impl":"declarative","description":"Record the applicant's intended visit: arrival and departure dates, where they enter the country, why they are travelling, and where they will stay. Fill this from an itinerary, ticket, or invitation letter. Call this LAST, after fill_fields has handled every other section: this form waits for the applicant to press Confirm before it returns, so calling it early leaves the rest of the application empty while you wait.","inputSchema":{"type":"object","properties":{"purpose":{"type":"string","enum":["Tourism","Business","Study","Family visit","Medical treatment","Transit"]},"arrival":{"type":"string"},"departure":{"type":"string"},"portOfEntry":{"type":"string"},"accommodation":{"type":"string"}},"required":["purpose","arrival","departure","portOfEntry","accommodation"]},"__source":"spec","__declarative":true}],"category":"Travel & Events","favicon":"/favicons/formwork-omega.vercel.app.svg","apiSurface":"spec","toolCount":8}}