Page Existence Check

Assess whether a URL returns page content or missing-page signals. Returns an existence result, confidence and supporting checks.

Pay by wallet (x402) page-exists

Example

Example answer
{
  "url": "https://example.com",
  "title": "Example Domain",
  "exists": true,
  "reason": "ok",
  "signals": [],
  "final_url": "https://example.com/",
  "checked_at": "2026-08-12T12:00:00.000Z",
  "confidence": "medium",
  "redirected": false,
  "status_code": 200,
  "content_length": 559
}

Inputs

FieldTypeRequiredWhat it is
urlstringYesURL to check for content-level existence
timeout_msintegerNoRequest timeout in milliseconds (clamped to 1000-30000, default 10000)

Output fields

How reliably each field appears in a successful answer.

FieldTypeAppears
urlstringAlways (present in every successful answer)
errorstringSometimes (present only for some inputs)
titlestring or nullUsually (present for most inputs)
existsboolean or nullUsually (present for most inputs)
reasonone of ok, non_html_content, hard_404, soft_404_title, soft_404_body, soft_404_body_and_redirect, redirected_to_generic, thin_content, access_blocked, server_error, unexpected_status, timeout, redirect_loop, dns_error, network_errorAlways (present in every successful answer)
signalsarrayAlways (present in every successful answer)
final_urlstring or nullUsually (present for most inputs)
checked_atstringAlways (present in every successful answer)
confidenceone of high, medium, low, nullUsually (present for most inputs)
redirectedbooleanAlways (present in every successful answer)
status_codeinteger or nullUsually (present for most inputs)
content_lengthinteger or nullUsually (present for most inputs)

How to call it

The same tool through each route. MCP clients reach it through Strale’s server at https://api.strale.io/mcp; the call below is what the agent sends.

# Needs an API key. max_price_cents caps what this call may cost.
curl -X POST https://api.strale.io/v1/do \
  -H "Authorization: Bearer $STRALE_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "capability_slug": "page-exists",
    "inputs": {
      "url": "https://strale.dev"
    },
    "max_price_cents": 2
  }'

Limitations

  • Single-page apps can hide missing pages

    Some JavaScript applications return the same HTTP 200 page for every URL, including removed listings. These can return `exists` true with medium confidence even when the requested listing is missing.

    What to do instead: For known SPA domains, corroborate with a rendered check (screenshot-url) before trusting exists:true.

  • Soft-404 phrase heuristics are English-only

    Removal and error-page phrases are recognised only in English. Non-English error pages can be misclassified as existing content.

    What to do instead: For non-English sites, verify the returned title and final_url yourself rather than trusting exists alone.

  • Blocked pages return unknown and are still billed

    Pages returning HTTP 401 or 403 produce `exists` null with reason access_blocked, rather than a determination that the page exists. This completed check is billed, and unknown results can be common on sites that block automated requests.

    What to do instead: Treat exists:null as "unknown" and fall back to a manual check or a different data source for these domains.

  • Low-confidence negatives can misread live pages

    Redirects to generic pages and thin-content checks can classify legitimate pages as missing with low confidence. Confirm low-confidence negatives before acting.

    What to do instead: Only act automatically on confidence high/medium; route confidence:low results to a secondary check.

Related tools