MCP execution waits for a result by default, for up to approximately 55 seconds. Slow work returns a pending `job_id` instead of holding the request indefinitely.

## Pending work

Call `upscrape_get_job_result` with the returned job ID. Continue with bounded backoff until the tool reports a completed or failed state.

Do not call `upscrape_execute` again merely because the first result was pending. The job ID is the durable state handle.

## Result preview limit

MCP result previews are limited to 24 KiB. If a result exceeds that size, the response is explicitly marked as truncated.

For the full representation, use the authenticated REST job endpoint:

```text
GET https://data.upscrape.com/jobs/JOB_ID
```

The same API key can be used directly. An OAuth-backed consumer client should rely on the capabilities exposed by that client rather than exporting its access token.

## Charging

Execution charges the capability's published credit cost once on successful completion. Pending responses, result retrieval, transport retries, and failed jobs do not add another capability charge.

## Cancellation and progress

Server-initiated progress reporting and job cancellation are not implemented yet. A client may stop polling, but that does not cancel the worker job. The future contract is tracked on the [planned progress and cancellation page](/docs/mcp/advanced-jobs).
