Skip to main content
POST
/
wp-json
/
getmcp
/
v1
/
settings
/
health-check
curl --request POST \
     --url https://yoursite.com/wp-json/getmcp/v1/settings/health-check \
     --header 'Authorization: Bearer gmcp_your_api_key' \
     --header 'content-type: application/json'
{
  "results": [
    {
      "server": "My Weather Tools",
      "status": "healthy",
      "code": 200
    },
    {
      "server": "Stripe Payments",
      "status": "healthy",
      "code": 200
    },
    {
      "server": "Internal Reporting",
      "status": "error",
      "code": 502
    },
    {
      "server": "Legacy Webhook Bridge",
      "status": "error",
      "message": "Operation timed out after 5001 milliseconds with 0 bytes received"
    }
  ]
}
Sends a JSON-RPC ping to every server with status = active and reports back which ones answered. Probes run in parallel via curl_multi_init (with a sequential wp_remote_post fallback when curl multi isn’t available), so latency is dominated by the slowest server, not the sum.
This is distinct from the public /health endpoint/health reports on the plugin itself and is unauthenticated. This endpoint is admin-only and reaches out to each MCP server to confirm the JSON-RPC transport is responsive.
Each per-server probe has a 5-second timeout and a 3-second connect timeout. Servers that exceed these limits are reported with status: "error" and the curl error string.

Body

No body. Send an empty POST.
curl --request POST \
     --url https://yoursite.com/wp-json/getmcp/v1/settings/health-check \
     --header 'Authorization: Bearer gmcp_your_api_key' \
     --header 'content-type: application/json'
{
  "results": [
    {
      "server": "My Weather Tools",
      "status": "healthy",
      "code": 200
    },
    {
      "server": "Stripe Payments",
      "status": "healthy",
      "code": 200
    },
    {
      "server": "Internal Reporting",
      "status": "error",
      "code": 502
    },
    {
      "server": "Legacy Webhook Bridge",
      "status": "error",
      "message": "Operation timed out after 5001 milliseconds with 0 bytes received"
    }
  ]
}

Response Fields

results
array
One entry per active server. Empty when no servers are active.
results[].server
string
Server name (the human-readable label, not the slug or UUID).
results[].status
string
healthy when the server returned an HTTP status < 400. error for any non-2xx/3xx status or transport failure.
results[].code
integer
HTTP status returned by the server. Present on every probe that completed at the HTTP layer (even errors like 502).
results[].message
string
Transport-level error message — only present when the probe failed before getting an HTTP response (DNS, connection refused, timeout, TLS).