> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.middesk.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.middesk.com/_mcp/server.

# Review work

> Review agent findings, resulting actions, and changes to the Business report

After an agent takes action on a Business report, Middesk stores a record of its findings and how each finding was applied or not applied to the report. This record is represented as an `agent_application` in the API.

## Understanding the results

Each `agent_application` answers three questions:

* **What did the agent find?** `resolutions` contains one entry for each reviewed finding. `original_artifact` preserves what the agent proposed and any supporting sources, while `agent_display_name` identifies the agent that produced it.
* **What was done with those findings?** `outcome` records how the finding was handled. `resolved_artifact`, `correction`, and `exclusion` show any adjustments. `actions` lists the actions taken, and `execution_result` shows whether they were applied, partially applied, left the report unchanged, or failed.
* **How did the Business report change?** `changes` contains the effects recorded for completed actions, and `report_transitions` summarizes relevant before-and-after report values. At the application level, `review_task_transitions` records corresponding changes to the Business's review tasks.

## Checking screenshot capture status

When web evidence screenshot capture is enabled for your agents, the `screenshot_captures` object tells you whether captures have completed for an agent run.

| Value                                          | Meaning                                                                                          | Action                                            |
| :--------------------------------------------- | :----------------------------------------------------------------------------------------------- | :------------------------------------------------ |
| `null`                                         | The run has no screenshot captures.                                                              | Continue without waiting for captures.            |
| `{ "settled_at": null }`                       | At least one screenshot capture is pending.                                                      | Wait for capture to finish.                       |
| `{ "settled_at": "2026-09-09T10:00:00.123Z" }` | All screenshot capture attempts are complete. Failed and unavailable captures count as complete. | Continue with your screenshot-dependent workflow. |

Only one state indicates pending work, so check for that state rather than for a timestamp:

**`Check for pending screenshot captures`**

```javascript title="Check for pending screenshot captures"
const captures = application.screenshot_captures;
const screenshotCapturePending =
  captures !== null && captures.settled_at === null;
```

`screenshot_captures` reflects the status for the result's `run_id`. If another agent run applies findings, its new result may show pending captures even when earlier results are settled.

When a screenshot is available, its source includes a `screenshot_id` that you can use to [retrieve the Document](/api-reference/documents/get-a-document).

If your workflow requires available screenshots in the [Business PDF](/api-reference/business-verification/businesses/retrieve-a-business-pdf), retrieve the latest PDF when no captures are pending.

## Receiving updates through webhooks

Middesk sends a `business.updated` event after an agent finishes acting on its findings and its `agent_application` can be reviewed. If screenshots are still pending, Middesk sends another `business.updated` event after all capture operations finish.

Default webhook payloads don't include `agent_applications`. To include these records and their screenshot status, add `agent_applications` and the nested `screenshot_captures` field to a custom event schema.

Use the [webhook event schema API](/api-reference/webhooks/create-webhook-event-schema) to configure these fields, then choose which [webhook events](/work-with-agents/webhooks) to subscribe to and when they are sent.

## Agent application fields

Select only the fields your integration uses. The following selection shows every available field:

**`Agent application fields`**

```graphql title="Agent application fields"
{
  id
  agent_applications {
    object
    id
    run_id
    thread_id
    created_at
    finalized_at
    applied_by {
      id
      name
      email
    }
    screenshot_captures {
      settled_at
    }
    review_task_transitions {
      key
      before
      after
    }
    resolutions {
      object
      id
      artifact_id
      agent
      agent_display_name
      original_artifact
      resolved_artifact
      report_record {
        object
        id
      }
      artifact_field
      outcome
      decision_mode
      proposed_value
      resolved_value
      correction {
        id
        original_value
        resolved_value
        reason
        created_at
      }
      exclusion {
        id
        created_at
      }
      selected_sources
      execution_result
      actions {
        id
        type
        status
        completed_at
      }
      changes {
        kind
        report_record {
          object
          id
          namespace
        }
        operation
        before
        after
      }
      report_transitions {
        key
        label
        kind
        before
        after
        before_intent
        after_intent
      }
    }
  }
}
```

Each result contains these top-level fields:

| Field                     | Type             | Description                                                                                       |
| :------------------------ | :--------------- | :------------------------------------------------------------------------------------------------ |
| `object`                  | string           | Always `agent_application`.                                                                       |
| `id`                      | string           | Unique identifier for the result.                                                                 |
| `run_id`                  | string           | Identifier for the run that produced the findings.                                                |
| `thread_id`               | string or `null` | Identifier for the thread containing the run.                                                     |
| `created_at`              | string           | ISO 8601 timestamp when Middesk created the result.                                               |
| `finalized_at`            | string           | ISO 8601 timestamp when Middesk finalized the result.                                             |
| `applied_by`              | object or `null` | The `id`, `name`, and `email` of the person who applied the findings.                             |
| `screenshot_captures`     | object or `null` | Web evidence screenshot capture status for the run.                                               |
| `review_task_transitions` | array            | Review task changes, including the task `key` and JSON `before` and `after` values.               |
| `resolutions`             | array            | Agent findings and the decisions, adjustments, actions, and Business changes resulting from them. |

## Automating how findings are applied

Each item in `resolutions` includes `decision_mode`, which shows whether its outcome was chosen manually or automatically. Learn about configuring your [interrupt policy](/work-with-agents/interrupt-policy) to control which findings apply automatically and which pause for human review.

> **Get a demo**
>
> Contact your account manager or [contact sales](https://www.middesk.com/contact-sales) to inquire about access.