Developer integrations

TraceWise MCP

The TraceWise MCP server lets Cursor, Claude Code, and other MCP-compatible clients manage uptime monitors, retrieve reliability data, and work with public status pages — using your existing TraceWise workspace. It is not a separate product account: authentication is a workspace API key.

Prefer REST? See the API documentation. Embed status in React? See the Status component. npm package: @razorsoft/tracewise-mcp.

What it supports

  • Create, update, pause, and delete monitors in the key's workspace
  • Read status, history, and uptime summaries from real probe data
  • Run a manual check (subject to the same limits as the dashboard)
  • List incidents
  • Create, read, update, and delete public status pages; fetch badge embed snippets

API keys and scopes

Create a key in Dashboard → Settings → API keys. The full tw_ secret is shown once; TraceWise stores only its SHA-256 hash. Existing keys keep only the scopes they were created with — new scopes are never granted silently. Create a replacement key when you need additional permissions.

  • monitors:read / monitors:write
  • checks:run
  • incidents:read
  • status:read / status:write

All 16 tools

ToolScopeSummary
list_monitorsmonitors:readList monitors; optional URL filter before create.
create_monitormonitors:writeCreate a monitor in the key's workspace.
get_monitormonitors:readOne monitor plus the latest diagnostic and dashboard URL.
update_monitormonitors:writeUpdate name, URL, interval, or pause/resume.
delete_monitormonitors:writeDelete a monitor.
get_monitor_statusmonitors:readStatus, failure streak, open incident, and latest diagnostic.
get_monitor_historymonitors:readRecent checks with category, code, HTTP status, and probe stages.
get_uptime_summarymonitors:readUptime %, average latency, and check counts.
run_monitor_checkchecks:runRun a check now and return status plus the latest diagnostic.
list_incidentsincidents:readIncidents with open time, HTTP status, failure count, and a summary rebuilt from those fields.
list_status_pagesstatus:readList status pages for the workspace.
get_status_pagestatus:readOne status page, its public URL, and selected monitors.
create_status_pagestatus:writeCreate a status page with no monitors selected. Extra pages require an active paid plan.
update_status_pagestatus:writeUpdate a page, its slug, or the monitors and groups it shows.
delete_status_pagestatus:writeDelete a status page other than the original workspace page.
get_status_badgestatus:readBadge SVG URL plus Markdown/HTML embed snippets.

Diagnosing a failing monitor

  • get_monitor_status or get_monitor — why the latest check failed (category, code, httpStatus) and whether an incident is open.
  • get_monitor_history — whether that category is isolated or repeating. The same 50-check default and 200-check maximum still apply.
  • list_incidents — when the failure began (openedAt) and whether it recovered (status, resolvedAt). summary is rebuilt from status, failure count, and HTTP status. Stored exception text is not returned.
  • run_monitor_check — run one probe and read the new diagnostic to confirm recovery.

Categories are dns, connection, tls, http, timeout, unknown, or null for a healthy or slow check. reason is regenerated from known templates (never stored free text) and is guidance, not a guaranteed root cause. Unclassified failures use a fixed explanation. Responses do not include exception text, request headers, response bodies, or certificate details.

Cursor (remote MCP)

Add this to ~/.cursor/mcp.json or the project .cursor/mcp.json. The endpoint speaks Streamable HTTP.

{
  "mcpServers": {
    "tracewise": {
      "url": "https://www.tracewise.dev/api/mcp",
      "headers": {
        "Authorization": "Bearer tw_your_key"
      }
    }
  }
}

Claude Code and stdio clients

Clients that speak MCP over stdio can run the published bridge. It only forwards JSON-RPC to the hosted endpoint and does not store monitors or keys.

{
  "mcpServers": {
    "tracewise": {
      "command": "npx",
      "args": ["-y", "@razorsoft/tracewise-mcp"],
      "env": {
        "TRACEWISE_API_KEY": "tw_your_key"
      }
    }
  }
}

Optional: set TRACEWISE_MCP_URL to override the endpoint (defaults to https://www.tracewise.dev/api/mcp). Package docs: npmjs.com/package/@razorsoft/tracewise-mcp.

Rate limits

REST and MCP share the same workspace quotas. Only MCP tools/call executions count — initialize, tools/list, and other protocol methods do not. Scheduled monitoring probes are unaffected.

  • 10 requests / minute / API key
  • 100 requests / hour / workspace
  • 500 requests / day / workspace
  • 10 monitor creations / hour / workspace
  • 20 monitor updates / hour / workspace
  • 5 manual checks / hour / workspace
  • 20 history / uptime queries / hour / workspace

Badge retrieval example

With status:read, call get_status_badge:

{
  "name": "get_status_badge",
  "arguments": {
    "style": "uptime",
    "monitorId": "optional_monitor_id"
  }
}

The tool returns the public SVG URL plus Markdown and HTML snippets, for example:

![TraceWise status](https://www.tracewise.dev/status-badge/your-slug?style=uptime)
<img src="https://www.tracewise.dev/status-badge/your-slug?style=uptime" alt="TraceWise status" />

Troubleshooting

  • 401 / invalid key — Confirm the full tw_ secret (not the display prefix) and that the key is not revoked or expired.
  • insufficient_scope — The tool needs a scope the key does not have. Create a new key with the required scopes; existing keys are not upgraded automatically.
  • 429 rate limit — Back off using Retry-After. Keep automation conservative; TraceWise is an uptime service.
  • Duplicate monitor URL — Call list_monitors with url before create_monitor.
  • stdio bridge issues — Ensure Node.js 20+, that TRACEWISE_API_KEY is set in the MCP env block (not as a CLI arg), and that outbound HTTPS to www.tracewise.dev is allowed.