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

# List opportunities

> Read the opportunity library: publisher surfaces where a link or citation could be earned, one record per surface with its evidence, gate verdicts, verification state, provenance, rights and dates.

`list_opportunities`

Read the opportunity library: publisher surfaces where a link or citation could be earned, one record per surface with its evidence, gate verdicts, verification state, provenance, rights and dates. Filter by niche, opportunity type, status, route state, freshness, source class and updated-since; page with the returned cursor. Ordered by update time, never by authority. Every answer carries the coverage block for the niches read; a surface absent from the result was not read and is not known to lack an opportunity. No score, no contact data, no fetch.

<Note>Available in the deployed MCP and HTTP bundle. Confirm access and inputs with your connected catalog. Workspace scopes and enabled providers still apply.</Note>

| Access           | Behavior         |
| ---------------- | ---------------- |
| `discovery:read` | Reads saved data |

This read does not start a verification job.

## 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": "list_opportunities",
      "arguments": {
        "niche": "us-probate",
        "freshness": "fresh",
        "limit": 50
      }
    }
  }
  ```

  ```bash CLI theme={null}
  agentlinkops call list_opportunities --args '{"niche":"us-probate","freshness":"fresh","limit":50}'
  ```

  ```bash HTTP theme={null}
  curl "$AGENTLINKOPS_API_URL/v1/commands/list_opportunities" \
    -H "Authorization: Bearer $AGENTLINKOPS_API_KEY" \
    -H 'Content-Type: application/json' \
    --data '{"niche":"us-probate","freshness":"fresh","limit":50}'
  ```
</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,
    "read_at": "2026-09-16T12:00:00.000Z",
    "freshness_basis": {
      "now": "2026-09-16T12:00:00.000Z",
      "window_days": 90,
      "aging_from_day": 60
    },
    "absence_claim": "not_supported",
    "whole_web_coverage": false,
    "absence_note": "A surface missing from this result is a surface the library did not read. Nothing here says a surface has no opportunity.",
    "coverage": [
      {
        "schema_version": 1,
        "niche": {
          "id": "us-probate",
          "label": "US probate and estate settlement"
        },
        "source_class": "owned_corpus",
        "run_id": "run_probate_2026_09_11",
        "generated_at": "2026-09-15T21:16:04.339Z",
        "scope": "2000 pages attempted and 1993 fetched across 25 named publishers, direct fetch under robots. A page absent from this list was not read or did not meet the rule.",
        "pages_read": 1993,
        "hosts_read": 25,
        "records_emitted": 722,
        "absence_claim": "not_supported",
        "whole_web_coverage": false
      }
    ],
    "filters": {
      "niche": "us-probate",
      "opportunityType": null,
      "status": null,
      "routeState": null,
      "freshness": null,
      "sourceClass": null,
      "updatedSince": null
    },
    "ordering": "dates.updated_at descending, then record_id; never by authority, traffic or rel tokens",
    "limit": 100,
    "items": [
      {
        "schema_version": 1,
        "record_id": "opp_us-probate_3f9c1d2a7b6e4c01",
        "status": "held",
        "niche": {
          "id": "us-probate",
          "label": "US probate and estate settlement"
        },
        "opportunity_type": "link_insertion",
        "type_basis": "heuristic",
        "subject": {
          "host": "guides.example.gov",
          "page_url": "https://guides.example.gov/legal-research-for-beginners",
          "route_url": null,
          "surface": null
        },
        "observed": {
          "rel_tokens": [],
          "indexing": "indexable",
          "cost_basis": "unknown",
          "audience_statement": null,
          "cited_destinations": [
            {
              "host": "www.example.org",
              "referring_pages": 5,
              "publishers_linking": 3
            }
          ],
          "ai_citation": null
        },
        "contact_route": {
          "class": "none_observed",
          "deliverability": "not_checked",
          "observed_at": null
        },
        "eligibility": {
          "gates": [
            {
              "gate": "owned_observation",
              "verdict": "satisfied",
              "because": "corpus_crawl_run_probate_2026_09_11",
              "observed_at": "2026-09-11T12:51:36.033Z"
            },
            {
              "gate": "redistribution_safe_fields",
              "verdict": "agent_judgement",
              "because": "not_observable_by_infrastructure",
              "observed_at": null
            },
            {
              "gate": "route_evidence",
              "verdict": "satisfied",
              "because": "editorial_outbound_link_observed",
              "observed_at": "2026-09-11T12:51:36.033Z"
            },
            {
              "gate": "re_verified_within_window",
              "verdict": "satisfied",
              "because": "verifier_present_2026-09-15",
              "observed_at": "2026-09-15T09:02:11.000Z"
            },
            {
              "gate": "policy_screen",
              "verdict": "agent_judgement",
              "because": "not_observable_by_infrastructure",
              "observed_at": null
            },
            {
              "gate": "no_contact_enrichment",
              "verdict": "satisfied",
              "because": "no_contact_fields_exist",
              "observed_at": "2026-09-15T09:02:11.000Z"
            }
          ]
        },
        "verification": {
          "route_state": "unverified",
          "listing_state": "present",
          "last_verified_at": "2026-09-15T09:02:11.000Z",
          "next_due_at": "2026-12-14T09:02:11.000Z",
          "window_days": 90,
          "unknown_streak": 0,
          "reason": null
        },
        "provenance": {
          "source_class": "owned_corpus",
          "run_id": "run_probate_2026_09_11",
          "seed_reason": "editorial_citation_share_rule_lt_0.20",
          "consent_ref": null,
          "first_seen_at": "2026-09-11T12:51:36.033Z",
          "last_seen_at": "2026-09-15T09:02:11.000Z"
        },
        "rights": {
          "basis": "owned_observation_of_public_page",
          "redistributable": true,
          "excluded_inputs_attested": true,
          "takedown_route": "withdraw_on_request"
        },
        "evidence": [
          {
            "observed_at": "2026-09-11T12:51:36.033Z",
            "observer": "corpus_crawl",
            "outcome": "fetched",
            "reason": null,
            "page_url": "https://guides.example.gov/legal-research-for-beginners",
            "http_status": 200,
            "sha256": null,
            "complete": true,
            "run_id": "run_probate_2026_09_11",
            "checker_version": null,
            "rel_tokens": [],
            "anchor": "How to research a legal problem"
          },
          {
            "observed_at": "2026-09-15T09:02:11.000Z",
            "observer": "verifier",
            "outcome": "present",
            "reason": null,
            "page_url": "https://guides.example.gov/legal-research-for-beginners",
            "http_status": 200,
            "sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "complete": true,
            "run_id": null,
            "checker_version": "verifier-2026-09-11",
            "rel_tokens": [],
            "anchor": "How to research a legal problem"
          }
        ],
        "dates": {
          "created_at": "2026-09-15T09:02:11.000Z",
          "updated_at": "2026-09-15T09:02:11.000Z",
          "last_observed_at": "2026-09-15T09:02:11.000Z"
        },
        "withdrawal": null,
        "freshness": "fresh"
      }
    ],
    "has_more": false,
    "next_cursor": null
  }
  ```
</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                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ----------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `niche`           | string  | Optional | Niche id from the library niche table, such as us-probate. Omit to read every niche. maxLength: 64; pattern: "^\[a-z0-9-]+\$"                                                                                                                                                                                                                                                                                                                                                      |
| `opportunityType` | string  | Optional | How a link would be earned on the surface: one of the six library opportunity types. values: "directory", "resource\_page", "listicle\_or\_review", "guest\_post\_program", "link\_insertion", "ai\_citation\_source"                                                                                                                                                                                                                                                              |
| `status`          | string  | Optional | Record status: held, published or withdrawn. Records are never deleted, so withdrawn records remain readable with their reason. values: "held", "published", "withdrawn"                                                                                                                                                                                                                                                                                                           |
| `routeState`      | string  | Optional | Route verification state: verified (route page read and states the route), partial (renders client-side) or unverified (could not be read). values: "verified", "partial", "unverified"                                                                                                                                                                                                                                                                                            |
| `freshness`       | string  | Optional | Age of the last verification against the fixed 90-day window: fresh (under 60 days), aging (60 to 90 days) or stale (over 90 days or never verified). Computed at read time. values: "fresh", "aging", "stale"                                                                                                                                                                                                                                                                     |
| `sourceClass`     | string  | Optional | Provenance source class, which decides redistribution rights per class, never per row. values: "owned\_corpus", "directory\_inventory", "cc\_host\_graph\_seed", "consented\_project\_lane", "owned\_submission"                                                                                                                                                                                                                                                                   |
| `updatedSince`    | string  | Optional | ISO 8601 timestamp; only records whose dates.updated\_at is at or after this instant are returned. 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+)?(?:Z\|([+-](?:\[01]\d\|2\[0-3]):\[0-5]\d)))\$" |
| `cursor`          | string  | Optional | Opaque continuation returned by this same listing with the same filters; omit for the first page. minLength: 1; maxLength: 1024                                                                                                                                                                                                                                                                                                                                                    |
| `limit`           | integer | Optional | Maximum records in this page, 1 to 100; defaults to 100. minimum: 1; maximum: 100; default: 100                                                                                                                                                                                                                                                                                                                                                                                    |

### Validation and omitted values

Omit cursor for the first page. Keep continuation cursors opaque and use them only with the same filters; a cursor from a different filter set is refused with INVALID\_CURSOR.

Pages are ordered by dates.updated\_at descending, then record\_id. Nothing in the library is ordered by authority, traffic or rel tokens, and no record carries a score.

Every answer carries the coverage block for the niches read and absence\_claim not\_supported. A record missing from the result was not read; it is never evidence that a surface has no opportunity.

freshness is computed at read time from verification.last\_verified\_at against the fixed 90-day window (aging from day 60) and is not stored on the record.

Omitted filters apply no restriction. Records are product data shared across workspaces; nothing here names a customer, a customer's target or a contact address.

### Defaults when omitted

| Field   | Default |
| ------- | ------- |
| `limit` | `100`   |

## 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, required): must equal 1
* **`read_at`** (string, required): UTC timestamp the read used for freshness.
* **`freshness_basis`** (object, required).
* **`absence_claim`** (string, required): not\_supported: missing dataset rows cannot prove link absence. must equal "not\_supported"
* **`whole_web_coverage`** (boolean, required): False: these results do not measure the whole web. must equal false
* **`absence_note`** (string, required): Plain statement that a surface missing from this result was not read; it is never evidence that no opportunity exists.
* **`coverage`** (array, required): Dataset scope and completeness, including limits on what these results establish.
* **`filters`** (object, required).
* **`ordering`** (string, required): How the page is ordered: by update time then record id, never by authority, traffic or rel tokens.
* **`limit`** (number, required).
* **`items`** (array, required): Records in this bounded page.
* **`has_more`** (boolean, required): True when another page is available.
* **`next_cursor`** (string / null, required): Opaque continuation for the same listing; null means no further page.

<Accordion title="All fields and nested objects">
  | Field                                                      | Type           | Presence | Meaning and constraints                                                                                                                                                                                                                                                                                                                                                                                                     |
  | ---------------------------------------------------------- | -------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `schema_version`                                           | number         | Required | must equal 1                                                                                                                                                                                                                                                                                                                                                                                                                |
  | `read_at`                                                  | string         | Required | UTC timestamp the read used for freshness.                                                                                                                                                                                                                                                                                                                                                                                  |
  | `freshness_basis`                                          | object         | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `freshness_basis.now`                                      | string         | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `freshness_basis.window_days`                              | number         | Required | must equal 90                                                                                                                                                                                                                                                                                                                                                                                                               |
  | `freshness_basis.aging_from_day`                           | number         | Required | must equal 60                                                                                                                                                                                                                                                                                                                                                                                                               |
  | `absence_claim`                                            | string         | Required | not\_supported: missing dataset rows cannot prove link absence. must equal "not\_supported"                                                                                                                                                                                                                                                                                                                                 |
  | `whole_web_coverage`                                       | boolean        | Required | False: these results do not measure the whole web. must equal false                                                                                                                                                                                                                                                                                                                                                         |
  | `absence_note`                                             | string         | Required | Plain statement that a surface missing from this result was not read; it is never evidence that no opportunity exists.                                                                                                                                                                                                                                                                                                      |
  | `coverage`                                                 | array          | Required | Dataset scope and completeness, including limits on what these results establish.                                                                                                                                                                                                                                                                                                                                           |
  | `coverage[].schema_version`                                | number         | Required | must equal 1                                                                                                                                                                                                                                                                                                                                                                                                                |
  | `coverage[].niche`                                         | object         | Required | additional fields rejected                                                                                                                                                                                                                                                                                                                                                                                                  |
  | `coverage[].niche.id`                                      | string         | Required | Resource identifier returned by the operation. maxLength: 64; pattern: "^\[a-z0-9-]+\$"                                                                                                                                                                                                                                                                                                                                     |
  | `coverage[].niche.label`                                   | string         | Required | maxLength: 120                                                                                                                                                                                                                                                                                                                                                                                                              |
  | `coverage[].source_class`                                  | string         | Required | values: "owned\_corpus", "directory\_inventory", "cc\_host\_graph\_seed", "consented\_project\_lane", "owned\_submission"                                                                                                                                                                                                                                                                                                   |
  | `coverage[].run_id`                                        | string / null  | Required | Identifier returned by the related operation.                                                                                                                                                                                                                                                                                                                                                                               |
  | `coverage[].generated_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+)?(?:Z\|([+-](?:\[01]\d\|2\[0-3]):\[0-5]\d)))\$"                                             |
  | `coverage[].scope`                                         | string         | Required | maxLength: 600                                                                                                                                                                                                                                                                                                                                                                                                              |
  | `coverage[].pages_read`                                    | integer        | Required | minimum: 0; maximum: 9007199254740991                                                                                                                                                                                                                                                                                                                                                                                       |
  | `coverage[].hosts_read`                                    | integer        | Required | minimum: 0; maximum: 9007199254740991                                                                                                                                                                                                                                                                                                                                                                                       |
  | `coverage[].records_emitted`                               | integer        | Required | minimum: 0; maximum: 9007199254740991                                                                                                                                                                                                                                                                                                                                                                                       |
  | `coverage[].absence_claim`                                 | string         | Required | not\_supported: missing dataset rows cannot prove link absence. must equal "not\_supported"                                                                                                                                                                                                                                                                                                                                 |
  | `coverage[].whole_web_coverage`                            | boolean        | Required | False: these results do not measure the whole web. must equal false                                                                                                                                                                                                                                                                                                                                                         |
  | `filters`                                                  | object         | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `filters.niche`                                            | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `filters.opportunityType`                                  | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `filters.status`                                           | string / null  | Required | Resource lifecycle status.                                                                                                                                                                                                                                                                                                                                                                                                  |
  | `filters.routeState`                                       | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `filters.freshness`                                        | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `filters.sourceClass`                                      | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `filters.updatedSince`                                     | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `ordering`                                                 | string         | Required | How the page is ordered: by update time then record id, never by authority, traffic or rel tokens.                                                                                                                                                                                                                                                                                                                          |
  | `limit`                                                    | number         | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items`                                                    | array          | Required | Records in this bounded page.                                                                                                                                                                                                                                                                                                                                                                                               |
  | `items[].schema_version`                                   | number         | Required | must equal 1                                                                                                                                                                                                                                                                                                                                                                                                                |
  | `items[].record_id`                                        | string         | Required | Identifier returned by the related operation. pattern: "^opp\_\[a-z0-9-]+\_\[a-f0-9]\{16}\$"                                                                                                                                                                                                                                                                                                                                |
  | `items[].status`                                           | string         | Required | Resource lifecycle status. values: "held", "published", "withdrawn"                                                                                                                                                                                                                                                                                                                                                         |
  | `items[].niche`                                            | object         | Required | additional fields rejected                                                                                                                                                                                                                                                                                                                                                                                                  |
  | `items[].niche.id`                                         | string         | Required | Resource identifier returned by the operation. maxLength: 64; pattern: "^\[a-z0-9-]+\$"                                                                                                                                                                                                                                                                                                                                     |
  | `items[].niche.label`                                      | string         | Required | maxLength: 120                                                                                                                                                                                                                                                                                                                                                                                                              |
  | `items[].opportunity_type`                                 | string         | Required | values: "directory", "resource\_page", "listicle\_or\_review", "guest\_post\_program", "link\_insertion", "ai\_citation\_source"                                                                                                                                                                                                                                                                                            |
  | `items[].type_basis`                                       | string         | Required | values: "observed", "heuristic"                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].subject`                                          | object         | Required | additional fields rejected                                                                                                                                                                                                                                                                                                                                                                                                  |
  | `items[].subject.host`                                     | string         | Required | minLength: 1; maxLength: 253; pattern: "^\[a-z0-9.-]+\$"                                                                                                                                                                                                                                                                                                                                                                    |
  | `items[].subject.page_url`                                 | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].subject.route_url`                                | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].subject.surface`                                  | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].observed`                                         | object         | Required | additional fields rejected                                                                                                                                                                                                                                                                                                                                                                                                  |
  | `items[].observed.rel_tokens`                              | array / null   | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].observed.indexing`                                | string         | Required | values: "indexable", "noindex", "robots\_disallowed", "unknown"                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].observed.cost_basis`                              | string         | Required | values: "free", "paid", "mixed", "unknown"                                                                                                                                                                                                                                                                                                                                                                                  |
  | `items[].observed.audience_statement`                      | boolean / null | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].observed.cited_destinations`                      | array          | Required | maxItems: 50                                                                                                                                                                                                                                                                                                                                                                                                                |
  | `items[].observed.cited_destinations[].host`               | string         | Required | minLength: 1; maxLength: 253; pattern: "^\[a-z0-9.-]+\$"                                                                                                                                                                                                                                                                                                                                                                    |
  | `items[].observed.cited_destinations[].referring_pages`    | integer        | Required | minimum: 1; maximum: 9007199254740991                                                                                                                                                                                                                                                                                                                                                                                       |
  | `items[].observed.cited_destinations[].publishers_linking` | integer        | Required | minimum: 1; maximum: 9007199254740991                                                                                                                                                                                                                                                                                                                                                                                       |
  | `items[].observed.ai_citation`                             | object / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].observed.ai_citation.query`                       | string         | Required | maxLength: 512                                                                                                                                                                                                                                                                                                                                                                                                              |
  | `items[].observed.ai_citation.model`                       | string         | Required | maxLength: 64                                                                                                                                                                                                                                                                                                                                                                                                               |
  | `items[].observed.ai_citation.observed_at`                 | string         | Required | UTC timestamp of the observation used here. 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+)?(?:Z\|([+-](?:\[01]\d\|2\[0-3]):\[0-5]\d)))\$" |
  | `items[].contact_route`                                    | object         | Required | additional fields rejected                                                                                                                                                                                                                                                                                                                                                                                                  |
  | `items[].contact_route.class`                              | string         | Required | values: "published\_submission\_page", "published\_form", "published\_email", "platform\_account", "none\_observed", "unknown"                                                                                                                                                                                                                                                                                              |
  | `items[].contact_route.deliverability`                     | string         | Required | must equal "not\_checked"                                                                                                                                                                                                                                                                                                                                                                                                   |
  | `items[].contact_route.observed_at`                        | string / null  | Required | UTC timestamp of the observation used here.                                                                                                                                                                                                                                                                                                                                                                                 |
  | `items[].eligibility`                                      | object         | Required | additional fields rejected                                                                                                                                                                                                                                                                                                                                                                                                  |
  | `items[].eligibility.gates`                                | array          | Required | minItems: 6; maxItems: 6                                                                                                                                                                                                                                                                                                                                                                                                    |
  | `items[].eligibility.gates[].gate`                         | string         | Required | values: "owned\_observation", "redistribution\_safe\_fields", "route\_evidence", "re\_verified\_within\_window", "policy\_screen", "no\_contact\_enrichment"                                                                                                                                                                                                                                                                |
  | `items[].eligibility.gates[].verdict`                      | string         | Required | values: "satisfied", "not\_satisfied", "agent\_judgement"                                                                                                                                                                                                                                                                                                                                                                   |
  | `items[].eligibility.gates[].because`                      | string         | Required | maxLength: 64                                                                                                                                                                                                                                                                                                                                                                                                               |
  | `items[].eligibility.gates[].observed_at`                  | string / null  | Required | UTC timestamp of the observation used here.                                                                                                                                                                                                                                                                                                                                                                                 |
  | `items[].verification`                                     | object         | Required | additional fields rejected                                                                                                                                                                                                                                                                                                                                                                                                  |
  | `items[].verification.route_state`                         | string         | Required | values: "verified", "partial", "unverified"                                                                                                                                                                                                                                                                                                                                                                                 |
  | `items[].verification.listing_state`                       | string         | Required | values: "present", "absent", "unknown", "not\_checked"                                                                                                                                                                                                                                                                                                                                                                      |
  | `items[].verification.last_verified_at`                    | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].verification.next_due_at`                         | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].verification.window_days`                         | number         | Required | must equal 90                                                                                                                                                                                                                                                                                                                                                                                                               |
  | `items[].verification.unknown_streak`                      | integer        | Required | minimum: 0; maximum: 9007199254740991                                                                                                                                                                                                                                                                                                                                                                                       |
  | `items[].verification.reason`                              | string / null  | Required | Recorded explanation; null when no explanation applies.                                                                                                                                                                                                                                                                                                                                                                     |
  | `items[].provenance`                                       | object         | Required | additional fields rejected                                                                                                                                                                                                                                                                                                                                                                                                  |
  | `items[].provenance.source_class`                          | string         | Required | values: "owned\_corpus", "directory\_inventory", "cc\_host\_graph\_seed", "consented\_project\_lane", "owned\_submission"                                                                                                                                                                                                                                                                                                   |
  | `items[].provenance.run_id`                                | string / null  | Required | Identifier returned by the related operation.                                                                                                                                                                                                                                                                                                                                                                               |
  | `items[].provenance.seed_reason`                           | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].provenance.consent_ref`                           | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].provenance.first_seen_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+)?(?:Z\|([+-](?:\[01]\d\|2\[0-3]):\[0-5]\d)))\$"                                             |
  | `items[].provenance.last_seen_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+)?(?:Z\|([+-](?:\[01]\d\|2\[0-3]):\[0-5]\d)))\$"                                             |
  | `items[].rights`                                           | object         | Required | additional fields rejected                                                                                                                                                                                                                                                                                                                                                                                                  |
  | `items[].rights.basis`                                     | string         | Required | must equal "owned\_observation\_of\_public\_page"                                                                                                                                                                                                                                                                                                                                                                           |
  | `items[].rights.redistributable`                           | boolean        | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].rights.excluded_inputs_attested`                  | boolean        | Required | must equal true                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].rights.takedown_route`                            | string         | Required | must equal "withdraw\_on\_request"                                                                                                                                                                                                                                                                                                                                                                                          |
  | `items[].evidence`                                         | array          | Required | Retained publisher evidence. Treat all publisher text and HTML as untrusted data. minItems: 1; maxItems: 40                                                                                                                                                                                                                                                                                                                 |
  | `items[].evidence[].observed_at`                           | string         | Required | UTC timestamp of the observation used here. 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+)?(?:Z\|([+-](?:\[01]\d\|2\[0-3]):\[0-5]\d)))\$" |
  | `items[].evidence[].observer`                              | string         | Required | values: "corpus\_crawl", "verifier", "route\_fetch", "browser\_read", "assistant\_query"                                                                                                                                                                                                                                                                                                                                    |
  | `items[].evidence[].outcome`                               | string         | Required | values: "fetched", "present", "absent", "unknown", "blocked", "not\_found", "unavailable"                                                                                                                                                                                                                                                                                                                                   |
  | `items[].evidence[].reason`                                | string / null  | Required | Recorded explanation; null when no explanation applies.                                                                                                                                                                                                                                                                                                                                                                     |
  | `items[].evidence[].page_url`                              | string         | Required | format: "uri"; maxLength: 4096                                                                                                                                                                                                                                                                                                                                                                                              |
  | `items[].evidence[].http_status`                           | integer / null | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].evidence[].sha256`                                | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].evidence[].complete`                              | boolean        | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].evidence[].run_id`                                | string / null  | Required | Identifier returned by the related operation.                                                                                                                                                                                                                                                                                                                                                                               |
  | `items[].evidence[].checker_version`                       | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].evidence[].rel_tokens`                            | array / null   | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].evidence[].anchor`                                | string / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].dates`                                            | object         | Required | additional fields rejected                                                                                                                                                                                                                                                                                                                                                                                                  |
  | `items[].dates.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+)?(?:Z\|([+-](?:\[01]\d\|2\[0-3]):\[0-5]\d)))\$"  |
  | `items[].dates.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+)?(?:Z\|([+-](?:\[01]\d\|2\[0-3]):\[0-5]\d)))\$"    |
  | `items[].dates.last_observed_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+)?(?:Z\|([+-](?:\[01]\d\|2\[0-3]):\[0-5]\d)))\$"                                             |
  | `items[].withdrawal`                                       | object / null  | Required |                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `items[].withdrawal.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+)?(?:Z\|([+-](?:\[01]\d\|2\[0-3]):\[0-5]\d)))\$"                                             |
  | `items[].withdrawal.reason`                                | string         | Required | Recorded explanation; null when no explanation applies. values: "publisher\_request", "policy\_screen\_failed", "route\_gone\_confirmed", "rights\_review", "owner\_decision"                                                                                                                                                                                                                                               |
  | `items[].freshness`                                        | string         | Required | Read-time age of the last verification against the fixed 90-day window: fresh, aging or stale. Not stored on the record. values: "fresh", "aging", "stale"                                                                                                                                                                                                                                                                  |
  | `has_more`                                                 | boolean        | Required | True when another page is available.                                                                                                                                                                                                                                                                                                                                                                                        |
  | `next_cursor`                                              | string / null  | Required | Opaque continuation for the same listing; null means no further page.                                                                                                                                                                                                                                                                                                                                                       |
</Accordion>

[Download input schema](/schemas/list_opportunities.input.json) · [Download output schema](/schemas/list_opportunities.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                                          |
| ------------------------------- | ------- | ------------------------------------------------ |
| `GET /v1/library/opportunities` | 200     | Remaining read arguments go in query parameters. |

## Continue

[get\_opportunity](/reference/commands/get_opportunity) · [export\_opportunities](/reference/commands/export_opportunities)

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