curl -sS https://win.oneshotagent.com/v1/tools/email/domains \
-H "X-Agent-ID: 0x..." \
-H "x-agent-proof: <base64 signed proof, scope read>"
const res = await fetch(
"https://win.oneshotagent.com/v1/tools/email/domains",
{ headers: { "X-Agent-ID": wallet, "x-agent-proof": proof } }
);
const { domains } = await res.json();
const { domains } = await agent.listDomains();
// → [{ domain, pool_status, warmup_score, daily_send_limit, ... }, ...]
domains = client.list_domains()["domains"]
# → [{ "domain": ..., "pool_status": ..., "warmup_score": ..., ... }, ...]
{
"agent_id": "0x2b06a0b0bD111B83509C5850d934F5Bf2076B191",
"domains": [
{
"domain": "oneshotagents.com",
"default_from": "[email protected]",
"mailbox_mode": "mailbox",
"addresses": [
{ "address": "[email protected]", "status": "active", "warmup_state": "warmed" },
{ "address": "[email protected]", "status": "active", "warmup_state": "warming" }
],
"pool_status": "paused",
"warmup_state": "degraded",
"pause_reason": "low_reputation",
"provisioning_status": "verified",
"warmup_score": 48,
"warmup_score_updated_at": "2026-06-22T10:00:46.988Z",
"warmup_started_at": "2026-06-08T15:56:20.266Z",
"daily_send_limit": 100,
"daily_sent_count": 2,
"daily_sent_date": "2026-06-21",
"last_used_at": "2026-06-21T15:53:53.738Z"
},
{
"domain": "soulhunt.ai",
"default_from": "[email protected]",
"mailbox_mode": "relay",
"addresses": [],
"pool_status": "active",
"warmup_state": "warmed",
"pause_reason": null,
"provisioning_status": "verified",
"warmup_score": 82,
"warmup_score_updated_at": "2026-06-22T10:00:46.988Z",
"warmup_started_at": null,
"daily_send_limit": 50,
"daily_sent_count": 0,
"daily_sent_date": null,
"last_used_at": null
}
]
}
Email
List Domain Pool
List every domain the caller owns, with rotation and warmup state.
GET
/
v1
/
tools
/
email
/
domains
curl -sS https://win.oneshotagent.com/v1/tools/email/domains \
-H "X-Agent-ID: 0x..." \
-H "x-agent-proof: <base64 signed proof, scope read>"
const res = await fetch(
"https://win.oneshotagent.com/v1/tools/email/domains",
{ headers: { "X-Agent-ID": wallet, "x-agent-proof": proof } }
);
const { domains } = await res.json();
const { domains } = await agent.listDomains();
// → [{ domain, pool_status, warmup_score, daily_send_limit, ... }, ...]
domains = client.list_domains()["domains"]
# → [{ "domain": ..., "pool_status": ..., "warmup_score": ..., ... }, ...]
{
"agent_id": "0x2b06a0b0bD111B83509C5850d934F5Bf2076B191",
"domains": [
{
"domain": "oneshotagents.com",
"default_from": "[email protected]",
"mailbox_mode": "mailbox",
"addresses": [
{ "address": "[email protected]", "status": "active", "warmup_state": "warmed" },
{ "address": "[email protected]", "status": "active", "warmup_state": "warming" }
],
"pool_status": "paused",
"warmup_state": "degraded",
"pause_reason": "low_reputation",
"provisioning_status": "verified",
"warmup_score": 48,
"warmup_score_updated_at": "2026-06-22T10:00:46.988Z",
"warmup_started_at": "2026-06-08T15:56:20.266Z",
"daily_send_limit": 100,
"daily_sent_count": 2,
"daily_sent_date": "2026-06-21",
"last_used_at": "2026-06-21T15:53:53.738Z"
},
{
"domain": "soulhunt.ai",
"default_from": "[email protected]",
"mailbox_mode": "relay",
"addresses": [],
"pool_status": "active",
"warmup_state": "warmed",
"pause_reason": null,
"provisioning_status": "verified",
"warmup_score": 82,
"warmup_score_updated_at": "2026-06-22T10:00:46.988Z",
"warmup_started_at": null,
"daily_send_limit": 50,
"daily_sent_count": 0,
"daily_sent_date": null,
"last_used_at": null
}
]
}
Lists every domain you own with its rotation state, warmup health, daily capacity and mailbox mode.
Authentication
Requires anX-Agent-ID header with your wallet address and a signed
x-agent-proof (scope read), or an access token. An unsigned request is
answered 401 proof_required. Free; no x402 payment.
Response
string
The caller’s wallet, echoed.
array
Every non-
removed domain the caller owns, oldest first. Domains owned by a
soul are not returned.Each domain
string
The bare domain, e.g.
oneshotagents.com.string
The domain’s canonical sending address, e.g.
[email protected]. An
ordinary mailbox: its first send bills the one-time
mailbox_provisioning_fee. Omitting from_address does not fall back to it:
a quote without one uses rotation.string
mailbox: any address not active in addresses[] bills the one-time
mailbox_provisioning_fee on its first send, default_from included.
relay: send from any address, fee always 0. Fixed at setup; a later quote
cannot change it. mailbox_provisioning_fee on the
quote is the exact charge.object[]
string
Rotation eligibility:
active (eligible) or paused (out of rotation; see
pause_reason). A domain still warming is paused with
pause_reason: warming.string
Reputation health, independent of rotation:
warming (warmup not finished),
warmed (score 75 or higher), or degraded (score fell below 60 after the
warmup grace period).string | null
null when active. warming: joins rotation at warmup score 75.
low_reputation: the score fell below 60; returns to active on its own once
warmed again. manual: paused with
/domains/:domain/pause until you
resume it.string
unprovisioned, provisioning, verified, or blocked. A verified domain
can still be out of rotation while warming.integer | null
0-100, refreshed daily;
null until first measured.string | null
When
warmup_score was last refreshed (ISO 8601).string | null
When the domain entered warmup (ISO 8601).
integer
Cap on rotated sends per UTC day. Default
50; a warming domain starts at 20
and rises over time.integer
Recipients sent today, rotation picks and pinned sends both. Only rotation is
blocked by
daily_send_limit.string | null
UTC date of the current
daily_sent_count.string | null
Last use. Rotation picks the least recently used domain first.
curl -sS https://win.oneshotagent.com/v1/tools/email/domains \
-H "X-Agent-ID: 0x..." \
-H "x-agent-proof: <base64 signed proof, scope read>"
const res = await fetch(
"https://win.oneshotagent.com/v1/tools/email/domains",
{ headers: { "X-Agent-ID": wallet, "x-agent-proof": proof } }
);
const { domains } = await res.json();
const { domains } = await agent.listDomains();
// → [{ domain, pool_status, warmup_score, daily_send_limit, ... }, ...]
domains = client.list_domains()["domains"]
# → [{ "domain": ..., "pool_status": ..., "warmup_score": ..., ... }, ...]
{
"agent_id": "0x2b06a0b0bD111B83509C5850d934F5Bf2076B191",
"domains": [
{
"domain": "oneshotagents.com",
"default_from": "[email protected]",
"mailbox_mode": "mailbox",
"addresses": [
{ "address": "[email protected]", "status": "active", "warmup_state": "warmed" },
{ "address": "[email protected]", "status": "active", "warmup_state": "warming" }
],
"pool_status": "paused",
"warmup_state": "degraded",
"pause_reason": "low_reputation",
"provisioning_status": "verified",
"warmup_score": 48,
"warmup_score_updated_at": "2026-06-22T10:00:46.988Z",
"warmup_started_at": "2026-06-08T15:56:20.266Z",
"daily_send_limit": 100,
"daily_sent_count": 2,
"daily_sent_date": "2026-06-21",
"last_used_at": "2026-06-21T15:53:53.738Z"
},
{
"domain": "soulhunt.ai",
"default_from": "[email protected]",
"mailbox_mode": "relay",
"addresses": [],
"pool_status": "active",
"warmup_state": "warmed",
"pause_reason": null,
"provisioning_status": "verified",
"warmup_score": 82,
"warmup_score_updated_at": "2026-06-22T10:00:46.988Z",
"warmup_started_at": null,
"daily_send_limit": 50,
"daily_sent_count": 0,
"daily_sent_date": null,
"last_used_at": null
}
]
}
Notes
- Read-only.
- Before a large send, add up
daily_send_limit - daily_sent_countacrossactiverows. Below your batch size: buy another domain or wait for the UTC rollover.