Skill v1.0.0
currentAutomated scan100/100version: "1.0.0" name: openadapt-gui-write description: "Your AI agent decides what to enter. OpenAdapt enters it in the app and checks that it saved."
OpenAdapt: enter it in the app and check that it saved
Use this when your agent has decided what to enter and the app has no usable API. Call list_workflows, then run_workflow with the workflow name, its inputs, and your own request_id.
The three tools
list_workflowsreturns each workflow'sname,purpose,done_means, and typedinputs.run_workflowtakesworkflow,inputs,request_id, and optionalwait_seconds. Use your own id for the piece of work, such as a referral id, and send the same id if you retry. The same id never writes twice. Don't put patient details in it.get_runtakes arun_idand returns the result when a run was still going.
What the outcome means
| outcome | What happened | What to do | |
|---|---|---|---|
done | Saved and checked. | Nothing more for this request. | |
needs_review | Stopped before a save. A person decides. Nothing was written, unless record_changed is unknown: a run waiting for a person to approve a save may have made an earlier one. | Don't start the same work again. Check back with get_run. | |
not_sure_if_saved | It may or may not have saved. | Never retry. A person checks the record. | |
did_not_run | This call wrote nothing. After request_id_conflict, an earlier request with the same request_id may have saved. | Fix the problem in what_happened, then retry with the same request_id if safe_to_retry is true. |
Only outcome done means the change was saved and checked. needs_review means it stopped before saving and a person decides, so don't start the same work again. not_sure_if_saved means a person must check the record, so never retry it. did_not_run means this call wrote nothing: fix the problem and retry with the same request_id when safe_to_retry is true. After request_id_conflict, an earlier request with the same request_id may have saved, so call get_run with first_run_id to see it.
proof says how strong the evidence behind done is: local means the record check ran on the computer that ran the workflow, sealed means a signed receipt exists, and simulated means a sandbox result that opened no app.
Try it
The sandbox serves one synthetic workflow, add_triage_note. Its sandbox_case input shows each outcome: normal, duplicate_record, false_saved_banner, timeout_after_save, and app_offline.
claude mcp add --scope user openadapt -- uvx --python 3.12 openadapt-agent serve
This only registers the server. Claude Code starts it the next time you run claude. Then call list_workflows, and run_workflow with a made-up note and a new request_id.
This installs openadapt-agent from PyPI. It requires openadapt-flow 2.1.0 or later, which is on PyPI and installs with it.
The skill name is openadapt-gui-write. It is never called computer use: your agent decides, and OpenAdapt does the entry.