A browser agent reaches the reports page, clicks Export, and hits a timeout. Tomorrow, another agent gets the same assignment. What should it remember from that attempt?

browser-flow-digest turns the recorded session into workflow memory. You get ordered actions with their preconditions, plus failure hints tied to the trace. Reuse notes explain what needs attention before another attempt.

The browser-flow-digest endpoint costs 0.02 USDC per call, paid through x402 on Base mainnet. Route a task here when you've already got a browser trace and want a recipe for a future run.

Send an action array or a text trace

Make a JSON POST request to:

https://x402.agentutility.ai/browser-flow-digest

The required trajectory field accepts a nonempty JSON array of recorded actions or a nonempty string. Here's an illustrative request body using an array:

{
  "trajectory": [
    {
      "step": 1,
      "action": "navigate",
      "url": "https://app.example.com/reports",
      "observation": "Reports page loaded; #export is visible."
    },
    {
      "step": 2,
      "action": "click",
      "selector": "#export",
      "outcome": "Timed out after 10000 ms; no download observed."
    }
  ],
  "goal": "Download the current report."
}

These action-object fields describe this example's recording format. The request contract accepts an array without prescribing a fixed schema for each action. Keep your recorder's useful evidence, especially observed outcomes and exact selectors.

Prefer plain text? The same session can be sent this way:

{
  "trajectory": "1. Opened https://app.example.com/reports. Reports page loaded; #export was visible.\n2. Clicked #export. Timed out after 10000 ms; no download observed.",
  "goal": "Download the current report."
}

Both forms travel inside a JSON body. A text trace belongs in the trajectory string; a binary trace archive needs conversion before submission.

The trajectory limit is 60,000 characters, measured after serialization for arrays. Empty traces and unsupported types receive HTTP 400. An oversized trajectory receives HTTP 413.

Give the goal without rewriting the evidence

goal is optional and accepts a string up to 300 characters. Use it to state the intended result, such as “Download the current report.” Omit it if the trace already makes the task clear.

Intent isn't completion.

In the example, the goal explains why the agent clicked Export. The recorded result still says that no download was observed. The digest's instructions require steps and outcomes to stay grounded in the supplied trajectory, with gaps recorded in unknowns.

And preserve failure details when preparing the input. Removing the timeout would discard evidence the next agent needs.

Read the digest as a replay plan

The response contains a digest object. Its workflow_name gives the recipe a short label, while steps holds the ordered actions. Each step has five fields:

{
  "order": 2,
  "action": "click the export button",
  "target": "#export",
  "precondition": "Reports page is loaded and #export is visible.",
  "outcome": "Click timed out after 10000 ms; no download observed."
}

That's an illustrative step derived from the request above, not a captured response.

The top-level preconditions array describes requirements for replaying the workflow. Each step's singular precondition describes what must be true immediately before that action.

failure_hints identifies failures or fragile portions of the recording. For this trace, the timeout belongs there. Its cause remains unresolved: the recording doesn't establish why the click failed.

Store the gaps with the recipe

reusability_notes is a string explaining how the digest applies to a similar future task and what needs to change. Keep it beside the steps when saving workflow memory.

But keep unknowns too. That array records missing evidence, which helps the next agent decide what to inspect before acting. Here, the next run needs to establish what happened after the Export click.

For an agent router, a useful sequence is to request the digest after a session ends, then save it with a reference to the original trace. Before replay, check the current page against the recorded preconditions. After clicking Export, record whether a download appeared so the next digest has an observed result to work with.