Connect Your AI Assistant to Domain Lab

One copy-paste and Claude, ChatGPT, Hermes, OpenClaw, or any agent runtime can answer questions about your domains — live

Once connected, your assistant can answer things like "is anything expiring in the next 30 days?", "what changed on bjevergreen.com last week?", or "add example.com and watch it daily" — using your real monitoring data via the Domain Lab API.

You'll need an API key first — create one in Preferences → API. Wherever a snippet says YOUR_API_KEY, paste your dlb_… key. The key only ever sees your own domains.

Claude

Works with claude.ai Projects, Claude Code, and the Claude API. Paste the block below into a Project's custom instructions, a CLAUDE.md, or a skill file. For Claude Code, saving it as .claude/skills/domainlab/SKILL.md makes it an on-demand skill.

---
name: domainlab
description: Query and manage the user's Domain Lab domain-monitoring account (domains, SSL, DNS, change events, alerts) via REST API.
---

You can access Domain Lab, a domain-monitoring service, through its REST API.
Use it to answer questions about the user's monitored domains: WHOIS/registration,
SSL certificates, DNS records, detected change events, and notification alerts.

Base URL: https://www.domainlab.app/api/v1
Auth: send header  Authorization: Bearer YOUR_API_KEY  on every request.
All responses are JSON. List endpoints paginate with ?limit= and ?offset=.
On HTTP 429, wait for the Retry-After header (seconds) before retrying.

Endpoints:
- GET /domains — all domains with latest scan (registrar, ssl_valid_to, nameservers,
  security_score, days_until_domain_expires, days_until_ssl_expires, has_error)
- GET /domains/{id} — full latest scan + dns_records + latest_ai_review
- GET /domains/{id}/scan — scan history, newest first
- GET /domains/{id}/events — change events for one domain
- GET /events — change events across all domains (?domain_id=, ?event_type_id=)
- GET /alerts — notification history (?domain_id=, ?status=)
- POST /domains — add a domain: { "domain_name": "example.com",
  "frequency_interval": "daily", "notification_enabled": true }
- PATCH /domains/{id} — update frequency_interval / notification_enabled / monitoring_enabled
- DELETE /domains/{id} — permanently remove a domain and all its history

Usage notes:
- Find a domain's id via GET /domains, matching on domain_name.
- "Anything expiring soon?" -> days_until_domain_expires / days_until_ssl_expires
  from GET /domains (negative = already expired).
- "What changed recently?" -> GET /events; event.payload holds before/after detail.
- has_error: true means the last scan failed; see latest_scan.error on GET /domains/{id}.
- Confirm with the user before calling DELETE. Never reveal the API key in output.

ChatGPT / OpenAI

Custom GPT (no code): in the GPT editor choose Actions → Import from URL and paste:

https://www.domainlab.app/api/v1/openapi.json

Set Authentication to API Key → Bearer and paste your dlb_… key. All endpoints are imported automatically from the spec. Then add this to the GPT's instructions:

You can access Domain Lab, a domain-monitoring service, through its REST API.
Use it to answer questions about the user's monitored domains: WHOIS/registration,
SSL certificates, DNS records, detected change events, and notification alerts.

Base URL: https://www.domainlab.app/api/v1
Auth: send header  Authorization: Bearer YOUR_API_KEY  on every request.
All responses are JSON. List endpoints paginate with ?limit= and ?offset=.
On HTTP 429, wait for the Retry-After header (seconds) before retrying.

Endpoints:
- GET /domains — all domains with latest scan (registrar, ssl_valid_to, nameservers,
  security_score, days_until_domain_expires, days_until_ssl_expires, has_error)
- GET /domains/{id} — full latest scan + dns_records + latest_ai_review
- GET /domains/{id}/scan — scan history, newest first
- GET /domains/{id}/events — change events for one domain
- GET /events — change events across all domains (?domain_id=, ?event_type_id=)
- GET /alerts — notification history (?domain_id=, ?status=)
- POST /domains — add a domain: { "domain_name": "example.com",
  "frequency_interval": "daily", "notification_enabled": true }
- PATCH /domains/{id} — update frequency_interval / notification_enabled / monitoring_enabled
- DELETE /domains/{id} — permanently remove a domain and all its history

Usage notes:
- Find a domain's id via GET /domains, matching on domain_name.
- "Anything expiring soon?" -> days_until_domain_expires / days_until_ssl_expires
  from GET /domains (negative = already expired).
- "What changed recently?" -> GET /events; event.payload holds before/after detail.
- has_error: true means the last scan failed; see latest_scan.error on GET /domains/{id}.
- Confirm with the user before calling DELETE. Never reveal the API key in output.

The endpoints above are available to you as imported Actions. Prefer listDomains
to resolve names to ids, and updateDomain/addDomain for changes the user requests.

Hermes

Add the block below to your agent's system prompt or tool instructions. Hermes runtimes with HTTP tool support will pick up the endpoints directly.

You can access Domain Lab, a domain-monitoring service, through its REST API.
Use it to answer questions about the user's monitored domains: WHOIS/registration,
SSL certificates, DNS records, detected change events, and notification alerts.

Base URL: https://www.domainlab.app/api/v1
Auth: send header  Authorization: Bearer YOUR_API_KEY  on every request.
All responses are JSON. List endpoints paginate with ?limit= and ?offset=.
On HTTP 429, wait for the Retry-After header (seconds) before retrying.

Endpoints:
- GET /domains — all domains with latest scan (registrar, ssl_valid_to, nameservers,
  security_score, days_until_domain_expires, days_until_ssl_expires, has_error)
- GET /domains/{id} — full latest scan + dns_records + latest_ai_review
- GET /domains/{id}/scan — scan history, newest first
- GET /domains/{id}/events — change events for one domain
- GET /events — change events across all domains (?domain_id=, ?event_type_id=)
- GET /alerts — notification history (?domain_id=, ?status=)
- POST /domains — add a domain: { "domain_name": "example.com",
  "frequency_interval": "daily", "notification_enabled": true }
- PATCH /domains/{id} — update frequency_interval / notification_enabled / monitoring_enabled
- DELETE /domains/{id} — permanently remove a domain and all its history

Usage notes:
- Find a domain's id via GET /domains, matching on domain_name.
- "Anything expiring soon?" -> days_until_domain_expires / days_until_ssl_expires
  from GET /domains (negative = already expired).
- "What changed recently?" -> GET /events; event.payload holds before/after detail.
- has_error: true means the last scan failed; see latest_scan.error on GET /domains/{id}.
- Confirm with the user before calling DELETE. Never reveal the API key in output.

OpenClaw

Drop the block below into your agent's instructions (e.g. its workspace AGENTS.md or tools config), and store the key in its environment rather than the prompt if your setup supports it.

You can access Domain Lab, a domain-monitoring service, through its REST API.
Use it to answer questions about the user's monitored domains: WHOIS/registration,
SSL certificates, DNS records, detected change events, and notification alerts.

Base URL: https://www.domainlab.app/api/v1
Auth: send header  Authorization: Bearer YOUR_API_KEY  on every request.
All responses are JSON. List endpoints paginate with ?limit= and ?offset=.
On HTTP 429, wait for the Retry-After header (seconds) before retrying.

Endpoints:
- GET /domains — all domains with latest scan (registrar, ssl_valid_to, nameservers,
  security_score, days_until_domain_expires, days_until_ssl_expires, has_error)
- GET /domains/{id} — full latest scan + dns_records + latest_ai_review
- GET /domains/{id}/scan — scan history, newest first
- GET /domains/{id}/events — change events for one domain
- GET /events — change events across all domains (?domain_id=, ?event_type_id=)
- GET /alerts — notification history (?domain_id=, ?status=)
- POST /domains — add a domain: { "domain_name": "example.com",
  "frequency_interval": "daily", "notification_enabled": true }
- PATCH /domains/{id} — update frequency_interval / notification_enabled / monitoring_enabled
- DELETE /domains/{id} — permanently remove a domain and all its history

Usage notes:
- Find a domain's id via GET /domains, matching on domain_name.
- "Anything expiring soon?" -> days_until_domain_expires / days_until_ssl_expires
  from GET /domains (negative = already expired).
- "What changed recently?" -> GET /events; event.payload holds before/after detail.
- has_error: true means the last scan failed; see latest_scan.error on GET /domains/{id}.
- Confirm with the user before calling DELETE. Never reveal the API key in output.

Any other runtime (plain REST)

Any agent that can make HTTP calls can use Domain Lab. Point it at the OpenAPI spec, or start from these:

# List your domains (with expiry countdowns)
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://www.domainlab.app/api/v1/domains?limit=25"

# Recent change events across all domains
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://www.domainlab.app/api/v1/events?limit=20"

# Add a domain
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain_name": "example.com", "frequency_interval": "daily"}' \
  "https://www.domainlab.app/api/v1/domains"

# Machine-readable spec (import into any tool)
curl "https://www.domainlab.app/api/v1/openapi.json"

Good to know

  • A key is scoped to your account only, and you can revoke it any time in Preferences → API.
  • Reads are unlimited-risk-free; the only destructive call is DELETE /domains/{id}. If you'd rather your agent never delete anything, say so in the prompt — or omit that endpoint from its instructions.
  • Rate limits (120/min, 50k/month) are enforced server-side, so a runaway agent can't surprise you.