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

# Prepare domain baseline

> Prepare a baseline offer.

`prepare_domain_baseline`

Prepare a baseline offer. No provider calls. Supplier admission is disabled; retained runs remain readable. The offer binds the exact host, initial static checks and explicit consent. No recurring monitoring.

<Note>Development preview. This command is absent from the verified deployed bundle. Use a matching development environment.</Note>

| Access | Behavior |
| - | - |
| `discovery:read`, `watches:read`, `discovery:write`, `watches: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": "prepare_domain_baseline",
      "arguments": {
        "projectId": "pr_fixture",
        "domain": "example.com",
        "includeSubdomains": true
      }
    }
  }
  ```

  ```bash CLI theme={null}
  agentlinkops call prepare_domain_baseline --args '{"projectId":"pr_fixture","domain":"example.com","includeSubdomains":true}'
  ```

  ```bash HTTP theme={null}
  curl "$AGENTLINKOPS_API_URL/v1/commands/prepare_domain_baseline" \
    -H "Authorization: Bearer $AGENTLINKOPS_API_KEY" \
    -H 'Content-Type: application/json' \
    --data '{"projectId":"pr_fixture","domain":"example.com","includeSubdomains":true}'
  ```
</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.

<Accordion title="Full response example">
  ```json theme={null}
  {
    "schema_version": 1,
    "kind": "offer",
    "offer": {
      "schema_version": 1,
      "id": "bo_fixture",
      "workspace_id": "ws_fixture",
      "project_id": "pr_fixture",
      "actor_id": "actor_fixture",
      "scope": {
        "domain": "example.com",
        "include_subdomains": true,
        "website_revision": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "query_version": "dataforseo-as-is-v1"
      },
      "source": "dataforseo",
      "data_mode": "synthetic",
      "tariff_version": "synthetic_v1",
      "selection_policy": "distinct-host-target-order-v1",
      "limits": {
        "indexed_rows": 1000,
        "source_checks": 10,
        "renders": 0,
        "supplier_requests": 2,
        "recurring_monitors": 0
      },
      "created_at": "2026-10-04T12:00:00.000Z",
      "expires_at": "2026-10-04T12:05:00.000Z",
      "consumption": "explicit_start",
      "consent_required": true,
      "recurring_monitoring_created": false
    }
  }
  ```
</Accordion>

## 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 |
| - | - | - | - |
| `projectId` | string | Required | Identifier of the project returned by its create or list operation. pattern: "^\[a-zA-Z0-9\_-]\{1,128}\$" |
| `domain` | string | Required | Project domain name, such as example.com. minLength: 1; maxLength: 4096 |
| `includeSubdomains` | boolean | Required | Include subdomains of the selected domain in this query. |
| `confirmNormalizedScope` | boolean | Optional | The confirm normalized scope value; allowed values and bounds are specified in this schema. |
| `forceRefresh` | boolean | Optional | The force refresh value; allowed values and bounds are specified in this schema. |

### Validation and omitted values

Supplier admission remains disabled. Synthetic development results do not establish provider coverage.

Saved baseline identity and exact website scope survive retries. Indexed candidates, one-off observations and explicitly selected recurring monitors remain separate.

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

* **`schema_version`** (number / number, required).
* **`kind`** (string, required): values: "offer", "saved\_run"
* **`offer`** (object / object, optional).
* **`run`** (object, optional): additional fields rejected

<Accordion title="All fields and nested objects">
  | Field | Type | Presence | Meaning and constraints |
  | - | - | - | - |
  | `schema_version` | number / number | Required | |
  | `kind` | string | Required | values: "offer", "saved\_run" |
  | `offer` | object / object | Optional | |
  | `offer.schema_version` | number | Required | must equal 1 |
  | `offer.id` | string | Required | Resource identifier returned by the operation. pattern: "^\[a-zA-Z0-9\_-]\{1,128}\$" |
  | `offer.workspace_id` | string | Required | Workspace that owns this record. pattern: "^\[a-zA-Z0-9\_-]\{1,128}\$" |
  | `offer.project_id` | string | Required | Project that owns this record. pattern: "^\[a-zA-Z0-9\_-]\{1,128}\$" |
  | `offer.actor_id` | string | Required | Identifier returned by the related operation. minLength: 1; maxLength: 128 |
  | `offer.scope` | object | Required | additional fields rejected |
  | `offer.scope.domain` | string | Required | minLength: 1; maxLength: 253 |
  | `offer.scope.include_subdomains` | boolean | Required | |
  | `offer.scope.website_revision` | string | Required | pattern: "^\[a-f0-9]\{64}\$" |
  | `offer.scope.query_version` | string | Required | must equal "dataforseo-as-is-v1" |
  | `offer.source` | string | Required | must equal "dataforseo" |
  | `offer.data_mode` | string | Required | must equal "synthetic" |
  | `offer.tariff_version` | string | Required | pattern: "^\[a-zA-Z0-9\_-]\{1,128}\$" |
  | `offer.selection_policy` | string | Required | must equal "distinct-host-target-order-v1" |
  | `offer.limits` | object | Required | additional fields rejected |
  | `offer.limits.indexed_rows` | number | Required | must equal 1000 |
  | `offer.limits.source_checks` | number | Required | must equal 10 |
  | `offer.limits.renders` | number | Required | must equal 0 |
  | `offer.limits.supplier_requests` | number | Required | must equal 2 |
  | `offer.limits.recurring_monitors` | number | Required | must equal 0 |
  | `offer.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))\$" |
  | `offer.expires_at` | string | Required | 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))\$" |
  | `offer.consumption` | string | Required | must equal "explicit\_start" |
  | `offer.consent_required` | boolean | Required | must equal true |
  | `offer.recurring_monitoring_created` | boolean | Required | Whether this operation enrolled recurring monitoring. must equal false |
  | `offer.schema_version` | number | Required | must equal 2 |
  | `offer.data_mode` | string | Required | must equal "provider\_index" |
  | `run` | object | Optional | additional fields rejected |
  | `run.schema_version` | number / number | Required | |
  | `run.id` | string | Required | Resource identifier returned by the operation. pattern: "^\[a-zA-Z0-9\_-]\{1,128}\$" |
  | `run.workspace_id` | string | Required | Workspace that owns this record. pattern: "^\[a-zA-Z0-9\_-]\{1,128}\$" |
  | `run.project_id` | string | Required | Project that owns this record. pattern: "^\[a-zA-Z0-9\_-]\{1,128}\$" |
  | `run.scope` | object | Required | additional fields rejected |
  | `run.scope.domain` | string | Required | minLength: 1; maxLength: 253 |
  | `run.scope.include_subdomains` | boolean | Required | |
  | `run.scope.website_revision` | string | Required | pattern: "^\[a-f0-9]\{64}\$" |
  | `run.scope.query_version` | string | Required | must equal "dataforseo-as-is-v1" |
  | `run.source` | string | Required | must equal "dataforseo" |
  | `run.data_mode` | string | Required | values: "synthetic", "provider\_index" |
  | `run.state` | string | Required | Saved lifecycle or evidence state, as enumerated for this record. values: "queued", "fetching", "checking", "ready", "partial", "empty", "failed", "cancelled", "reconciliation\_required" |
  | `run.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))\$" |
  | `run.updated_at` | string | Required | UTC timestamp of the last record update. 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))\$" |
  | `run.execution_deadline` | string | Required | 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))\$" |
  | `run.timing` | object | Required | additional fields rejected |
  | `run.timing.first_result_at` | string / null | Required | |
  | `run.timing.finished_at` | string / null | Required | |
  | `run.timing.first_result_ms` | integer / null | Required | |
  | `run.components` | object | Required | additional fields rejected |
  | `run.components.summary` | object | Required | Grouped change counts included in this delivery, limited to accessible websites. additional fields rejected |
  | `run.components.summary.state` | string | Required | Saved lifecycle or evidence state, as enumerated for this record. values: "pending", "running", "succeeded", "partial", "empty", "failed", "cancelled", "reconciliation\_required" |
  | `run.components.summary.run_id` | string / null | Required | Identifier returned by the related operation. |
  | `run.components.summary.retrieved_at` | string / null | Required | |
  | `run.components.summary.error_code` | string / null | Required | Latest delivery detail code; null when no failure or retry has been recorded. |
  | `run.components.list` | object | Required | additional fields rejected |
  | `run.components.list.state` | string | Required | Saved lifecycle or evidence state, as enumerated for this record. values: "pending", "running", "succeeded", "partial", "empty", "failed", "cancelled", "reconciliation\_required" |
  | `run.components.list.run_id` | string / null | Required | Identifier returned by the related operation. |
  | `run.components.list.retrieved_at` | string / null | Required | |
  | `run.components.list.error_code` | string / null | Required | Latest delivery detail code; null when no failure or retry has been recorded. |
  | `run.components.checks` | object | Required | additional fields rejected |
  | `run.components.checks.state` | string | Required | Saved lifecycle or evidence state, as enumerated for this record. values: "pending", "running", "succeeded", "partial", "empty", "failed", "cancelled", "reconciliation\_required" |
  | `run.components.checks.run_id` | string / null | Required | Identifier returned by the related operation. |
  | `run.components.checks.retrieved_at` | string / null | Required | |
  | `run.components.checks.error_code` | string / null | Required | Latest delivery detail code; null when no failure or retry has been recorded. |
  | `run.summary` | object / null | Required | Grouped change counts included in this delivery, limited to accessible websites. |
  | `run.summary.v` | number | Required | must equal 1 |
  | `run.summary.overview_run_id` | string | Required | Identifier returned by the related operation. pattern: "^\[a-zA-Z0-9\_-]\{1,128}\$" |
  | `run.summary.workspace_id` | string | Required | Workspace that owns this record. pattern: "^\[a-zA-Z0-9\_-]\{1,128}\$" |
  | `run.summary.project_id` | string | Required | Project that owns this record. pattern: "^\[a-zA-Z0-9\_-]\{1,128}\$" |
  | `run.summary.provider` | string | Required | values: "linktrail\_corpus", "dataforseo", "imported" |
  | `run.summary.data_mode` | string | Required | values: "synthetic", "owned\_corpus", "provider\_index", "imported" |
  | `run.summary.provider_retrieved_at` | string | Required | Timestamp when the upstream evidence was retrieved. 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))\$" |
  | `run.summary.provider_first_seen` | string / null | Required | |
  | `run.summary.provider_lost_date` | string / null | Required | |
  | `run.summary.verified_at` | null | Required | Timestamp of the AgentLinkOps check; null until checked. |
  | `run.summary.coverage` | string | Required | Dataset scope and completeness, including limits on what these results establish. values: "provider\_summary", "corpus\_subset", "partial" |
  | `run.summary.counts` | object | Required | additional fields rejected |
  | `run.summary.counts.backlinks` | integer / null | Required | |
  | `run.summary.counts.referring_domains` | integer / null | Required | |
  | `run.summary.counts.referring_main_domains` | integer / null | Required | |
  | `run.summary.counts.referring_pages` | integer / null | Required | |
  | `run.summary.counts.referring_ips` | integer / null | Required | |
  | `run.summary.counts.referring_subnets` | integer / null | Required | |
  | `run.summary.counts.crawled_pages` | integer / null | Required | |
  | `run.summary.counts.broken_backlinks` | integer / null | Required | |
  | `run.summary.counts.broken_pages` | integer / null | Required | |
  | `run.summary.provider_metrics` | object / object | Required | |
  | `run.summary.provider_metrics.dataforseo` | object | Required | additional fields rejected |
  | `run.summary.provider_metrics.dataforseo.rank` | integer / null | Required | |
  | `run.summary.provider_metrics.dataforseo.backlinks_spam_score` | integer / null | Required | |
  | `run.summary.provider_metrics.dataforseo.rank_scale` | string | Required | must equal "one\_thousand" |
  | `run.summary.provider_metrics.linktrail_corpus` | object | Required | additional fields rejected |
  | `run.summary.provider_metrics.linktrail_corpus.corpus_source_pages` | integer / null | Required | |
  | `run.summary.provider_metrics.linktrail_corpus.corpus_last_expanded_at` | string / null | Required | |
  | `run.counts` | object | Required | additional fields rejected |
  | `run.counts.indexed_total` | integer / null | Required | |
  | `run.counts.retrieved_candidates` | integer | Required | minimum: 0; maximum: 9007199254740991 |
  | `run.counts.selected_checks` | integer | Required | minimum: 0; maximum: 10 |
  | `run.counts.checked` | integer | Required | minimum: 0; maximum: 10 |
  | `run.counts.present` | integer | Required | minimum: 0; maximum: 10 |
  | `run.counts.absent` | integer | Required | minimum: 0; maximum: 10 |
  | `run.counts.source_unavailable` | integer | Required | minimum: 0; maximum: 10 |
  | `run.counts.unknown` | integer | Required | minimum: 0; maximum: 10 |
  | `run.coverage` | object | Required | Dataset scope and completeness, including limits on what these results establish. additional fields rejected |
  | `run.coverage.whole_web` | boolean | Required | must equal false |
  | `run.coverage.sample` | boolean | Required | True: the rendered preview uses example content, never customer events. must equal true |
  | `run.coverage.ordering` | string | Required | must equal "rank,desc" |
  | `run.coverage.reason` | string / null | Required | Recorded explanation; null when no explanation applies. |
  | `run.selection` | object | Required | additional fields rejected |
  | `run.selection.policy` | string | Required | must equal "distinct-host-target-order-v1" |
  | `run.selection.manifest_hash` | string / null | Required | |
  | `run.selection.candidate_ids` | array | Required | maxItems: 10 |
  | `run.selection.render_limit` | number | Required | must equal 0 |
  | `run.recurring_monitoring_created` | boolean | Required | Whether this operation enrolled recurring monitoring. must equal false |
  | `run.recovery` | string | Required | values: "read\_saved\_run", "reconcile\_receipt", "explicit\_new\_offer" |
  | `run.replayed` | boolean | Optional | True when the response reuses an earlier request with the same idempotency value. |
</Accordion>

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

## Errors and retries

This command is not annotated idempotent. After a timeout, inspect existing state before repeating a write.

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

This operation has no separate resource alias. Use its generic command route in a matching environment.

## Continue

[get\_domain\_baseline](/reference/commands/get_domain_baseline) · [list\_domain\_baseline\_candidates](/reference/commands/list_domain_baseline_candidates)

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


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.