80trust / 100
Domain Availability
by Tanod dnspeek in Developer tools
x402 APIPassing, checked 3 h ago
dnspeek (Tanod) domain availability: registry RDAP and DNS NS evidence for each name, inferred and not a registrar quote. USD 0.0005 per name, at least USD 0.002 per call (1-50 names per call: USD 0.002-0.025). This call: 3 names. Use when an agent must check whether domain names are free to register before suggesting or buying them.
POST https://tanod.dev/v1/domain/availability
Last 30 days
All checks passedSome failedAll failedNot checked
- Uptime
- 100%
- Response time
- 295 ms typical, 1.1 s slowest 5%
- Last check
- 3 h ago
- Next check
- any minute now
How to call it
# bash or zsh: see the payment challenge (nothing is charged)
curl -g -i -X POST 'https://tanod.dev/v1/domain/availability' \
-H 'content-type: application/json' \
--data-raw '{"names":["example.com","tanod-not-a-real-name-12345.com","b\u00fccher.de"]}'import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client().register(
"eip155:8453",
new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)),
);
const pay = wrapFetchWithPayment(fetch, client);
// Not sure it's safe to pay? Preflight it first for $0.005:
// GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Ftanod.dev%2Fv1%2Fdomain%2Favailability
const res = await pay("https://tanod.dev/v1/domain/availability", {
method: "POST",
headers: { "content-type": "application/json" },
body: "{\"names\":[\"example.com\",\"tanod-not-a-real-name-12345.com\",\"b\u00fccher.de\"]}",
});
console.log(await res.json());Example input
{
"names": [
"example.com",
"tanod-not-a-real-name-12345.com",
"bücher.de"
]
}Example output
{
"available": 1,
"checked_at": "2026-10-10T08:00:00Z",
"count": 3,
"disclaimer": "Availability is inferred from the registry's public RDAP answer and DNS, not from a registrar. Premium, reserved, blocked or not-yet-released names can look available and still not be registrable, and a name can be taken between this check and a purchase. Only a registrar can confirm that a name can be bought.",
"registered": 2,
"results": [
{
"evidence": {
"ns_found": null,
"rdap_error": null,
"rdap_status": 200
},
"name": "example.com",
"note": "The registry's RDAP server has a record for this name.",
"status": "registered"
},
{
"evidence": {
"ns_found": false,
"rdap_error": null,
"rdap_status": 404
},
"name": "tanod-not-a-real-name-12345.com",
"note": "No RDAP record and no NS records. Likely available; premium or reserved names can look the same, so confirm with a registrar.",
"status": "available"
},
{
"evidence": {
"ns_found": true,
"rdap_error": "no_rdap_server",
"rdap_status": null
},
"input": "bücher.de",
"name": "xn--bcher-kva.de",
"note": "RDAP could not decide, and the name has NS records in DNS.",
"status": "registered"
}
],
"unknown": 0
}Security scan
- No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.
Recent checks
| When | Result | HTTP | Time | Price |
|---|---|---|---|---|
| 3 h ago | Passed | 402 | 1.2 s | $0.002 |
| 7 h ago | Passed | 402 | 1.0 s | $0.002 |
| 11 h ago | Passed | 402 | 257 ms | $0.002 |
| 15 h ago | Passed | 402 | 293 ms | $0.002 |
| 19 h ago | Passed | 402 | 1.1 s | $0.002 |
| 22 h ago | Passed | 402 | 383 ms | $0.002 |
| 26 h ago | Passed | 402 | 871 ms | $0.002 |
| 29 h ago | Passed | 402 | 914 ms | $0.002 |
| 33 h ago | Passed | 402 | 271 ms | $0.002 |
| 37 h ago | Passed | 402 | 279 ms | $0.002 |
| 40 h ago | Passed | 402 | 284 ms | $0.002 |
| 44 h ago | Passed | 402 | 298 ms | $0.002 |
| 2 days ago | Passed | 402 | 277 ms | $0.002 |
| 2 days ago | Passed | 402 | 821 ms | $0.002 |
| 2 days ago | Passed | 402 | 826 ms | $0.002 |