> ## 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.

# Competitor Intelligence tools

> Inputs, access and errors for 14 registered competitor intelligence tools.

Generated 2026-09-13T03:11:22.248Z from `src/tool-registry.js` by `scripts/export-mint-tool-docs.mjs`. 14 of 62 registered tools. Authenticated cloud tools have REST endpoints under `/v1/`. The anonymous `verify_link_free` tool uses `POST /free/check` and `/free/mcp`.

## create\_competitor\_set

Explicitly approve one customer and up to ten competitors. Registration does not verify links or buy discovery.

* **State**: Registered and locally tested.
* **Access**: write · scope: `discovery:write` · defined at `src/tool-registry.js:29`

| Input       | Type    | Required | Notes                                                                        |
| ----------- | ------- | -------- | ---------------------------------------------------------------------------- |
| `projectId` | string  | yes      | Identifier of the project returned by its create or list operation.          |
| `approved`  | boolean | yes      | Explicit approval required to freeze this customer and competitor selection. |
| `members`   | array   | yes      | Customer and competitor members approved for this set revision.              |

**Side effects**: write

**Error codes**: `COMPETITOR_INVENTORY_NOT_FOUND` · `COMPETITOR_MEMBER_NOT_FOUND` · `COMPETITOR_REVISION_CONFLICT` · `COMPETITOR_RUN_NOT_FOUND` · `COMPETITOR_SET_NOT_FOUND` · `COMPETITOR_SET_RETIRED` · `EXCLUSION_REVISION_CONFLICT` · `EXCLUSION_REVISION_NOT_FOUND` · `INVALID_COMPETITOR_MEMBER` · `INVALID_CURSOR` · `REPORT_GROUP_NOT_FOUND` · `REPORT_INVENTORY_MISMATCH` · `SNAPSHOT_INVALID_STORED_DATA`

## list\_competitor\_sets

List approved competitor sets in one accessible project, including retired sets.

* **State**: Registered and locally tested.
* **Access**: read · scope: `discovery:read` · defined at `src/tool-registry.js:30`

| Input       | Type    | Required | Notes                                                                       |
| ----------- | ------- | -------- | --------------------------------------------------------------------------- |
| `projectId` | string  | yes      | Identifier of the project returned by its create or list operation.         |
| `cursor`    | string  | no       | Opaque continuation returned by this same listing; omit for the first page. |
| `limit`     | integer | no       | Maximum rows in this page or bounded report; subject to the schema maximum. |

**Error codes**: `COMPETITOR_INVENTORY_NOT_FOUND` · `COMPETITOR_MEMBER_NOT_FOUND` · `COMPETITOR_REVISION_CONFLICT` · `COMPETITOR_RUN_NOT_FOUND` · `COMPETITOR_SET_NOT_FOUND` · `COMPETITOR_SET_RETIRED` · `EXCLUSION_REVISION_CONFLICT` · `EXCLUSION_REVISION_NOT_FOUND` · `INVALID_COMPETITOR_MEMBER` · `INVALID_CURSOR` · `REPORT_GROUP_NOT_FOUND` · `REPORT_INVENTORY_MISMATCH` · `SNAPSHOT_INVALID_STORED_DATA`

## get\_competitor\_set

Read an approved competitor revision; historical revisions stay immutable.

* **State**: Registered and locally tested.
* **Access**: read · scope: `discovery:read` · defined at `src/tool-registry.js:31`

| Input      | Type    | Required | Notes                                                           |
| ---------- | ------- | -------- | --------------------------------------------------------------- |
| `setId`    | string  | yes      | Identifier of the set returned by its create or list operation. |
| `revision` | integer | no       | Immutable set revision to read or compare.                      |

**Error codes**: `COMPETITOR_INVENTORY_NOT_FOUND` · `COMPETITOR_MEMBER_NOT_FOUND` · `COMPETITOR_REVISION_CONFLICT` · `COMPETITOR_RUN_NOT_FOUND` · `COMPETITOR_SET_NOT_FOUND` · `COMPETITOR_SET_RETIRED` · `EXCLUSION_REVISION_CONFLICT` · `EXCLUSION_REVISION_NOT_FOUND` · `INVALID_COMPETITOR_MEMBER` · `INVALID_CURSOR` · `REPORT_GROUP_NOT_FOUND` · `REPORT_INVENTORY_MISMATCH` · `SNAPSHOT_INVALID_STORED_DATA`

## update\_competitor\_set

Approve a complete new member revision with optimistic concurrency. Keep member IDs only for unchanged members.

* **State**: Registered and locally tested.
* **Access**: write · scope: `discovery:write` · defined at `src/tool-registry.js:32`

| Input              | Type    | Required | Notes                                                                        |
| ------------------ | ------- | -------- | ---------------------------------------------------------------------------- |
| `setId`            | string  | yes      | Identifier of the set returned by its create or list operation.              |
| `expectedRevision` | integer | yes      | Revision last read by the caller; mismatches reject concurrent updates.      |
| `approved`         | boolean | yes      | Explicit approval required to freeze this customer and competitor selection. |
| `members`          | array   | yes      | Customer and competitor members approved for this set revision.              |

**Side effects**: write

**Error codes**: `COMPETITOR_INVENTORY_NOT_FOUND` · `COMPETITOR_MEMBER_NOT_FOUND` · `COMPETITOR_REVISION_CONFLICT` · `COMPETITOR_RUN_NOT_FOUND` · `COMPETITOR_SET_NOT_FOUND` · `COMPETITOR_SET_RETIRED` · `EXCLUSION_REVISION_CONFLICT` · `EXCLUSION_REVISION_NOT_FOUND` · `INVALID_COMPETITOR_MEMBER` · `INVALID_CURSOR` · `REPORT_GROUP_NOT_FOUND` · `REPORT_INVENTORY_MISMATCH` · `SNAPSHOT_INVALID_STORED_DATA`

## retire\_competitor\_set

Retire a competitor set to stop new inventory requests; preserve approved revisions and dated evidence.

* **State**: Registered and locally tested.
* **Access**: write · scope: `discovery:write` · defined at `src/tool-registry.js:33`

| Input              | Type    | Required | Notes                                                                   |
| ------------------ | ------- | -------- | ----------------------------------------------------------------------- |
| `setId`            | string  | yes      | Identifier of the set returned by its create or list operation.         |
| `expectedRevision` | integer | yes      | Revision last read by the caller; mismatches reject concurrent updates. |

**Side effects**: write

**Error codes**: `COMPETITOR_INVENTORY_NOT_FOUND` · `COMPETITOR_MEMBER_NOT_FOUND` · `COMPETITOR_REVISION_CONFLICT` · `COMPETITOR_RUN_NOT_FOUND` · `COMPETITOR_SET_NOT_FOUND` · `COMPETITOR_SET_RETIRED` · `EXCLUSION_REVISION_CONFLICT` · `EXCLUSION_REVISION_NOT_FOUND` · `INVALID_COMPETITOR_MEMBER` · `INVALID_CURSOR` · `REPORT_GROUP_NOT_FOUND` · `REPORT_INVENTORY_MISMATCH` · `SNAPSHOT_INVALID_STORED_DATA`

## request\_competitor\_inventory

Request separately metered discovery bound to one approved member and revision. Provider admission remains disabled. No monitoring enrollment.

* **State**: Admission-gated: refuses live with `true`
* **Access**: write · scope: `discovery:write` · defined at `src/tool-registry.js:34`

| Input                      | Type    | Required | Notes                                                                                                  |
| -------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------ |
| `setId`                    | string  | yes      | Identifier of the set returned by its create or list operation.                                        |
| `revision`                 | integer | yes      | Immutable set revision to read or compare.                                                             |
| `memberId`                 | string  | yes      | Identifier of the member returned by its create or list operation.                                     |
| `backlinksStatus`          | string  | yes      | Supplier-reported backlink status filter; this is not Linktrail verification.; one of: live, lost, all |
| `excludeInternalBacklinks` | boolean | yes      | Exclude supplier rows linking within the queried site.                                                 |
| `pageLimit`                | integer | yes      | Maximum supplier rows requested per page, within the total row limit.                                  |
| `rowLimit`                 | integer | yes      | Maximum total supplier rows admitted for this discovery run.                                           |
| `idempotencyKey`           | string  | yes      | Caller-generated key reused only for retries of the same operation and arguments in this workspace.    |

**Side effects**: write

**Error codes**: `COMPETITOR_INVENTORY_NOT_FOUND` · `COMPETITOR_MEMBER_NOT_FOUND` · `COMPETITOR_REVISION_CONFLICT` · `COMPETITOR_RUN_NOT_FOUND` · `COMPETITOR_SET_NOT_FOUND` · `COMPETITOR_SET_RETIRED` · `EXCLUSION_REVISION_CONFLICT` · `EXCLUSION_REVISION_NOT_FOUND` · `INVALID_COMPETITOR_MEMBER` · `INVALID_CURSOR` · `REPORT_GROUP_NOT_FOUND` · `REPORT_INVENTORY_MISMATCH` · `SNAPSHOT_INVALID_STORED_DATA`

## capture\_competitor\_inventory

Freeze one terminal, previously bound discovery run into an immutable inventory. Reads only stored evidence; never purchases a query or checks links.

* **State**: Registered and locally tested.
* **Access**: write · scope: `discovery:write` · defined at `src/tool-registry.js:35`

| Input   | Type   | Required | Notes                                                           |
| ------- | ------ | -------- | --------------------------------------------------------------- |
| `runId` | string | yes      | Identifier of the run returned by its create or list operation. |

**Side effects**: write

**Error codes**: `COMPETITOR_INVENTORY_NOT_FOUND` · `COMPETITOR_MEMBER_NOT_FOUND` · `COMPETITOR_REVISION_CONFLICT` · `COMPETITOR_RUN_NOT_FOUND` · `COMPETITOR_SET_NOT_FOUND` · `COMPETITOR_SET_RETIRED` · `EXCLUSION_REVISION_CONFLICT` · `EXCLUSION_REVISION_NOT_FOUND` · `INVALID_COMPETITOR_MEMBER` · `INVALID_CURSOR` · `REPORT_GROUP_NOT_FOUND` · `REPORT_INVENTORY_MISMATCH` · `SNAPSHOT_INVALID_STORED_DATA`

## list\_competitor\_inventories

List dated inventory summaries for one approved set revision. Missing edges are not confirmed absence.

* **State**: Registered and locally tested.
* **Access**: read · scope: `discovery:read` · defined at `src/tool-registry.js:36`

| Input      | Type    | Required | Notes                                                                       |
| ---------- | ------- | -------- | --------------------------------------------------------------------------- |
| `setId`    | string  | yes      | Identifier of the set returned by its create or list operation.             |
| `revision` | integer | yes      | Immutable set revision to read or compare.                                  |
| `memberId` | string  | no       | Identifier of the member returned by its create or list operation.          |
| `cursor`   | string  | no       | Opaque continuation returned by this same listing; omit for the first page. |
| `limit`    | integer | no       | Maximum rows in this page or bounded report; subject to the schema maximum. |

**Error codes**: `COMPETITOR_INVENTORY_NOT_FOUND` · `COMPETITOR_MEMBER_NOT_FOUND` · `COMPETITOR_REVISION_CONFLICT` · `COMPETITOR_RUN_NOT_FOUND` · `COMPETITOR_SET_NOT_FOUND` · `COMPETITOR_SET_RETIRED` · `EXCLUSION_REVISION_CONFLICT` · `EXCLUSION_REVISION_NOT_FOUND` · `INVALID_COMPETITOR_MEMBER` · `INVALID_CURSOR` · `REPORT_GROUP_NOT_FOUND` · `REPORT_INVENTORY_MISMATCH` · `SNAPSHOT_INVALID_STORED_DATA`

## list\_competitor\_inventory\_rows

Page exact stored source/target rows with contributor identity and captured verification state. No provider tokens or raw evidence.

* **State**: Registered and locally tested.
* **Access**: read · scope: `discovery:read` · defined at `src/tool-registry.js:37`

| Input         | Type    | Required | Notes                                                                       |
| ------------- | ------- | -------- | --------------------------------------------------------------------------- |
| `inventoryId` | string  | yes      | Identifier of the inventory returned by its create or list operation.       |
| `cursor`      | string  | no       | Opaque continuation returned by this same listing; omit for the first page. |
| `limit`       | integer | no       | Maximum rows in this page or bounded report; subject to the schema maximum. |

**Error codes**: `COMPETITOR_INVENTORY_NOT_FOUND` · `COMPETITOR_MEMBER_NOT_FOUND` · `COMPETITOR_REVISION_CONFLICT` · `COMPETITOR_RUN_NOT_FOUND` · `COMPETITOR_SET_NOT_FOUND` · `COMPETITOR_SET_RETIRED` · `EXCLUSION_REVISION_CONFLICT` · `EXCLUSION_REVISION_NOT_FOUND` · `INVALID_COMPETITOR_MEMBER` · `INVALID_CURSOR` · `REPORT_GROUP_NOT_FOUND` · `REPORT_INVENTORY_MISMATCH` · `SNAPSHOT_INVALID_STORED_DATA`

## get\_competitor\_gap\_report

Compare selected frozen inventories by exact page or source host. Missing edges are dataset-qualified; incomplete data cannot establish gaps. Page groups or pass groupKey for exact contributor rows. Select exclusionRevision explicitly to apply saved rules. Never buys discovery or checks links.

* **State**: Registered and locally tested.
* **Access**: read · scope: `discovery:read` · defined at `src/tool-registry.js:38`

| Input                | Type    | Required | Notes                                                                                      |
| -------------------- | ------- | -------- | ------------------------------------------------------------------------------------------ |
| `setId`              | string  | yes      | Identifier of the set returned by its create or list operation.                            |
| `revision`           | integer | yes      | Immutable set revision to read or compare.                                                 |
| `inventoryIds`       | array   | yes      | Frozen inventory IDs to compare; records must belong to the approved set.                  |
| `grouping`           | string  | yes      | Grouping dimension used to aggregate the selected inventories.; one of: page, source\_host |
| `exclusions`         | array   | no       | Customer-approved exclusions to apply to this report.                                      |
| `maxRetrievalSkewMs` | integer | no       | Maximum permitted difference between inventory retrieval times, in milliseconds.           |
| `exclusionRevision`  | integer | no       | Saved exclusion revision to apply; historical revisions remain immutable.                  |
| `groupKey`           | string  | no       | Exact group key returned by the report being inspected.                                    |
| `cursor`             | string  | no       | Opaque continuation returned by this same listing; omit for the first page.                |
| `limit`              | integer | no       | Maximum rows in this page or bounded report; subject to the schema maximum.                |

**Error codes**: `COMPETITOR_INVENTORY_NOT_FOUND` · `COMPETITOR_MEMBER_NOT_FOUND` · `COMPETITOR_REVISION_CONFLICT` · `COMPETITOR_RUN_NOT_FOUND` · `COMPETITOR_SET_NOT_FOUND` · `COMPETITOR_SET_RETIRED` · `EXCLUSION_REVISION_CONFLICT` · `EXCLUSION_REVISION_NOT_FOUND` · `INVALID_COMPETITOR_MEMBER` · `INVALID_CURSOR` · `REPORT_GROUP_NOT_FOUND` · `REPORT_INVENTORY_MISMATCH` · `SNAPSHOT_INVALID_STORED_DATA`

## get\_domain\_mix\_report

Render the referring-domain mix over supplied discovery lanes: generic and niche splits from the labels your imported rows carry, ours against each selected frozen inventory, with label coverage, per-lane counts and the padding-guidance report line. Lanes are request data and never stored. One to twenty lanes, up to 2000 rows each. Never buys discovery or checks links.

* **State**: Registered and locally tested.
* **Access**: read · scope: `discovery:read` · defined at `src/tool-registry.js:39`

| Input                | Type    | Required | Notes                                                                            |
| -------------------- | ------- | -------- | -------------------------------------------------------------------------------- |
| `setId`              | string  | yes      | Identifier of the set returned by its create or list operation.                  |
| `revision`           | integer | no       | Immutable set revision to read or compare.                                       |
| `inventoryIds`       | array   | no       | Frozen inventory IDs to compare; records must belong to the approved set.        |
| `lanes`              | array   | yes      | Evidence lanes included in the domain-mix report.                                |
| `limit`              | integer | no       | Maximum rows in this page or bounded report; subject to the schema maximum.      |
| `maxRetrievalSkewMs` | integer | no       | Maximum permitted difference between inventory retrieval times, in milliseconds. |

**Error codes**: `COMPETITOR_INVENTORY_NOT_FOUND` · `COMPETITOR_MEMBER_NOT_FOUND` · `COMPETITOR_REVISION_CONFLICT` · `COMPETITOR_RUN_NOT_FOUND` · `COMPETITOR_SET_NOT_FOUND` · `COMPETITOR_SET_RETIRED` · `EXCLUSION_REVISION_CONFLICT` · `EXCLUSION_REVISION_NOT_FOUND` · `INVALID_COMPETITOR_MEMBER` · `INVALID_CURSOR` · `REPORT_GROUP_NOT_FOUND` · `REPORT_INVENTORY_MISMATCH` · `SNAPSHOT_INVALID_STORED_DATA`

## get\_competitor\_exclusions

Read current or historical saved source exclusion rules for an accessible competitor set. Revision zero means no saved rules.

* **State**: Registered and locally tested.
* **Access**: read · scope: `discovery:read` · defined at `src/tool-registry.js:40`

| Input      | Type    | Required | Notes                                                           |
| ---------- | ------- | -------- | --------------------------------------------------------------- |
| `setId`    | string  | yes      | Identifier of the set returned by its create or list operation. |
| `revision` | integer | no       | Immutable set revision to read or compare.                      |

**Error codes**: `COMPETITOR_INVENTORY_NOT_FOUND` · `COMPETITOR_MEMBER_NOT_FOUND` · `COMPETITOR_REVISION_CONFLICT` · `COMPETITOR_RUN_NOT_FOUND` · `COMPETITOR_SET_NOT_FOUND` · `COMPETITOR_SET_RETIRED` · `EXCLUSION_REVISION_CONFLICT` · `EXCLUSION_REVISION_NOT_FOUND` · `INVALID_COMPETITOR_MEMBER` · `INVALID_CURSOR` · `REPORT_GROUP_NOT_FOUND` · `REPORT_INVENTORY_MISMATCH` · `SNAPSHOT_INVALID_STORED_DATA`

## save\_competitor\_exclusions

Save a complete replacement of up to 100 exact page/host exclusion rules with expectedRevision. Empty rules clear the saved view. Keeps historical evidence and revisions; never changes provider queries or monitoring.

* **State**: Registered and locally tested.
* **Access**: write · scope: `discovery:write` · defined at `src/tool-registry.js:41`

| Input              | Type    | Required | Notes                                                                   |
| ------------------ | ------- | -------- | ----------------------------------------------------------------------- |
| `setId`            | string  | yes      | Identifier of the set returned by its create or list operation.         |
| `expectedRevision` | integer | yes      | Revision last read by the caller; mismatches reject concurrent updates. |
| `rules`            | array   | yes      | Customer-owned exclusion rules for the selected competitor revision.    |

**Side effects**: write

**Error codes**: `COMPETITOR_INVENTORY_NOT_FOUND` · `COMPETITOR_MEMBER_NOT_FOUND` · `COMPETITOR_REVISION_CONFLICT` · `COMPETITOR_RUN_NOT_FOUND` · `COMPETITOR_SET_NOT_FOUND` · `COMPETITOR_SET_RETIRED` · `EXCLUSION_REVISION_CONFLICT` · `EXCLUSION_REVISION_NOT_FOUND` · `INVALID_COMPETITOR_MEMBER` · `INVALID_CURSOR` · `REPORT_GROUP_NOT_FOUND` · `REPORT_INVENTORY_MISMATCH` · `SNAPSHOT_INVALID_STORED_DATA`

## preview\_competitor\_exclusions

Dry-run exact source exclusion rules against selected frozen inventories. Returns before/after counts and bounded matched/collateral examples. Does not save rules, buy discovery, check links or alter evidence.

* **State**: Registered and locally tested.
* **Access**: read · scope: `discovery:read` · defined at `src/tool-registry.js:42`

| Input                | Type    | Required | Notes                                                                                      |
| -------------------- | ------- | -------- | ------------------------------------------------------------------------------------------ |
| `setId`              | string  | yes      | Identifier of the set returned by its create or list operation.                            |
| `revision`           | integer | yes      | Immutable set revision to read or compare.                                                 |
| `inventoryIds`       | array   | yes      | Frozen inventory IDs to compare; records must belong to the approved set.                  |
| `grouping`           | string  | yes      | Grouping dimension used to aggregate the selected inventories.; one of: page, source\_host |
| `exclusions`         | array   | no       | Customer-approved exclusions to apply to this report.                                      |
| `maxRetrievalSkewMs` | integer | no       | Maximum permitted difference between inventory retrieval times, in milliseconds.           |
| `exclusionRevision`  | integer | no       | Saved exclusion revision to apply; historical revisions remain immutable.                  |

**Error codes**: `COMPETITOR_INVENTORY_NOT_FOUND` · `COMPETITOR_MEMBER_NOT_FOUND` · `COMPETITOR_REVISION_CONFLICT` · `COMPETITOR_RUN_NOT_FOUND` · `COMPETITOR_SET_NOT_FOUND` · `COMPETITOR_SET_RETIRED` · `EXCLUSION_REVISION_CONFLICT` · `EXCLUSION_REVISION_NOT_FOUND` · `INVALID_COMPETITOR_MEMBER` · `INVALID_CURSOR` · `REPORT_GROUP_NOT_FOUND` · `REPORT_INVENTORY_MISMATCH` · `SNAPSHOT_INVALID_STORED_DATA`
