diff --git a/fep/61cf/fep-61cf.md b/fep/61cf/fep-61cf.md
index 244b465..11965d6 100644
--- a/fep/61cf/fep-61cf.md
+++ b/fep/61cf/fep-61cf.md
@@ -36,6 +36,32 @@ This `zid=` mechanism is not necessarily specific to OpenWebAuth. It can be used
## Operation of the protocol
+The protocol can be summarised in a sequence diagram as below. This diagram shows the `zid=` case, where the user is not prompted to log in.
+
+```mermaid
+sequenceDiagram
+ participant browser as Browser
+ participant target as Target instance
+ participant home as Home instance
+
+ browser ->> target: GET /page?zid=user@home
+ target ->> home: webfinger user@home
+ home -->> target: location of redirection endpoint
+ target -->> browser: Location: https://home.example/magic?...
+ browser ->> home: GET /magic?...
+ Note over home: Check user is logged in,
eg by checking session cookie
+ home ->> target: webfinger /
+ target -->> home: location of token endpoint
+ rect rgb(216, 255, 216)
+ Note over home,target: Protected by actor's private key
+ home ->> target: GET /token
(signed)
+ target -->> home:
(encrypted)
+ end
+ home -->> browser: Location: https://target.example/page?owt=
+ browser ->> target: GET /page?owt=
+ target -->> browser:
+```
+
Regardless of how the flow is started, the protocol begins with the user's browser making a request to the target instance.
### 1. Redirection to home instance