Connect
The server lives at https://mcp.upcheck.so/mcp and authenticates with an organization API key from Settings → API keys, sent as a bearer token. A Member key lets an assistant read but not change anything, which is the right default for a chat tool; use an Admin key when you want it to act.
Claude Code
claude mcp add --transport http upcheck https://mcp.upcheck.so/mcp \
--header "Authorization: Bearer uck_your_key"Cursor — in .cursor/mcp.json (project) or the global settings:
{
"mcpServers": {
"upcheck": {
"url": "https://mcp.upcheck.so/mcp",
"headers": { "Authorization": "Bearer uck_your_key" }
}
}
}VS Code — in .vscode/mcp.json:
{
"servers": {
"upcheck": {
"type": "http",
"url": "https://mcp.upcheck.so/mcp",
"headers": { "Authorization": "Bearer uck_your_key" }
}
}
}Claude Desktop and other clients that only speak stdio can bridge through mcp-remote:
{
"mcpServers": {
"upcheck": {
"command": "npx",
"args": [
"mcp-remote", "https://mcp.upcheck.so/mcp",
"--header", "Authorization:Bearer uck_your_key"
]
}
}
}Any client that speaks Streamable HTTP can POST JSON-RPC to the URL with the same header. Responses are plain JSON; no SSE stream is held open.
Tools
Every tool operates inside the key's organization. Read tools are marked read-only so a client can run them without asking; the destructive ones (removing a website, deleting a rule) ask the assistant to confirm with you first.
| Tool | What it does |
|---|---|
list_domains | Every monitored website with its latest state. |
get_domain | One website with full certificate and registration detail. |
add_domain | Start monitoring a hostname; probes it inline. |
update_domain | Rename the hostname or its label. |
remove_domain | Stop monitoring and delete the website. |
refresh_domain | Probe every check on one website now. |
refresh_all_domains | Queue a fresh probe of every website. |
get_domain_monitors | The four scheduled checks and their latest outcome. |
get_domain_history | Recorded check outcomes, newest first. |
| Tool | What it does |
|---|---|
list_alert_rules | Every rule: subject, triggers, cadence, destinations. |
create_alert_rule | Add a rule; evaluated immediately when enabled. |
update_alert_rule | Change only the fields given; pause with enabled: false. |
delete_alert_rule | Remove a rule. |
list_alert_events | Alerts that were actually delivered. |
| Tool | What it does |
|---|---|
list_email_lists | Named recipient sets for the email channel. |
create_email_list | Add a list. |
update_email_list | Rename a list or replace its addresses. |
delete_email_list | Remove a list. |
list_integrations | Slack, Discord, Teams and webhook destinations. |
create_integration | Register an incoming-webhook URL. |
update_integration | Change only the fields given; mute with enabled: false. |
delete_integration | Remove a destination. |
test_integration | Send a labelled sample alert to prove the URL. |
| Tool | What it does |
|---|---|
list_team_members | Members and pending invitations. |
invite_team_member | Create an invitation and return its accept link. |
update_team_member_role | Change a member's role. |
remove_team_member | Remove a member or withdraw an invitation. |
get_organization | Which organization the key belongs to, and its role. |
rename_organization | Rename the workspace. |
get_stats | The dashboard's health counts. |
get_activity | The audit trail, newest first. |
get_billing | Subscription state and the monthly estimate. |
Things to ask
“Which of our websites are failing right now, and since when?” runs get_stats and list_domains, then get_domain_monitors on the ones that are down.
“Add api.example.com and alert #ops on Slack if it goes down” runs add_domain, list_integrations and create_alert_rule with an http_down trigger scoped to the new website.
“Why did we get a certificate alert yesterday?” runs list_alert_events and get_domain_history.
Prefer HTTP?
The tools are thin wrappers over the REST API, so anything an assistant can do you can also script. See the guide and the API reference.