`inspect` is the second control tool. It is the contract boundary between a provider-neutral job and a provider-backed catalog tool. Inspect before every unfamiliar run.

## Signature

```text
inspect({ tool_id })
```

The canonical field is `tool_id`, returned by `discover`. The deprecated `capability_id` alias remains accepted during the compatibility window. If both are present, they must identify the same stable id.

```json
{
  "name": "inspect",
  "arguments": {
    "tool_id": "<tool_id returned by discover>"
  }
}
```

## Return shape

The response contains the current public contract: identity and summary, price and unit, connection state, input schema, a human-verified `worked_example` when one exists, and `common_errors`. It also provides `next_step` and warnings when the connection or health needs attention.

```json
{
  "id": "<catalog tool id>",
  "name": "<catalog tool>",
  "input_schema": { "type": "object" },
  "worked_example": {
    "input": { "<field>": "<example value>" },
    "output": { "<provider result>": "<redacted value>" }
  },
  "common_errors": [],
  "next_step": "Copy worked_example.input and call run."
}
```

Do not copy a provider schema, price or worked example from this documentation. Those fields can change and belong to the live response.

## Common errors and recovery

- Missing `tool_id`: return to `discover`; ids are not guessed.
- Unknown id: search again because the record may be unpublished, archived or no longer live.
- Missing worked example: follow `input_schema` exactly and treat the call as higher risk.
- `requires_connection` with `connected: false`: give the human the `connect_url` from the next run error.

Once the input is understood, continue to [run](https://scrollport.com/docs/control-tools/run).