https://api.uptimerobot.com/v3 with the key as a Bearer token.
- This is the v3 API. The older v2 form-encoded API at
/v2still exists but is not what this plugin wraps; v3 is JSON in and JSON out, with DELETE, PATCH and per-resource paths. The full contract is published as an OpenAPI document athttps://cdn.uptimerobot.com/api/openapi.yaml. - A failure is always
{ code, message }. Thecodeis stable and grouped by area —003-*is authentication,009-*is resources and validation,026-*is status pages. A wrong or revoked key answers401with003-005. A validation failure instead sendsmessageas an array of per-field strings, and the plugin keeps them ondetails. - Creating a monitor depends on its type. The input schema takes the union of all ten types and checks it against the one you chose:
HEARTBEATneeds nourlat all and rejects one,THIRD_PARTY_SERVICEneeds onlyconfig,PORTandUDPneed aport,KEYWORDneedskeywordType,keywordCaseTypeandkeywordValue,HTTP,KEYWORD,PING,PORT,APIandUDPneed atimeout(UptimeRobot answers 400 without one),DNS,API,UDPandVISUAL_COMPARISONneedconfig, and everything else needs aurl. A mismatch is reported before any request is made. - Pausing is not deleting.
monitors.pausestops the checks and the alerts and is reversible withmonitors.start; UptimeRobot also pauses a monitor by itself after repeated failures, andmonitors.startresumes that too.monitors.deleteremoves the monitor and its history for good. monitors.resetdiscards history, not the monitor. It clears the accumulated statistics and incident log while the monitor keeps checking, so it is marked destructive even though the monitor survives.- The interval floor is 30 seconds in the contract. The free plan enforces a much higher floor (five minutes), and asking for less is refused by the API rather than silently raised.
- Paging is a link, and a page can be empty. Lists answer
nextLink, which stays set while more pages remain. With a filter onincidents.list, a page can hold fewer items thanlimit, or none at all, whilenextLinkis still present — so page on the link, not on the item count.tags.listis the exception: it pages bynextCursorIdinstead. - A status page can show everything.
monitorIds: [0]on its own is the sentinel for every monitor in the account, and an empty array shows none.autoAddMonitorscovers monitors created later, but an explicitmonitorIdswins over it — including an empty one. - Rate limits are tight on the free plan. It allows 10 requests a minute; paid plans allow twice the monitor limit, capped at 5,000. A
429was refused before it ran, so the plugin retries it up to three times with backoff, honouringRetry-After.
- 31 typed API operations
Setup
1
Install
2
Add the plugin
corsair.ts
multiTenancy: true, scope calls with corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.3
Choose authentication
- API Key (Recommended)
No setup required yet. When you make your first request as a tenant, Corsair prompts for the API key.More: API Key
4
Connect a tenant
Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see Connect / OAuth.
Example API calls
List monitors that are down or look downWhat’s next
API reference
Every
uptimerobot.api.* operation with input and output types.Connect / OAuth
createLink, Hub delivery, and tenant connect flows.
Use with agents
Expose this plugin’s operations as MCP tools.