io.github.YS-projectcalc/agent-cold-email is an MCP server with 28 tools an agent can call, among them account, ack_message, activity. It answers at https://api.coldrig.dev/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 11 September 2026; the last check, on 21 October 2026, succeeded.
Coldrig — cold-email infra run by your agent: 28 MCP tools, live sending, free sandbox, from $99/mo.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
account | Account overview: brand, plan, status, billingState, activationState, resource counts, usageCents, quota, deliverability (loop state: paused/throttled mailboxes, burning domains, auto-replacements, recentActions[]), and teardown (reclaim su |
ack_message | Acknowledge a message by id (from list_messages or infrastructure_status's messages[]) — sets it read so it stops surfacing as unacked. THIS IS THE ONLY THING THAT SETS readAt: reading or listing messages never marks them, so a message stay Inputs: messageId |
activity | Unified activity feed: campaign events (sent/reply/bounce/...) merged with deliverability loop actions (pause/throttle/replace-domain). Cursor-paginated → { items[], nextCursor }; each item { id, kind:'event'|'deliverability', label, ts, ta Inputs: limit, cursor, kind |
campaign_results | Outcome counts for ONE campaign. Input: campaignId (from launch_campaign). Returns { campaignId, sent, reply, bounce, complaint, unsubscribe, failed, soft_bounce } — bounce = HARD only, soft_bounce separate, opens not tracked. 404 if unknow Inputs: campaignId |
configure_byo_domain | Register or advance a BYO domain/mailbox intake (SPEC.md §20). action = register (needs domain + domainRelationship: fresh_standalone|subdomain_of_primary|is_primary — runs the pre-flight live-infra scan + abuse gate + reputation ladder, re Inputs: action, id, domain, domainRelationship, acknowledged, count |
configure_dashboard | Write a saved dashboard view. action = create (needs name+layout) | update (needs id+rev+layout; optional name renames) | promote (id → default) | delete (id). update is rev-CAS: a stale rev returns { currentRev, currentLayout } to rebase a Inputs: action, id, name, rev, layout, note |
configure_webhook | Manage an outbound webhook subscription. action = create (needs url + eventTypes: reply|bounce|soft_bounce|complaint|unsubscribe; optional secret/active) | update (needs id + one changed field; active:true re-enables an auto-disabled one, a Inputs: action, id, url, eventTypes, secret, active |
contact_operator | Reach a human operator — for anything list_messages/infrastructure_status can't answer (a stuck vendor issue, a billing question, an account-level ask). Inputs: body (1-2000 chars), urgency ('normal' | 'needs_human', default 'normal'). File Inputs: body, urgency |
get_byo_domains | List your BYO (bring-your-own) domains, or (with id) one domain's full intake detail. No id → [{ domainId, domain, isPrimary, dnsMode, byoStatus, breakerTier, reputationBranch, mailboxCount }]. With id → adds the pre-flight scan result, abu Inputs: id |
get_dashboard | Read saved dashboard views. No id → list all: [{ id, name, isDefault, rev, editedBy }]. With id → that view's full layout + rev (pass this rev as the CAS base to configure_dashboard update). Views are both agent- and human-editable; write t Inputs: id |
get_webhooks | List your outbound webhook subscriptions, or (with id) one subscription plus its recent delivery + attempt log. No id → [{ id, url, eventTypes, active, status, disabledReason, consecutiveFailures }]. With id → { subscription, recentDeliveri Inputs: id |
inbox | Unified reply inbox across mailboxes. Cursor-paginated → { threads[], nextCursor }; each row: threadId, campaignName, leadEmail, subject, mailboxEmail, label, lastEventType, markStatus. Filters: mailbox, campaign, label, read, includeNonrep Inputs: limit, cursor, mailbox, campaign, label, read |
infrastructure_status | Warmup + provisioning progress per mailbox. New mailboxes are ramp-limited server-side: 5 sends/day week 1 rising to 40/day after 4 weeks; current dailyCap for each mailbox is in the response below — ramp caps permit CAPPED sending from day |
label_thread | Set or clear a triage LABEL on an inbox thread — the same chip the dashboard shows. Inputs: threadId, label (string; pass label:null to clear). Distinct from mark (read/unread/archived state): a label is a free-form category, not a read fla Inputs: threadId, label |
launch_campaign | Create and activate a campaign on a lead list. You supply name, offer, leads[], sequence[] (per step: subject, body, delayDays), sendWindow, timezone, stopOnReply — the platform does not write copy. Steps schedule up front; suppressed leads Inputs: name, offer, leads, sequence, timezone, sendWindow |
list_campaigns | List every campaign at once: [{ campaignId, name, status, counts{sent,reply,bounce,complaint,unsubscribe,failed,soft_bounce} }], newest first — no per-campaign lookup needed. Use campaign_results for one campaign's counts, metrics for accou |
list_leads | List/export leads with their contact-level disposition, cursor-paginated. Returns { leads[], nextCursor }; each row: leadId, email, firstName, company, campaignId, campaignName, globalStatus, interestStatus, notes, tags, suppressed, lastEve Inputs: campaign, interestStatus, suppressed, replied, cursor, limit |
list_messages | List this tenant's system + operator messages (a retryable setup step, a credential going live, an operator notice), cursor-paginated. Unacked messages sort first (newest first within that group), then acked ones (also newest first). Return Inputs: cursor, limit |
mark | Set a thread's READ-STATE for inbox triage. Inputs: threadId, status = 'read' | 'unread' | 'archived' (archived hides it from the default inbox; refetch with inbox archived='include'/'only'). Returns { marked: true }. 404 if unknown. This i Inputs: threadId, status |
metrics | Account-wide outcome totals across ALL campaigns: { sent, reply, bounce, complaint, unsubscribe, failed, soft_bounce } — same shape as campaign_results but summed tenant-wide (bounce = hard only, opens not tracked). Use campaign_results for |
pause | Pause ONE campaign: its status → 'paused', so the tick schedules no further steps (already-sent mail is unaffected; there is no resume tool). Input: campaignId. Returns { paused: true }. 404 if not found. Use pause_all to pause every active Inputs: campaignId |
pause_all | Pause EVERY active campaign for the tenant at once (each active status → 'paused'; the tick then schedules no further sends). No inputs. Returns { pausedAll: true }. Use pause to pause a single campaign by id. |
remove_mailboxes | Downgrade: release your N NEWEST live mailboxes now and lower the billed quantity. Inputs: count, acknowledged (must be true — this is a quoted, irreversible-this-cycle consent: the release is immediate for provisioning but there is NO mid- Inputs: count, acknowledged, idempotencyKey |
reply | Send a reply on an existing thread, from the mailbox that sent it. Inputs: threadId, body. Returns { messageId, deduplicated }. A reply is real sending volume and is governed exactly like campaign sends: it counts against that mailbox's dai Inputs: threadId, body, idempotencyKey |
setup_infrastructure | Provision sending infrastructure: buy branded lookalike domains, create mailboxes, start warmup. New mailboxes are ramp-limited server-side — 5 sends/day in week 1, rising to 40/day after 4 weeks — and your own calls cannot exceed that cap; Inputs: brand, primaryDomain, domains, inboxesEach, persona, physicalAddress |
suppress_lead | Permanently suppress an email address tenant-wide (every current and future campaign) — the manual/free-text 'stop emailing me' path for opt-outs the strict typed-unsubscribe matcher misses. Inputs: email, reason (fixed 'manual' — the only Inputs: email, reason, note |
thread | Full message history for ONE thread. Input: threadId (from inbox). Returns { threadId, campaignId, leadId, leadEmail, mailboxEmail (null before first send), messages[] }, each message { type (sent/reply/bounce/...), ts, messageId, metadata Inputs: threadId |
update_lead | Record what you learned about a contact (their reply, your triage) as a durable, contact-level disposition — keyed by email, visible across every campaign that lists them. Inputs: email, interestStatus (none|interested|meeting_booked|not_no Inputs: email, interestStatus, notes, tags |
Every block below points at https://api.coldrig.dev/mcp. Pick your client and copy.
claude mcp add --transport http io-github-ys-projectcalc-agent-c https://api.coldrig.dev/mcp
{
"mcpServers": {
"io-github-ys-projectcalc-agent-c": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.coldrig.dev/mcp"]
}
}
}{
"mcpServers": {
"io-github-ys-projectcalc-agent-c": {
"url": "https://api.coldrig.dev/mcp"
}
}
}{
"servers": {
"io-github-ys-projectcalc-agent-c": {
"type": "http",
"url": "https://api.coldrig.dev/mcp"
}
}
}{
"context_servers": {
"io-github-ys-projectcalc-agent-c": {
"url": "https://api.coldrig.dev/mcp"
}
}
}{
"mcpServers": {
"io-github-ys-projectcalc-agent-c": {
"serverUrl": "https://api.coldrig.dev/mcp"
}
}
}{
"mcpServers": {
"io-github-ys-projectcalc-agent-c": {
"url": "https://api.coldrig.dev/mcp"
}
}
}name: io.github.YS-projectcalc/agent-cold-email
version: 0.0.1
schema: v1
mcpServers:
- name: io.github.YS-projectcalc/agent-cold-email
type: streamable-http
url: https://api.coldrig.dev/mcp{
"mcpServers": {
"io-github-ys-projectcalc-agent-c": {
"httpUrl": "https://api.coldrig.dev/mcp"
}
}
}{
"mcpServers": {
"io-github-ys-projectcalc-agent-c": {
"type": "http",
"url": "https://api.coldrig.dev/mcp"
}
}
}{
"mcpServers": {
"io-github-ys-projectcalc-agent-c": {
"url": "https://api.coldrig.dev/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fapi.coldrig.dev%2Fmcp&type=streamable_http&id=io-github-ys-projectcalc-agent-c&name=io.github.YS-projectcalc/agent-cold-email
It answered our last check on 21 October 2026 in 436 ms. Over 6 checks since 11 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
28, as returned by the server's own tools/list on 13 September 2026: account, ack_message, activity, campaign_results, configure_byo_domain, configure_dashboard, configure_webhook, contact_operator, and 20 more.
It answered our last check on 21 October 2026 in 436 ms. Over 6 checks since 11 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://api.coldrig.dev/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.github.ys-projectcalc. Endpoint host: api.coldrig.dev. ARD identifier: urn:air:io.github.ys-projectcalc:mcp:agent-cold-email.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.