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:writechecks:runincidents:readstatus:read/status:write
All 16 tools
| Tool | Scope | Summary |
|---|---|---|
| list_monitors | monitors:read | List monitors; optional URL filter before create. |
| create_monitor | monitors:write | Create a monitor in the key's workspace. |
| get_monitor | monitors:read | One monitor plus the latest diagnostic and dashboard URL. |
| update_monitor | monitors:write | Update name, URL, interval, or pause/resume. |
| delete_monitor | monitors:write | Delete a monitor. |
| get_monitor_status | monitors:read | Status, failure streak, open incident, and latest diagnostic. |
| get_monitor_history | monitors:read | Recent checks with category, code, HTTP status, and probe stages. |
| get_uptime_summary | monitors:read | Uptime %, average latency, and check counts. |
| run_monitor_check | checks:run | Run a check now and return status plus the latest diagnostic. |
| list_incidents | incidents:read | Incidents with open time, HTTP status, failure count, and a summary rebuilt from those fields. |
| list_status_pages | status:read | List status pages for the workspace. |
| get_status_page | status:read | One status page, its public URL, and selected monitors. |
| create_status_page | status:write | Create a status page with no monitors selected. Extra pages require an active paid plan. |
| update_status_page | status:write | Update a page, its slug, or the monitors and groups it shows. |
| delete_status_page | status:write | Delete a status page other than the original workspace page. |
| get_status_badge | status:read | Badge SVG URL plus Markdown/HTML embed snippets. |
Diagnosing a failing monitor
get_monitor_statusorget_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).summaryis 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:
 <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_monitorswithurlbeforecreate_monitor. - stdio bridge issues — Ensure Node.js 20+, that
TRACEWISE_API_KEYis set in the MCP env block (not as a CLI arg), and that outbound HTTPS towww.tracewise.devis allowed.
