STAP (Simple Task-Actor Protocol) is a machine-readable format for specifying user-interface changes.

Main focus of STAP is in providing a functionally-equivalent task experience for human and computational users alike. In its focus to make human software usable by machine agents, STAP aims to eliminate non-task-essential design choices (e.g. font type/size may be irrelevant for many task types), leaving those to be optionally specified via customizable templates (e.g. CSS).

STAP messages adhere to JSON formatting, and can be deserialized with any standard JSON library.

Deploying a STAP application is similar to deploying a web application, where STAP takes place of HTML as the language for UI description. Much like HTML, STAP is a means for serializing task interface display and interactions. Unlike HTML documents, STAP messages are incremental updates to the display. Whereas HTML is focused on hypertext look and feel, STAP is focused on function, structure, and affordances of UI elements (though it enables style-sheets for detailed look&feel specification).

Benefits of task development with STAP:

Benefits of agent development for STAP-compliant tasks:

Please see stap.txt for complete syntax and functionality.

Sample Interactions:

<-     Message received by task software from user software
->     Message sent from task software to user software

Sample Interaction:
    // display "Hello World" and a "Click Me" button
    -> ["Hello World",{"id":"Click Me","v":false}]
    // (3.8 seconds into the task) user clicks the button
    <- [3800,"Click Me",true]
    // remove "Click Me" button
    -> {"_":"Click Me","v":null}