> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oneshotagent.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Domain Registration

> Look up the registry record of a domain name: registrar, dates, status codes, nameservers and DNSSEC.

Returns the registry record of a registered domain name through the Registration Data Access Protocol: registrar, registration, expiry and last-change dates, status codes, nameservers and whether DNSSEC is on. It never returns the registrant's name or contacts. Covers top-level domains whose registry is listed in the IANA RDAP directory with an https server; others answer rdap\_available false.

## Authentication

Requires x402 payment in the `payment-signature` header.

## Request Body

**domain** `string` *required*

The registered domain name, for example lockheedmartin.com. Give the name itself, not a web address or a host under it ([www.example.com](http://www.example.com) answers not found); an internationalized name in its xn-- form. A registered domain name in lower-case ASCII, such as lockheedmartin.com.

<Snippet file="audit-context-params.mdx" />

<Snippet file="cached-record-params.mdx" />

## Response (200 OK)

Top-level envelope: `success` (boolean) and `data` (object). All fields below are nested under `data`.

**data.request\_id** `string`

Durable job ID for audit and lookup

**data.status** `string`

Job status: `completed`

**data.tool** `string`

Always `company_domain_registration`

**data.result** `object`

The answer, described under Result below

**data.evidence** `object`

Where the answer came from and when

**data.cached** `boolean`

`true` when the answer was served from OneShot's store of earlier lookups (or its own copy of a public dataset), `false` when the source was asked for this call

**data.fetched\_at** `string`

When the record was obtained from its source, as an ISO 8601 UTC time; equals `evidence.retrieved_at`

**data.evidence.source** `string`

The public body this call's data comes from: Domain name registries, through the Registration Data Access Protocol (RDAP), by the input.

**data.evidence.source\_kind** `string`

`public` when the data comes from a public body, `commercial` otherwise

**data.evidence.retrieved\_at** `string`

When the lookup was made, as an ISO 8601 UTC time

**data.evidence.as\_of** `string | null`

When the registry says the domain's record last changed; null when the record gives no date or the name was not found.

## Result

Nested under `data.result`.

**data.result.domain** `string`

The domain name asked for, in lower-case ASCII.

**data.result.rdap\_available** `boolean`

Whether the IANA RDAP directory lists a registry server over https for the top-level domain; false means the tool could not ask, not that the name is free.

**data.result.found** `boolean`

Whether the registry has a registration for this exact name.

**data.result.unicode\_name** `string | null`

The name in Unicode, when the registry gives one. `null` when the source gives no value.

**data.result.registry\_domain\_id** `string | null`

The registry's id for the registration; null when the registry does not publish it.

**data.result.registrar** `object | null`

Registrar. `null` when the source gives no value.

**data.result.registrar.name** `string | null`

The registrar's name as the registry lists it. `null` when the source gives no value.

**data.result.registrar.iana\_id** `string | null`

The registrar's IANA id; null for a registry whose registrars have none.

**data.result.status** `string[]`

Status codes in the registry's words, for example client transfer prohibited.

**data.result.registered\_on** `string | null`

Registration date, YYYY-MM-DD UTC. `null` when the source gives no value.

**data.result.expires\_on** `string | null`

Expiry date, YYYY-MM-DD UTC. `null` when the source gives no value.

**data.result.last\_changed\_on** `string | null`

Date the record last changed, YYYY-MM-DD UTC. `null` when the source gives no value.

**data.result.last\_transferred\_on** `string | null`

Date of the last transfer between registrars, YYYY-MM-DD UTC; null when never transferred or not stated.

**data.result.nameservers** `string[]`

Nameserver host names, lower case, sorted.

**data.result.dnssec\_signed** `boolean | null`

Whether the delegation is DNSSEC signed; null when not stated.

```bash cURL theme={null}
curl -X POST https://win.oneshotagent.com/v1/tools/lookup/company-domain-registration \
  -H "Content-Type: application/json" \
  -H "payment-signature: <base64 x402 payment>" \
  -d '{
    "domain": "lockheedmartin.com"
  }'
```

```javascript JavaScript theme={null}
const response = await fetch("https://win.oneshotagent.com/v1/tools/lookup/company-domain-registration", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "payment-signature": paymentProof,
  },
  body: JSON.stringify({
    "domain": "lockheedmartin.com"
  }),
});
```

```typescript SDK theme={null}
const result = await agent.tool('lookup/company-domain-registration', {
  domain: 'lockheedmartin.com'
});
console.log(result.result);
console.log(result.evidence);
```

```json Response (200) theme={null}
{
  "success": true,
  "data": {
    "request_id": "uuid",
    "receipt_id": "rcpt_...",
    "status": "completed",
    "tool": "company_domain_registration",
    "result": {
      "domain": "lockheedmartin.com",
      "rdap_available": true,
      "found": true,
      "unicode_name": null,
      "registry_domain_id": "92520_DOMAIN_COM-VRSN",
      "registrar": {
        "name": "CSC Corporate Domains, Inc.",
        "iana_id": "299"
      },
      "status": [
        "client transfer prohibited",
        "server delete prohibited",
        "server transfer prohibited",
        "server update prohibited"
      ],
      "registered_on": "1996-10-12",
      "expires_on": "2032-10-11",
      "last_changed_on": "2022-10-20",
      "last_transferred_on": null,
      "nameservers": [
        "ns1.lmco.com",
        "ns2.lmco.com",
        "ns3.lmco.com"
      ],
      "dnssec_signed": false
    },
    "evidence": {
      "source": "Domain name registry for .com (RDAP)",
      "source_kind": "public",
      "retrieved_at": "2026-10-27T02:42:28.000Z",
      "calls": [
        {
          "retrieved_at": "2026-10-27T02:42:28.000Z"
        },
        {
          "retrieved_at": "2026-10-27T02:42:28.000Z"
        }
      ],
      "as_of": "2022-10-20T15:16:46Z"
    }
  }
}
```

> [!NOTE]
>
> See [Pricing](https://docs.oneshotagent.com/pricing.md) for this tool's price. A wallet (x402) call receives it in the 402 quote before anything is charged; a call paid from prepaid credits is charged when the API accepts the request and answers `200`.

## Notes

* Give the registered name itself, not a web address or a host under it: a host under a registered name ([www.example.com](http://www.example.com)) answers not found. Give an internationalized name in its `xn--` form.
* `found` false with `rdap_available` true means the registry has no registration for that exact name.
* `rdap_available` false means the tool could not ask: the IANA RDAP directory lists no registry server for the top-level domain, or lists one reachable over http only (the tool asks over https alone). It does not mean the name is free.
* Status codes are in the registry's words, for example `client transfer prohibited`.
* Dates are `YYYY-MM-DD` UTC; a date the registry does not state is null.
* The registry record carries no owner: the registrant's name and contacts are never returned.
* Results return inline. The finished job stays available at `/v1/requests/{request_id}`


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