# Otto AI Domain Report

> Otto AI Domain Report is a paid API for AI agents from x402.ottoai.services, paid per call via x402, $0.02/call, status unknown (last checked 2026-09-14).

Returns DNS records, RDAP registration details, and email authentication (SPF/DKIM/DMARC) for a given domain name.

## Facts

- Endpoint: GET https://x402.ottoai.services/domain-report
- Price: $0.02/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/otto-ai-domain-report-0acf165b
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_yJKwTIxGgH0Ya7jvlFuUN

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 otto-ai-domain-report-0acf165b
```

Example prompt: Can you pull up a full domain report for uniswap.org — I want to see its DNS records, who registered it and when, how old it is, and whether it has SPF, DKIM, and DMARC set up properly?

## When to prefer this

Choose this endpoint when you need a comprehensive single-call profile of a domain covering DNS infrastructure, registrar provenance, domain age, and email security posture simultaneously. Prefer it over raw WHOIS tools when you want structured, parsed output including SPF/DKIM/DMARC analysis in one response. Best suited for domain due diligence, phishing investigation, email deliverability audits, or counterparty vetting.

## Known failure modes

- Domain does not exist or fails to resolve — dns.resolves will be false and registration data may be absent
- Invalid domain format input — likely returns a 4xx error or validation failure
- RDAP lookup unavailable for certain TLDs — registration fields may be null or missing
- DKIM selector detection limited to common selectors — selectors found array may be empty even if DKIM is configured
- Stale cached data — check meta.stalenessSec and meta.validUntil for freshness indicators

## How this service works

One call returns the full domain profile for vetting, deliverability, or phishing/fraud checks: live DNS (A/MX/NS + record counts), RDAP/WHOIS registration (registrar, domain age, expiry, status, DNSSEC) and email authentication (SPF, DMARC policy, detected DKIM selectors) — plus a one-line summary. Bundles three lookups into one hourly-fresh read. Keyless, license-clean, pay-per-call.

## Output

A JSON object containing: DNS A, MX, NS records and TXT count; email authentication details including SPF policy and record, DKIM selectors found, and DMARC policy and record; RDAP registration info including registrar, creation/expiry dates, domain age in days, DNSSEC status, and transfer lock statuses; plus a human-readable one-line summary and metadata about freshness.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "domain"
     ],
     "properties": {
      "domain": {
       "type": "string",
       "description": "Domain to profile (e.g. uniswap.org). Returns DNS + RDAP registration + email auth."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "status"
     ],
     "properties": {
      "data": {},
      "meta": {
       "type": "object"
      },
      "reason": {
       "type": "string",
       "description": "status=unavailable only; every >=400 is UNCHARGED"
      },
      "status": {
       "enum": [
        "success",
        "unavailable"
       ],
       "type": "string"
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "data": {
   "dns": {
    "a": [
     "162.159.140.227",
     "172.66.0.225"
    ],
    "mx": [
     {
      "exchange": "aspmx.l.google.com",
      "priority": 1
     }
    ],
    "ns": [
     "meera.ns.cloudflare.com",
     "rick.ns.cloudflare.com"
    ],
    "resolves": true,
    "txtCount": 6
   },
   "email": {
    "spf": {
     "policy": "softfail",
     "record": "v=spf1 include:_spf.google.com ~all",
     "present": true
    },
    "dkim": {
     "selectorsFound": [
      "google"
     ]
    },
    "dmarc": {
     "policy": "reject",
     "record": "v=DMARC1; p=reject",
     "present": true
    }
   },
   "domain": "uniswap.org",
   "summary": "uniswap.org: registered via NameCheap, Inc., 7.6y old, 2 A / 5 MX, DMARC reject, DNSSEC.",
   "generatedAt": "2026-06-24T12:00:00.000Z",
   "registration": {
    "dnssec": true,
    "ageDays": 2767,
    "statuses": [
     "client transfer prohibited"
    ],
    "createdAt": "2018-11-26T05:33:07Z",
    "expiresAt": "2031-11-26T05:33:07Z",
    "registrar": "NameCheap, Inc.",
    "registered": true
   }
  },
  "meta": {
   "degraded": false,
   "validUntil": "",
   "generatedAt": "",
   "stalenessSec": 0
  },
  "status": "success"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/otto-ai-domain-report-0acf165b/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.ottoai.services](https://www.zero.xyz/host/x402.ottoai.services/llms.txt)
