> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentlinkops.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Request competitor inventory

> Request an inventory lookup for one approved member and revision from the configured owned corpus.

`request_competitor_inventory`

Request an inventory lookup for one approved member and revision from the configured owned corpus. Candidates remain unchecked. No supplier spending or monitoring enrollment. Missing corpus rows never prove backlink absence. Requires owned-corpus admission and a loaded corpus; unavailable configurations need an operator change, not a retry.

<Note>Hosted MCP registration verified. These schemas describe the development contract; confirm supported inputs with tools/list. Generic CLI/HTTP calls require a matching development server. Configure LINKTRAIL\_API\_URL; production does not expose these command routes.</Note>

| Access            | Behavior              |
| ----------------- | --------------------- |
| `discovery:write` | Writes or admits work |

Provider-backed admission requires enabled configuration and available allowance; registration alone does not make retrieval available. Inspect usage and the run’s coverage before interpreting results.

## Example request

Connect through [MCP](/guides/connect-mcp), [CLI](/guides/connect-cli), or [HTTP](/guides/connect-http). Replace example identifiers with records from your workspace.

<CodeGroup>
  ```json MCP theme={null}
  {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "request_competitor_inventory",
      "arguments": {
        "setId": "set_example",
        "revision": 1,
        "memberId": "member_example",
        "backlinksStatus": "live",
        "excludeInternalBacklinks": false,
        "pageLimit": 1,
        "rowLimit": 1,
        "idempotencyKey": "docs-request-001"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  linktrail call request_competitor_inventory --args '{"setId":"set_example","revision":1,"memberId":"member_example","backlinksStatus":"live","excludeInternalBacklinks":false,"pageLimit":1,"rowLimit":1,"idempotencyKey":"docs-request-001"}'
  ```

  ```bash HTTP theme={null}
  curl "$LINKTRAIL_API_URL/v1/commands/request_competitor_inventory" \
    -H "Authorization: Bearer $LINKTRAIL_API_KEY" \
    -H 'Content-Type: application/json' \
    --data '{"setId":"set_example","revision":1,"memberId":"member_example","backlinksStatus":"live","excludeInternalBacklinks":false,"pageLimit":1,"rowLimit":1,"idempotencyKey":"docs-request-001"}'
  ```
</CodeGroup>

## Returned result

Illustrative data validated against the documented response schema. IDs and dates are examples, not a live account capture. MCP returns this data in `structuredContent` and in a text content block; generic HTTP and CLI return the JSON result directly.

```json theme={null}
{
  "v": 1,
  "id": "dr_example",
  "workspace_id": "ws_example",
  "project_id": "pr_example",
  "provider": "linktrail_corpus",
  "data_mode": "owned_corpus",
  "query": {
    "target_kind": "domain",
    "target": "example.com",
    "include_subdomains": true,
    "backlinks_status_type": "live",
    "exclude_internal_backlinks": false,
    "mode": "as_is",
    "filters": null,
    "order_by": [
      "first_seen,desc"
    ],
    "rank_scale": null,
    "page_limit": 1,
    "row_limit": 1
  },
  "status": "queued",
  "created_at": "2026-09-13T12:00:00.000Z",
  "started_at": null,
  "finished_at": null,
  "coverage": "pending",
  "coverage_reason": null,
  "provider_total_count": null,
  "usage": {
    "unit": "discovery",
    "currency": "USD",
    "quote_id": "owned_example",
    "max_cost_microusd": 0,
    "reserved_cost_microusd": 0,
    "provider_reported_cost_microusd": null,
    "request_count": 0,
    "returned_rows": 0,
    "accepted_candidates": 0,
    "rejected_rows": 0,
    "duplicate_rows": 0
  },
  "operation": "backlinks",
  "coverage_scope": "corpus_subset",
  "whole_web_coverage": false,
  "replayed": false
}
```

## Input fields

Omit optional fields when you do not want to supply them. Null is accepted only where listed. Unknown input properties are rejected.

| Field                      | Type    | Presence | Meaning and constraints                                                                                                                |
| -------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `setId`                    | string  | Required | Identifier of the set returned by its create or list operation. minLength: 1; maxLength: 200                                           |
| `revision`                 | integer | Required | Immutable set revision to read or compare. minimum: 1; maximum: 9007199254740990                                                       |
| `memberId`                 | string  | Required | Identifier of the member returned by its create or list operation. pattern: "^\[a-zA-Z0-9\_-]\{1,128}\$"                               |
| `backlinksStatus`          | string  | Required | Supplier-reported backlink status filter; this is not Linktrail verification. values: "live", "lost", "all"                            |
| `excludeInternalBacklinks` | boolean | Required | Exclude supplier rows linking within the queried site.                                                                                 |
| `pageLimit`                | integer | Required | Maximum supplier rows requested per page, within the total row limit. minimum: 1; maximum: 1000                                        |
| `rowLimit`                 | integer | Required | Maximum total supplier rows admitted for this discovery run. minimum: 1; maximum: 1000                                                 |
| `idempotencyKey`           | string  | Required | Caller-generated key reused only for retries of the same operation and arguments in this workspace. pattern: "^\[\x21-\x7e]\{1,200}\$" |

### Validation and omitted values

backlinksStatus, excludeInternalBacklinks, pageLimit and rowLimit are required explicit policies, with no omitted-input defaults. The member supplies the previously approved target scope.

This operation needs configured owned-corpus admission. It does not accept an arbitrary provider field, buy supplier data or enroll monitoring.

## Output fields

Fields inside optional or nullable parents apply only when that parent exists. [Common schema conventions](/reference/schemas) explain evidence states, empty lists and extensions.

| Field                                   | Type           | Presence | Meaning and constraints                                                                                                                                                                                                                                                                                                                                                             |
| --------------------------------------- | -------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `v`                                     | number         | Required | v recorded for this result. must equal 1                                                                                                                                                                                                                                                                                                                                            |
| `id`                                    | string         | Required | Resource identifier returned by the operation. minLength: 1; maxLength: 128; pattern: "^\[a-zA-Z0-9\_-]+\$"                                                                                                                                                                                                                                                                         |
| `workspace_id`                          | string         | Required | Workspace that owns this record. minLength: 1; maxLength: 128; pattern: "^\[a-zA-Z0-9\_-]+\$"                                                                                                                                                                                                                                                                                       |
| `project_id`                            | string         | Required | Project that owns this record. minLength: 1; maxLength: 128; pattern: "^\[a-zA-Z0-9\_-]+\$"                                                                                                                                                                                                                                                                                         |
| `provider`                              | string         | Required | provider recorded for this result. values: "linktrail\_corpus", "dataforseo", "imported"                                                                                                                                                                                                                                                                                            |
| `data_mode`                             | string         | Required | data mode recorded for this result. values: "synthetic", "owned\_corpus", "provider\_index", "imported"                                                                                                                                                                                                                                                                             |
| `query`                                 | object         | Required | query recorded for this result. additional fields rejected                                                                                                                                                                                                                                                                                                                          |
| `query.target_kind`                     | string         | Required | target kind recorded for this result. values: "domain", "exact\_url"                                                                                                                                                                                                                                                                                                                |
| `query.target`                          | string         | Required | target recorded for this result. minLength: 1; maxLength: 4096                                                                                                                                                                                                                                                                                                                      |
| `query.include_subdomains`              | boolean        | Required | include subdomains recorded for this result.                                                                                                                                                                                                                                                                                                                                        |
| `query.backlinks_status_type`           | string         | Required | backlinks status type recorded for this result. values: "live", "lost", "all"                                                                                                                                                                                                                                                                                                       |
| `query.exclude_internal_backlinks`      | boolean        | Required | exclude internal backlinks recorded for this result.                                                                                                                                                                                                                                                                                                                                |
| `query.mode`                            | string         | Required | mode recorded for this result. must equal "as\_is"                                                                                                                                                                                                                                                                                                                                  |
| `query.filters`                         | null           | Required | filters recorded for this result.                                                                                                                                                                                                                                                                                                                                                   |
| `query.order_by`                        | array          | Required | order by recorded for this result. minItems: 1; maxItems: 1                                                                                                                                                                                                                                                                                                                         |
| `query.rank_scale`                      | string / null  | Required | rank scale recorded for this result.                                                                                                                                                                                                                                                                                                                                                |
| `query.page_limit`                      | integer        | Required | page limit recorded for this result. minimum: 1; maximum: 1000                                                                                                                                                                                                                                                                                                                      |
| `query.row_limit`                       | integer        | Required | row limit recorded for this result. minimum: 1; maximum: 1000                                                                                                                                                                                                                                                                                                                       |
| `status`                                | string         | Required | Resource lifecycle status. values: "queued", "running", "succeeded", "partial", "failed", "reconciliation\_required"                                                                                                                                                                                                                                                                |
| `created_at`                            | string         | Required | UTC timestamp when the record was created. format: "date-time"; pattern: "^(?:(?:\d\d\[2468]\[048]\|\d\d\[13579]\[26]\|\d\d0\[48]\|\[02468]\[048]00\|\[13579]\[26]00)-02-29\|\d\{4}-(?:(?:0\[13578]\|1\[02])-(?:0\[1-9]\|\[12]\d\|3\[01])\|(?:0\[469]\|11)-(?:0\[1-9]\|\[12]\d\|30)\|(?:02)-(?:0\[1-9]\|1\d\|2\[0-8])))T(?:(?:\[01]\d\|2\[0-3]):\[0-5]\d:\[0-5]\d\\.\d\{3}(?:Z))\$" |
| `started_at`                            | string / null  | Required | started at recorded for this result.                                                                                                                                                                                                                                                                                                                                                |
| `finished_at`                           | string / null  | Required | finished at recorded for this result.                                                                                                                                                                                                                                                                                                                                               |
| `coverage`                              | string         | Required | Dataset scope and completeness, including limits on what these results establish. values: "pending", "complete\_for\_query", "capped", "partial", "unknown"                                                                                                                                                                                                                         |
| `coverage_reason`                       | string / null  | Required | coverage reason recorded for this result.                                                                                                                                                                                                                                                                                                                                           |
| `provider_total_count`                  | integer / null | Required | provider total count recorded for this result.                                                                                                                                                                                                                                                                                                                                      |
| `usage`                                 | object         | Required | usage recorded for this result. additional fields rejected                                                                                                                                                                                                                                                                                                                          |
| `usage.unit`                            | string         | Required | unit recorded for this result. must equal "discovery"                                                                                                                                                                                                                                                                                                                               |
| `usage.currency`                        | string         | Required | currency recorded for this result. must equal "USD"                                                                                                                                                                                                                                                                                                                                 |
| `usage.quote_id`                        | string         | Required | quote id recorded for this result. minLength: 1; maxLength: 128; pattern: "^\[a-zA-Z0-9\_-]+\$"                                                                                                                                                                                                                                                                                     |
| `usage.max_cost_microusd`               | integer        | Required | max cost microusd recorded for this result. minimum: 0; maximum: 9007199254740991                                                                                                                                                                                                                                                                                                   |
| `usage.reserved_cost_microusd`          | integer        | Required | reserved cost microusd recorded for this result. minimum: 0; maximum: 9007199254740991                                                                                                                                                                                                                                                                                              |
| `usage.provider_reported_cost_microusd` | integer / null | Required | provider reported cost microusd recorded for this result.                                                                                                                                                                                                                                                                                                                           |
| `usage.request_count`                   | integer        | Required | request count recorded for this result. minimum: 0; maximum: 9007199254740991                                                                                                                                                                                                                                                                                                       |
| `usage.returned_rows`                   | integer        | Required | returned rows recorded for this result. minimum: 0; maximum: 9007199254740991                                                                                                                                                                                                                                                                                                       |
| `usage.accepted_candidates`             | integer        | Required | accepted candidates recorded for this result. minimum: 0; maximum: 9007199254740991                                                                                                                                                                                                                                                                                                 |
| `usage.rejected_rows`                   | integer        | Required | rejected rows recorded for this result. minimum: 0; maximum: 9007199254740991                                                                                                                                                                                                                                                                                                       |
| `usage.duplicate_rows`                  | integer        | Required | duplicate rows recorded for this result. minimum: 0; maximum: 9007199254740991                                                                                                                                                                                                                                                                                                      |
| `operation`                             | string         | Required | operation recorded for this result. must equal "backlinks"                                                                                                                                                                                                                                                                                                                          |
| `coverage_scope`                        | string         | Required | coverage scope recorded for this result. values: "customer\_import", "corpus\_subset", "provider\_query"                                                                                                                                                                                                                                                                            |
| `whole_web_coverage`                    | boolean        | Required | False: these results do not measure the whole web. must equal false                                                                                                                                                                                                                                                                                                                 |
| `replayed`                              | boolean        | Optional | True when the response reuses an earlier request with the same idempotency value.                                                                                                                                                                                                                                                                                                   |

[Download input schema](/schemas/request_competitor_inventory.input.json) · [Download output schema](/schemas/request_competitor_inventory.output.json)

## Errors and retries

The command is annotated idempotent. Reuse an accepted idempotency key when the input provides one; changing the payload under a reused key can conflict.

See [error recovery](/reference/errors) for status, scope, cooldown, cursor and retry handling. Unknown observations are result data and do not establish loss.

## HTTP resource routes

These existing resource routes share the operation’s domain behavior. Their parameter placement, status and response envelope can differ from generic invocation. See [HTTP route details](/reference/http/routes).

| Method and route                        | Success | Details                                                                                                                   |
| --------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- |
| `POST /v1/competitor-sets/{setId}/runs` | 202     | Remaining arguments go in a JSON object body. Supply idempotencyKey as the Idempotency-Key header on this resource route. |

## Continue

[get\_discovery\_run](/reference/commands/get_discovery_run) · [capture\_competitor\_inventory](/reference/commands/capture_competitor_inventory)

Follow the [related workflow](/guides/competitor-research), inspect [capability status](/capability-status), or return to the [command index](/reference/index).
