RenewRoster MCP server
REST APIMCP serverOpenAPI 3.1 spec
RenewRoster runs a remote Model Context Protocol server, so AI assistants can check and manage your agency's domains and SSL certificates.
| Server URL | https://app.renewroster.com/mcp |
|---|---|
| Transport | Streamable HTTP (stateless) |
| Auth | Header Authorization: Bearer <API key> |
| Rate limits | Same as the REST API: 60/min on free, 300/min on paid plans |
1. Create an API key
In the dashboard open API and create a key. Choose Read-only if the assistant should only look things up, or Read + write to let it add and remove assets. Copy the key; it's shown once.
2. Add the server to your client
Claude Code
claude mcp add --transport http renewroster https://app.renewroster.com/mcp --header "Authorization: Bearer $RR_KEY"
Claude Desktop
Settings → Developer → Edit Config, then add (uses mcp-remote to pass the header):
{
"mcpServers": {
"renewroster": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://app.renewroster.com/mcp", "--header", "Authorization:${RR_AUTH}"],
"env": { "RR_AUTH": "Bearer rr_live_xxxxxxxxxxxx_yourSecret" }
}
}
}
Cursor
~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"renewroster": {
"url": "https://app.renewroster.com/mcp",
"headers": { "Authorization": "Bearer rr_live_xxxxxxxxxxxx_yourSecret" }
}
}
}
VS Code (GitHub Copilot)
.vscode/mcp.json. VS Code prompts for the key and stores it securely:
{
"inputs": [{ "type": "promptString", "id": "rr-key", "description": "RenewRoster API key", "password": true }],
"servers": {
"renewroster": {
"type": "http",
"url": "https://app.renewroster.com/mcp",
"headers": { "Authorization": "Bearer ${input:rr-key}" }
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"renewroster": {
"serverUrl": "https://app.renewroster.com/mcp",
"headers": { "Authorization": "Bearer rr_live_xxxxxxxxxxxx_yourSecret" }
}
}
}
Keep keys out of shared repos. Prefer environment variables or your client's secret input.
Tools
| Tool | Key | What it does |
|---|---|---|
list_expiring | read | Domains and certificates expiring within N days (default 30), including expired |
list_assets | read | All tracked assets with filters: type, client, status, expiring_within |
get_asset | read | One asset with recent check history |
list_clients | read | Clients with asset counts |
lookup_domain | read | Live RDAP/WHOIS lookup of any domain (not saved) |
lookup_cert | read | Live TLS check of a public host's certificate (not saved) |
add_domain | read + write | Start tracking a domain, optionally under a client |
add_ssl_host | read + write | Start tracking a host's SSL certificate |
check_now | read + write | Re-check one asset now (rate-limited) |
add_client | read + write | Create a client |
delete_asset | read + write | Stop tracking an asset. Marked destructive, so clients ask before running it |
get_asset_history | read | Check history for one asset |
lookup_ct | read | Latest certificate for a hostname from Certificate Transparency logs |
get_agency | read | Plan, usage against limits and API rate limit |
list_members | read | Team members and roles |
list_alert_channels | read | Alert channels (URLs masked) |
get_reminders | read | Reminder schedule |
get_report | read | Monthly renewal report for a YYYY-MM period |
list_webhooks | read | Webhooks and last delivery |
list_webhook_deliveries | read | Delivery log for one webhook |
update_asset | read + write | Change client, who pays, auto-renew, cost, per-asset reminder days, or rename |
import_assets | read + write | Bulk add up to 1000 domains/SSL hosts; refused if it would pass the plan limit |
set_reminders | read + write | Set the agency reminder schedule |
add_alert_channel | read + write | Add an email, Slack, Discord or webhook alert channel |
update_alert_channel | read + write | Change or pause an alert channel |
test_alert_channel | read + write | Send a real sample alert to a channel (5/hour) |
delete_alert_channel | read + write | Delete an alert channel. Marked destructive |
update_webhook | read + write | Change or pause a webhook |
Write tools only appear when the key is read + write.
Example prompts
- "Which client domains or SSL certificates expire in the next 14 days? Group them by client."
- "Is anything already expired? Draft a short email to each affected client."
- "Start tracking acme.com and www.acme.com under the client Acme."
- "Re-check shop.example.com. Did the renewal go through?"
- "When does stripe.com's domain registration expire?" (live lookup, nothing saved)
- "Import these 40 domains under the client Globex, then show my plan usage."
- "Mark every Acme domain as client-paid with auto-renew on."
- "Which webhook deliveries failed this week?"
Dashboard-only
For security these stay in the dashboard and are not available through the API or MCP: billing, plan changes, checkout and invoices; inviting members and changing roles; deleting the agency; creating or revoking API keys; agency branding; and admin operations. Webhook secrets are shown only once, when the webhook is created.
Troubleshooting
- 401: the key is missing, mistyped or revoked. Check the
Bearerprefix. - Write tools missing: the key is read-only. Create a read + write key.
- 429: you hit the per-minute limit. Wait for
Retry-Afterseconds.
Source and registry
Server metadata and client examples are on GitHub at raghuchinnannan/renewroster-mcp, and the server is listed in the official MCP registry as com.renewroster/renewroster.
Prefer plain HTTP? See the REST API docs.