Plenty of work needs a public hostname for an afternoon. A callback target while a webhook is being built. A demo that has to be reachable by name rather than by address. An agent that must be addressable for the length of one job. The name is needed for an hour, and the usual path is to register something, wait for it to spread, and then forget to clean it up. Here the cleanup is the default.

What it does

One request with the address you want it to point at gives back a name of the form aisense-slug.53for24h.com, an A record with a TTL of 60 seconds, and a token that is shown once. The name lives for 24 hours from creation. Nothing renews it.

curl -s -X POST https://aisenseapi.com/services/v1/dns \
  -H 'Content-Type: application/json' \
  -d '{"ip": "203.0.113.10"}'

The answer carries the name, the record, the address, the TTL, the expiry, the two name servers and the zone's serial. Reading it back needs nothing at all, since everything in it is already public in DNS. Changing the address or removing the name needs the token.

CallTokenDoes
POST /services/v1/dnsNoneCreate a name. The address must be a public unicast address
GET /services/v1/dns/{slug}NoneRead what the name currently says
POST /services/v1/dns/{slug}/updateBearerPoint it somewhere else. The expiry does not move
DELETE /services/v1/dns/{slug}BearerRemove it from both name servers at once

The same four operations are MCP tools, so an agent can do this without an HTTP client of its own: create_dns_name, read_dns_name, update_dns_name and delete_dns_name on the free MCP server.

Measured this evening

We ran the whole cycle from outside, against the live service, before writing this.

StepWhat happened
Create201 in 0.23 seconds, with the name, TTL 60 and an expiry 24 hours out
ResolveThe same address from both name servers and from a public resolver immediately after
Read200, the same record, no token needed
Delete200, and neither name server answered for the name afterwards
An unknown name in the zoneNXDOMAIN from both
A name outside the zoneREFUSED from both, which is what an authoritative server should say
The zone itselfSame serial from both servers over TCP, before and after the change

The shape of it

Create it, use it, and let it expire.

A name that outlives the work becomes something to inventory, secure and eventually explain. A name with 24 hours on it never becomes anything.

Two servers, two places

The zone is served by two name servers, ns1.aisenseapi.com and ns2.aisenseapi.com, on separate machines at separate sites, and the delegation for 53for24h.com points at them at the registry. A change written through the API reaches both, and both report the same zone serial. Everything else in DNS is left alone: the service serves this one zone and answers REFUSED for anything outside it.

Limits, and what this is not

The pilot allows 20 names per client address per UTC day and 100 active names in total. The TTL menu has one item, 60 seconds, because a short-lived name with a long TTL is a name that keeps answering after it is gone. Names are public: they are in DNS, they can be enumerated by anyone watching, and nothing private belongs in one.

This is a pilot, and we are not quoting a query rate. The capacity of the running daemon has not been measured, so any number here would be a guess. What is measured is above, and it is one cycle rather than a load test.

Take one

No account, no API key, and it cleans up after itself.

The DNS calls sit with the rest of the free public API, and the four MCP tools are on the same free MCP server as the other tools.