{"openapi":"3.1.0","info":{"title":"NodePing (BYOK) API","version":"0.1.0","description":"NodePing (BYOK) lets an AI assistant read your own NodePing data through the NodePing API with a key you supply (NodePing account API token). Read-only: 10 tools (list_accounts, list_checks, get_check, get_check_results, get_check_uptime, get_check_events, get_check_summary, list_current_events, list_maintenance, list_probe_locations). The BYOK key travels with each request, is used for that one...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-nodeping.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-nodeping/docs"},"termsOfService":"https://connectorbay.com/byok-nodeping/terms"},"servers":[{"url":"https://byok-nodeping.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-nodeping/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_accounts":{"post":{"operationId":"list_accounts","summary":"List the primary account and its subaccounts with name, status and number of active checks (an object keyed by account i","description":"List the primary account and its subaccounts with name, status and number of active checks (an object keyed by account id). Use for \"How many checks does each of my NodePing accounts run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_accountsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_checks":{"post":{"operationId":"list_checks","summary":"List all monitoring checks as an object keyed by check id, each with label, type, interval, enabled state and pass/fail ","description":"List all monitoring checks as an object keyed by check id, each with label, type, interval, enabled state and pass/fail state (1 passing, 0 failing). Use for \"Which of my NodePing checks are failing right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Subaccount id (customerid) to read instead of the primary account. Leave out for the primary account.","title":"Customer Id"}},"title":"list_checksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_check":{"post":{"operationId":"get_check","summary":"Get one check: label, type, interval, enabled state, pass/fail state (1 passing, 0 failing) and when it first went down ","description":"Get one check: label, type, interval, enabled state, pass/fail state (1 passing, 0 failing) and when it first went down (false if passing). The target parameters are not returned. Use for \"Is NodePing check 201205050153W2Q4C-0J2HSIRF up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"check_id":{"description":"Check id such as 201205050153W2Q4C-0J2HSIRF (list_checks returns them as the object keys).","maxLength":200,"title":"Check Id","type":"string"},"customer_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Subaccount id (customerid) to read instead of the primary account. Leave out for the primary account.","title":"Customer Id"}},"required":["check_id"],"title":"get_checkArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_check_results":{"post":{"operationId":"get_check_results","summary":"Get recent result records of a check: run time, pass/fail, result code and message. Defaults to the latest 300 or a span","description":"Get recent result records of a check: run time, pass/fail, result code and message. Defaults to the latest 300 or a span in hours; at most 43201 records. Use for \"How fast did NodePing check 201205050153W2Q4C-0J2HSIRF respond in the last 6 hours\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"check_id":{"description":"Check id such as 201205050153W2Q4C-0J2HSIRF (list_checks returns them as the object keys).","maxLength":200,"title":"Check Id","type":"string"},"clean":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to use the current flat result format.","title":"Clean"},"span":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Hours of results to return; the narrower of span and limit applies.","title":"Span"},"limit":{"anyOf":[{"maximum":43201,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of records, maximum 43201 (default 300 when span is not set).","title":"Limit"},"start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Start time: milliseconds, or an ISO 8601 / RFC 2822 date (GMT unless a zone is given). Cannot combine with span.","title":"Start"},"end":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"End time in the same formats; swapping start and end reverses the order.","title":"End"},"customer_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Subaccount id (customerid) to read instead of the primary account. Leave out for the primary account.","title":"Customer Id"}},"required":["check_id"],"title":"get_check_resultsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_check_uptime":{"post":{"operationId":"get_check_uptime","summary":"Get uptime of a check per month or per day plus a total: milliseconds enabled, milliseconds down and uptime percent. Use","description":"Get uptime of a check per month or per day plus a total: milliseconds enabled, milliseconds down and uptime percent. Use for \"What was the uptime of NodePing check 201205050153W2Q4C-0J2HSIRF last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"check_id":{"description":"Check id such as 201205050153W2Q4C-0J2HSIRF (list_checks returns them as the object keys).","maxLength":200,"title":"Check Id","type":"string"},"interval":{"anyOf":[{"enum":["days","months"],"type":"string"},{"type":"null"}],"default":null,"description":"Group by days or months (default months).","title":"Interval"},"start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"First day or month to include, for example 2026-09-01.","title":"Start"},"end":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"End date, excluded.","title":"End"},"offset":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Integer time zone offset for the calculation (hours -24 to 24, or minutes, seconds or ms up to 24 hours).","title":"Offset"},"customer_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Subaccount id (customerid) to read instead of the primary account. Leave out for the primary account.","title":"Customer Id"}},"required":["check_id"],"title":"get_check_uptimeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_check_events":{"post":{"operationId":"get_check_events","summary":"List down and disabled events of a check, newest first, with start, end, message and whether still open. Use for \"When d","description":"List down and disabled events of a check, newest first, with start, end, message and whether still open. Use for \"When did NodePing check 201205050153W2Q4C-0J2HSIRF last go down\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"check_id":{"description":"Check id such as 201205050153W2Q4C-0J2HSIRF (list_checks returns them as the object keys).","maxLength":200,"title":"Check Id","type":"string"},"start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Start date for the events.","title":"Start"},"end":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"End date for the events.","title":"End"},"limit":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of events, 1 returns the latest.","title":"Limit"},"customer_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Subaccount id (customerid) to read instead of the primary account. Leave out for the primary account.","title":"Customer Id"}},"required":["check_id"],"title":"get_check_eventsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_check_summary":{"post":{"operationId":"get_check_summary","summary":"Get hourly summary of a check's results: number of results and highest, lowest and average value per UTC hour. Use for \"","description":"Get hourly summary of a check's results: number of results and highest, lowest and average value per UTC hour. Use for \"Show the hourly response time summary of NodePing check 201205050153W2Q4C-0J2HSIRF\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"check_id":{"description":"Check id such as 201205050153W2Q4C-0J2HSIRF (list_checks returns them as the object keys).","maxLength":200,"title":"Check Id","type":"string"},"customer_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Subaccount id (customerid) to read instead of the primary account. Leave out for the primary account.","title":"Customer Id"}},"required":["check_id"],"title":"get_check_summaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_current_events":{"post":{"operationId":"list_current_events","summary":"List the checks that are currently down or disabled, with the event type, label and start time. Use for \"Which NodePing ","description":"List the checks that are currently down or disabled, with the event type, label and start time. Use for \"Which NodePing checks are down or disabled right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Subaccount id (customerid) to read instead of the primary account. Leave out for the primary account.","title":"Customer Id"}},"title":"list_current_eventsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_maintenance":{"post":{"operationId":"list_maintenance","summary":"List maintenance schedules (automatic disabling of checks) with cron timing, duration, next run and which checks they co","description":"List maintenance schedules (automatic disabling of checks) with cron timing, duration, next run and which checks they cover. Use for \"Which NodePing maintenance windows are scheduled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Subaccount id (customerid) to read instead of the primary account. Leave out for the primary account.","title":"Customer Id"}},"title":"list_maintenanceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_probe_locations":{"post":{"operationId":"list_probe_locations","summary":"List NodePing probe servers worldwide with their location and IP addresses. Use for \"Which IP addresses do NodePing prob","description":"List NodePing probe servers worldwide with their location and IP addresses. Use for \"Which IP addresses do NodePing probes check from\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_probe_locationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}