# Foundry DNS Snapshot Change Detector

> Foundry DNS Snapshot Change Detector is a paid API for AI agents from foundry-par007-machine-revenue-mainnet.inference-chip-index.workers.dev, paid per call via x402, $0.007/call, status unknown (last checked 2026-09-14).

Compares a set of submitted DNS records for a domain against live resolver observations to detect additions, removals, or mismatches

## Facts

- Endpoint: POST https://foundry-par007-machine-revenue-mainnet.inference-chip-index.workers.dev/v2/domain/dns-snapshot-change
- Price: $0.007/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/foundry-dns-snapshot-change-detector-69c929d2
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_H4Aosi5WDk6lIQSjeyT6q

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability foundry-dns-snapshot-change-detector-69c929d2 -d '<json body>'
```

Example prompt: Check whether the MX and TXT records for acmecorp.com still match what we have on file — expected MX is 'mail.acmecorp.com' and TXT is 'v=spf1 include:_spf.google.com ~all' — and tell me if anything has been added or is missing.

## When to prefer this

Choose this endpoint when you need pay-per-call, point-in-time DNS change detection with explicit source provenance and structured JSON evidence — particularly when you already know the expected record values and want to diff them against live resolver data. Prefer it over continuous monitoring services when you only need periodic spot-checks and want auditable attribution to a specific resolver. It is well-suited for post-migration verification, security audits, and configuration drift detection where an exact record-level comparison is required.

## Known failure modes

- Resolver failure (rcode 2/SERVFAIL) returns status UNKNOWN with empty records and a synthetic evidence note
- Domain not found or NXDOMAIN may return empty record sets without an explicit error
- TXT record comparisons are lexical — semantically equivalent but differently formatted strings may show as mismatches
- No persistent watching: each call is a single point-in-time snapshot
- Only A, AAAA, MX, NS, TXT types supported; other record types are rejected
- Input exceeding 5 record type objects or 32 values per type will be rejected by schema validation

## How this service works

Pay-per-request evidence and data tools: CSV validation and reconciliation, DNS/email configuration evidence, and bounded official weather, earthquake, vehicle, company and study records. Exact USDC prices, explicit JSON contracts and source provenance. No mailbox, ownership, medical or safety guarantees.

## Output

A JSON object containing per-record-type comparisons for the domain, each showing status (MATCH, CHANGED, UNKNOWN), lists of added and missing records versus the submitted expected values, the raw observed DNS records with DNSSEC status, the resolver source URL with attribution, and the timestamp of observation. Limitations note that only apex records of the requested types are compared, TTL is excluded, and no ownership or mailbox guarantees are made.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "domain": {
   "type": "string",
   "maxLength": 253,
   "minLength": 3
  },
  "records": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "type",
     "records"
    ],
    "properties": {
     "type": {
      "enum": [
       "A",
       "AAAA",
       "MX",
       "NS",
       "TXT"
      ],
      "type": "string"
     },
     "records": {
      "type": "array",
      "items": {
       "type": "string",
       "maxLength": 4096
      },
      "maxItems": 32
     }
    },
    "additionalProperties": false
   },
   "maxItems": 5,
   "minItems": 1
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "route": "dns-snapshot-change",
  "result": {
   "domain": "example.com",
   "observedAt": "2026-09-06T00:00:00Z",
   "comparisons": [
    {
     "type": "MX",
     "added": [],
     "status": "UNKNOWN",
     "missing": [],
     "evidence": {
      "name": "example.com",
      "type": "MX",
      "rcode": 2,
      "dnssec": "UNKNOWN",
      "source": "https://cloudflare-dns.com/dns-query?name=example.com&type=MX",
      "status": "UNKNOWN",
      "records": [],
      "observedAt": "2026-09-06T00:00:00Z",
      "attribution": "Cloudflare 1.1.1.1 public resolver; authoritative DNS records; no endorsement"
     },
     "observed": []
    }
   ],
   "limitations": [
    "DNS records only; no ownership, mailbox existence, SMTP acceptance or delivery conclusion.",
    "TXT records compare exact presentation strings; IP and TXT lexical differences can be reported without semantic equivalence.",
    "Changes exclude TTL and compare only requested apex record types. No persistent watcher or guessed selectors.",
    "Synthetic example of a resolver failure; no current observation claimed."
   ]
  },
  "observed_at": "2026-09-06T00:00:00Z"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/foundry-dns-snapshot-change-detector-69c929d2/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from foundry-par007-machine-revenue-mainnet.inference-chip-index.workers.dev](https://www.zero.xyz/host/foundry-par007-machine-revenue-mainnet.inference-chip-index.workers.dev/llms.txt)
