CoreDash Uptime API 与 MCP 工具:监控项与检查记录

使用 CoreDash API key 列出、添加、修改和暂停 Uptime 监控项,并通过 REST 或 MCP 读取检查记录。

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2026-10-20

Trusted by market leaders · Client results

dpg mediacomparenestleadevintaloopearplugsperionvpnmonarchharvardwhowhatwearnina caremy work featured on web.devsaturnebayerasmusmcworkivakpnfotocasamarktplaatssnvaleteiahappyhorizon

通过 CoreDash API 管理 Uptime 监控项

通过 REST 读取并修改 CoreDash 项目的 Uptime 监控项,直接使用现有的 RUM API key 即可。AI agent 则可通过 MCP 读取。

快速开始

  • Base URL 为 https://app.coredash.app/api/uptime/monitors,输入与输出均为 JSON。
  • 请求头 Authorization: Bearer cdk_your_key,支持 project key 或 master key。
  • 首次调用:GET /api/uptime/monitors 列出所有监控项及其状态,以及最近 7 天的 uptime。
curl https://app.coredash.app/api/uptime/monitors \
  -H "Authorization: Bearer cdk_your_key"

Uptime 监控项的 API key

Uptime 端点支持 CoreDash API 和 Agency API 的 key。

Key前缀可见范围新建监控项归属
Project keycdk_当前项目自身的监控项始终归属当前项目
Master keycdk_master_你拥有或受邀加入的全部项目的监控项你在 project_id 中指定的项目(必须为你拥有的项目)

在项目侧边栏的 Connect Your AI 页面创建 project key:输入名称,点击 Generate API key。在项目设置的 API Keys (MCP) 下也能找到这些 key。只有项目所有者才能创建。agency 账户可在侧边栏的 Agency API 页面获取 master key。项目一旦过期,其 project key 的每次调用都会返回 401。

项目的 guest 只能读取监控项。添加、修改、移动和删除监控项,需要你拥有该项目。

Claude 等 AI 连接的 OAuth token(mcp_at_)仅有只读权限。使用它调用 POST、PATCH 和 DELETE 会返回 403。

Uptime 端点

方法与路径说明返回值
GET /api/uptime/monitors列出该 key 可见的所有监控项,按名称排序。200,{ "monitors": [...] },各项均包含 summary
POST /api/uptime/monitors添加监控项。首次检查会在下一轮执行(:00 或 :30)。201,{ "monitor": {...} }
GET /api/uptime/monitors/:id获取单个监控项及其检查记录,按时间倒序排列。?limit= 用于设置检查记录数量:默认 300,最多 2100。200,{ "monitor", "summary", "checks", "rum" }
PATCH /api/uptime/monitors/:id仅修改传入的字段,其余字段保持不变。200,{ "monitor": {...} }
DELETE /api/uptime/monitors/:id删除监控项及其所有检查记录。200,{ "deleted": true }

源站 IP 与请求头的值为敏感信息。POST、PATCH 以及 GET /api/uptime/monitors/:id 会返回这些值。列表接口与 MCP 工具则会省略 origin_ip,并将所有请求头的值显示为 ••••。

Monitor 对象

字段含义
id监控项 ID,对应路径中的 :id。
name, url在控制台显示的名称以及待检查的 URL。
project_id监控项所属的 CoreDash 项目。
paused暂停检查时为 true。
expect_status判定为 up 的 HTTP 状态码。默认为 200。
origin_check设置了源站 IP 时为 true,每轮还会直接检查服务器本身。
origin_ip服务器的 IP。仅在包含敏感信息的响应中返回。
headers自定义请求头,[{ "name", "value" }]。
statepending、up、failing、down、warn、blocked 或 paused。参见下方的状态表。
last_check_at, last_up_at最近一轮检查的时间,以及最近一次返回 up 的检查时间。
down_since处于 down 状态时为首次失败那轮的时间;其余情况为 null。
last_down最近一次已结束的故障时间段,{ "from", "to" },或 null。
check_requested_at添加监控项时设置。下一轮检查执行后清除。
last每种检查类型的最近一次记录:edge 和 origin,各为一个 check 对象。源站检查返回 Cloudflare 响应头时,origin_is_cdn 为 true,说明输入的 IP 不是源站服务器。
cert_expires访客获取的 HTTPS 证书到期时间。
created_at监控项的添加时间。

summary 和 rum 字段

列表与单个监控项均包含 summary:rounds_7d 和 down_rounds_7d 统计最近 7 天的检查轮次,uptime_7d 是其中没有 down 检查的轮次百分比,recent 包含最近 48 轮记录(时间由远及近),每条记录对应那轮的最差结果。最近 7 天内无检查记录的监控项,其 summary: null。

单个监控项还包含 rum:取自项目的 RUM 数据,即最近 7 天真实访客的 p75 TTFB,用于与检测节点的 ttfb_ms 对比。项目尚无 RUM 数据时,该值为 null。

GET /api/uptime/monitors/:id

curl "https://app.coredash.app/api/uptime/monitors/6ad68c7a844fad80b752fd16?limit=2" \
  -H "Authorization: Bearer cdk_your_key"
{
  "monitor": {
    "id": "6ad68c7a844fad80b752fd16",
    "name": "Checkout",
    "url": "https://www.example.com/checkout/",
    "project_id": "655f1f77bcf86cd799439011",
    "paused": false,
    "expect_status": 200,
    "origin_check": true,
    "origin_ip": "203.0.113.10",
    "headers": [{ "name": "X-Staging-Auth", "value": "k7Qp2vX9mR4tL8wZ" }],
    "state": "up",
    "last_check_at": "2026-10-20T08:00:09.000Z",
    "last_up_at": "2026-10-20T08:00:09.000Z",
    "down_since": null,
    "last_down": { "from": "2026-10-18T19:00:11.000Z", "to": "2026-10-18T20:00:10.000Z" },
    "check_requested_at": null,
    "last": {
      "edge": { "at": "2026-10-20T08:00:09.000Z", "server": "scan1", "mode": "edge", "outcome": "up", "status": 200, "ttfb_ms": 212, "total_ms": 388, "connect_ms": 14, "redirects": 0, "final_url": "https://www.example.com/checkout/", "error": null, "error_text": null, "cloudflare": true, "cache_status": "DYNAMIC" },
      "origin": { "at": "2026-10-20T08:00:09.000Z", "server": "scan1", "mode": "origin", "outcome": "up", "status": 200, "ttfb_ms": 640, "total_ms": 702, "connect_ms": 9, "redirects": 0, "final_url": "https://www.example.com/checkout/", "error": null, "error_text": null, "cloudflare": false, "cache_status": null },
      "origin_is_cdn": false
    },
    "cert_expires": "2027-01-02T23:59:59.000Z",
    "created_at": "2026-10-06T09:12:41.000Z"
  },
  "summary": {
    "rounds_7d": 336,
    "down_rounds_7d": 2,
    "uptime_7d": 99.4,
    "recent": [
      { "at": "2026-10-20T07:30:10.000Z", "outcome": "up" },
      { "at": "2026-10-20T08:00:09.000Z", "outcome": "up" }
    ]
  },
  "checks": [
    { "at": "2026-10-20T08:00:09.000Z", "server": "scan1", "mode": "edge", "outcome": "up", "status": 200, "ttfb_ms": 212, "total_ms": 388, "connect_ms": 14, "redirects": 0, "final_url": "https://www.example.com/checkout/", "error": null, "error_text": null, "cloudflare": true, "cache_status": "DYNAMIC" },
    { "at": "2026-10-20T08:00:09.000Z", "server": "scan1", "mode": "origin", "outcome": "up", "status": 200, "ttfb_ms": 640, "total_ms": 702, "connect_ms": 9, "redirects": 0, "final_url": "https://www.example.com/checkout/", "error": null, "error_text": null, "cloudflare": false, "cache_status": null }
  ],
  "rum": { "ttfb_p75": 1920, "rating": "poor", "period": "last 7 days" }
}

真实响应中,recent 包含 48 轮记录;本例仅展示最近两轮。

Check 对象与检查结果

每 30 分钟检查一轮所有监控项,由两台服务器交替执行::00 由 scan1 执行,:30 由 scan2 执行。一轮检查始终模拟访客访问路径,经由 DNS 和 CDN(edge)。设置了源站 IP 时,还会直接检查服务器本身(origin)。API 不提供在两轮之间触发即时检查的接口。检查记录保留 30 天。

每次检查都会发送 user agent CoreDash/1.0 (uptime; +https://www.coredash.app/bot)。当监控项的 URL 属于项目自身的站点(即其 host,带或不带 www,或子域名)时,检查还会附带 X-CoreDash-Bot 请求头,其值为项目设置中 CoreDash bot token 选项卡下的密钥。其他站点的监控项不会附带该 token。重定向时,该 token 遵循自定义 headers 的规则:仅在重定向保持在监控项 host 上时才会继续携带。若自行配置了名为 X-CoreDash-Bot 的请求头,该请求头会被丢弃。详情参见 CoreDash bot 页面。

字段含义
at, server服务器报告该轮检查的时间,以及执行检查的服务器:scan1 或 scan2。同轮检查共享相同的 at。
modeedge 或 origin。
outcomeup、down、blocked 或 warn。
status最终响应的 HTTP 状态码(跟随重定向后)。无响应时为 null。
ttfb_ms, total_ms, connect_msTTFB 和总耗时(均包含重定向),以及首次请求的建连耗时。
redirects, final_url跟随的重定向次数以及最终响应的 URL。
error, error_text检查失败的原因,分别为下表中的枚举值和文本说明。
cloudflare, cache_status响应是否经过 Cloudflare,以及 CDN 的缓存响应头(cf-cache-status 或 x-cache)。

检查结果的判定方式

检查结果判定条件
up状态码等于 expect_status,除非状态码为 403、429 或 500 及以上:这些会优先判定为 blocked 或 down。
down状态码为 500 及以上,或出现 error:dns、connect、connect_timeout(10 秒内未建连)、timeout(30 秒内未收到完整响应)、tls、redirects(重定向超过 5 次)或 network。
blocked403、429 或 Cloudflare challenge:防火墙拦截了检查器。绝不会计入宕机时间。参见 在防火墙中放行 CoreDash。
warn其他任何状态码,例如发版后结算页报 404。此外还包括 invalid_ip 和 invalid_url:URL 或重定向指向私有或保留地址,或者重定向指向了非 URL 内容。检查器不会请求此类地址。

一轮检查中各项的最差结果决定监控项的状态,由重到轻依次为:down、blocked、warn、up。

监控项状态

state控制台显示含义
pending等待首次检查已添加;第一轮检查尚未运行。
up正常上一轮检查获得了预期状态码。
failing即将宕机一轮检查失败。若再失败一轮则判定为 down。
down宕机连续两轮检查失败,两台服务器均检测到失败。
warn非预期状态上一轮检查返回 warn。
blocked已拦截防火墙拦截了检查器。
paused已暂停在将 paused 设为 false 之前不会检查。

订阅已到期的项目中的监控项会保留其配置和最后状态。在项目重新付费之前,不会再执行检查。

添加、修改和删除监控项

POST /api/uptime/monitors

curl -X POST https://app.coredash.app/api/uptime/monitors \
  -H "Authorization: Bearer cdk_master_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://www.example.com/checkout/",
    "name": "Checkout",
    "project_id": "655f1f77bcf86cd799439011",
    "origin_ip": "203.0.113.10",
    "headers": [{ "name": "X-Staging-Auth", "value": "k7Qp2vX9mR4tL8wZ" }],
    "expect_status": 200
  }'
字段规则
urlPOST 时必填。完整的 http 或 https URL,不能包含用户名或密码。
name最多 80 个字符,超出部分会被截断。POST 时若留空:默认为 URL 的 host。PATCH 时若留空:保留原名称;若该 PATCH 同时传入了新的 url,则变更为新 URL 的 host。
project_id使用 master key 时必填:必须为你拥有的项目,且处于有效付费订阅或试用期内。使用 project key 时会忽略此字段,直接使用其所属项目。
origin_ip服务器的公网 IPv4 或 IPv6 地址。添加源站检查:绕过 DNS 和 CDN,直接请求该 IP。传入 "" 或 null 可移除此配置。
headers最多 5 个自定义请求头,[{ "name", "value" }]。名称:字母、数字和连字符,最多 64 个字符。值:最多 256 个字符,超出部分会被截断。重定向时,仅当目标仍为监控项的 host(无论是否带 www)时才会携带这些请求头。重定向至其他任何 host(包括子域名)均不会携带。
expect_status判定为 up 的状态码,取值范围 100 到 599。默认为 200。403、429 或任何 500 及以上的状态码绝不会判定为 up。
paused设为 true 停止检查,设为 false 恢复检查。

响应为 201,包含新创建的监控项,以及源站 IP 和请求头的值:

{
  "monitor": {
    "id": "6ad68c7a844fad80b752fd16",
    "name": "Checkout",
    "url": "https://www.example.com/checkout/",
    "project_id": "655f1f77bcf86cd799439011",
    "paused": false,
    "expect_status": 200,
    "origin_check": true,
    "origin_ip": "203.0.113.10",
    "headers": [{ "name": "X-Staging-Auth", "value": "k7Qp2vX9mR4tL8wZ" }],
    "state": "pending",
    "last_check_at": null,
    "last_up_at": null,
    "down_since": null,
    "last_down": null,
    "check_requested_at": "2026-10-20T09:12:41.000Z",
    "last": {},
    "cert_expires": null,
    "created_at": "2026-10-20T09:12:41.000Z"
  }
}

PATCH /api/uptime/monitors/:id

仅需发送要修改的字段。headers 会替换整个列表,因此需要保留的请求头必须一并传入。以下命令用于暂停监控项:

curl -X PATCH https://app.coredash.app/api/uptime/monitors/6ad68c7a844fad80b752fd16 \
  -H "Authorization: Bearer cdk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "paused": true }'

使用 master key 时,可通过 project_id 移动监控项,规则与 POST 相同。

DELETE /api/uptime/monitors/:id

curl -X DELETE https://app.coredash.app/api/uptime/monitors/6ad68c7a844fad80b752fd16 \
  -H "Authorization: Bearer cdk_your_key"

删除操作无法撤销。若要停止检查并保留历史记录,在 PATCH 中发送 { "paused": true }。

Uptime API 错误与限制

错误响应格式为 { "error": "..." },状态码为以下之一:

状态码触发条件
400请求体违反规则。具体的 error 信息见下表。
401Unauthorized:未提供 key,或 key 无效、已吊销、已过期,或关联的项目已过期。
403This token can only read. Use a CoreDash API key to change monitors.:使用 OAuth token(mcp_at_)调用 POST、PATCH 或 DELETE。对作为 guest 的项目中的监控项执行 PATCH 或 DELETE 时,会返回 403 及 Only the project's owners can change its monitors。
404Monitor not found:ID 不存在,或该 key 无权查看该监控项。
405Method not allowed。
400 error解决方法
Choose a project for this monitor使用 master key 时传入 project_id。
project not foundproject_id 不是你拥有的项目。guest 无法添加监控项或将监控项移动至该项目。
This project's subscription has ended添加或移动监控项需要项目处于有效付费订阅或试用期内。
A project can have up to 25 monitors先删除一个监控项,或使用其他项目。
A monitor must belong to a project在 PATCH 中省略 project_id,或传入你拥有的项目。
url can't contain a username or password若需 Basic 认证,在 headers 中传入 Authorization 请求头。
origin_ip is not an IP address, origin_ip must be a public IP address使用服务器本身的公网 IP 地址。
url must be a full http or https URL, e.g. https://www.example.com/, url must start with http:// or https://, headers must be a list of {name, value}, at most 5 headers, "…" isn't a valid header name (letters, numbers and dashes only), expect_status must be an HTTP status code根据提示修复对应字段。具体规则见 POST 下方的字段表。

限制:每个项目最多 25 个监控项,每个监控项最多 5 个自定义请求头,单个监控项的 GET 请求最多返回 2100 条检查记录,检查历史保留 30 天。

Uptime MCP 工具

位于 https://app.coredash.app/api/mcp 的 CoreDash MCP server 在 RUM 工具之外还提供了两个 Uptime 工具,以及用于查询当前 key 权限范围内项目的 list_projects。这三个工具均为只读。添加、修改或删除监控项,需在控制台操作,或使用 CoreDash API key 调用上述 REST 端点。这些工具无需 project_id:project key 直接读取所属项目,master key 或 Claude 等 OAuth 连接则可读取你拥有或受邀加入的全部项目。

工具提问示例返回值
list_projects“你能看到哪些站点?”{ "projects": [...] },包含 project_id、name、url 和 role(owner 或 guest)。
list_uptime_monitors“所有服务都正常吗?”{ "monitors": [...] },其中源站 IP 和请求头的值已脱敏。
get_uptime_monitor“结算页这周宕机过吗?从什么时候开始的?”{ "monitor", "summary", "checks" }。接收 monitor_id 和 limit(默认 100,最大 1000);summary 提供这些检查记录对应的 rounds、down_rounds 和 uptime_pct。
curl -X POST https://app.coredash.app/api/mcp \
  -H "Authorization: Bearer cdk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "get_uptime_monitor",
      "arguments": { "monitor_id": "6ad68c7a844fad80b752fd16", "limit": 48 }
    }
  }'

响应为 CoreDash API 的 JSON-RPC 包装格式,结果以 JSON 字符串形式保存在 result.content[0].text 中。若监控项不存在,该位置会返回 { "error": "Monitor not found" },且 result.isError 为 true。

更多关于 Uptime 与 CoreDash API 的内容

CoreDash Uptime API 与 MCP 工具:监控项与检查记录 Core Web Vitals CoreDash Uptime API 与 MCP 工具:监控项与检查记录