$ agentroot registry lifecycle
How records enter, refresh, and exit the AgentRoot registry.
Registry indexing flow
- Publisher adds
_agentroot.<domain>TXT record and (optionally) hosts manifest JSON - Publisher submits domain via /publish or
POST /api/submit - AgentRoot's resolver queries DNS within ~30 seconds, parses the TXT record
- If
manifest=<url>, fetches the JSON and indexes each record - Records become searchable via
/api/records(primary),/api/discover(legacy), the MCP server'ssearch_recordstool, andagent-root search
DNS re-verification cadence
AgentRoot re-verifies every indexed domain every ~6 hours via the cron tick at /api/cron/tick (Vercel cron, see vercel.json crons section). Each tick re-queries DNS, re-fetches the manifest if applicable, and updates the last_verified timestamp on the record.
If verification fails (NXDOMAIN, manifest fetch 404, JSON parse error, domain field mismatch), the record's status is marked failed and a verification_log entry is recorded. The record stays in the registry but shows as inactive in search results.
Agent inactivity threshold
A record that has failed DNS verification for 90 consecutive days is treated as abandoned. The record remains in the database for historical purposes (status: 'failed') but is excluded from default search results. To reinstate, the publisher must re-submit via /publish or POST /api/submit.
Why 90 days? Long enough to ride out transient DNS issues, hosting migrations, and publisher absences. Short enough that the registry doesn't accumulate years of dead records.
Active records (recently verified) are returned with status: 'active' and are prioritized in search.
Manual de-listing
If a publisher wants to remove their domain from the registry without waiting for DNS-driven expiry:
- Remove the
_agentroot.<domain>TXT record from DNS - Wait for the next cron tick (~6 hours) — the record will be marked failed
- (Optional) Email
[email protected]to request immediate purge from the database
Status values reference
| Status | Meaning |
|---|---|
active | DNS verified within the last 24 hours; manifest parses cleanly |
pending | Submitted but not yet verified by the next cron tick |
failed | DNS or manifest verification failed; record retained but not surfaced in search |
unverified | Submitted via API without DNS verification; lowest trust tier |