# ScaledPapers (remote · api.scaledpapers.com)

Uptime checks, status pages, incidents, and maintenance for websites, APIs, DNS, and TCP.

- Trust score: 75/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `api.scaledpapers.com`: 75/100 (this document), [markdown](https://verifymcp.io/servers/com-scaledpapers-scaledpapers/api.md), [page](https://verifymcp.io/servers/com-scaledpapers-scaledpapers/api)

## Channel facts

- Endpoint: `https://api.scaledpapers.com/mcp`
- Transports: `streamable-http`
- Auth: `required (not validated)`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 89/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 60/100
  - AI-judged instruction clarity (fair).
  - Tool/resource definitions use about 2654 tokens (~78/item across 34 items; 34 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 20/100
  - Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (18% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 35 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the ScaledPapers MCP server?

ScaledPapers is a hosted endpoint at https://api.scaledpapers.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-scaledpapers-scaledpapers 'https://api.scaledpapers.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-scaledpapers-scaledpapers": {
      "url": "https://api.scaledpapers.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-scaledpapers-scaledpapers": {
      "type": "http",
      "url": "https://api.scaledpapers.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-scaledpapers-scaledpapers]
url = "https://api.scaledpapers.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-scaledpapers-scaledpapers": {
      "type": "remote",
      "url": "https://api.scaledpapers.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-scaledpapers-scaledpapers --url 'https://api.scaledpapers.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-scaledpapers-scaledpapers:
    url: "https://api.scaledpapers.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-scaledpapers-scaledpapers": {
      "Transport": "http",
      "Url": "https://api.scaledpapers.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-scaledpapers-scaledpapers -t streamable-http -u 'https://api.scaledpapers.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-scaledpapers-scaledpapers": {
      "type": "http",
      "url": "https://api.scaledpapers.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-03 (score 74, +1)

- [security] Tool “run_check” rewrote its description, which is the text the model reads
- [security] Tool “update_incident” rewrote its description, which is the text the model reads

### 2026-11-01 (score 73, 0)

- [security] Tool “update_incident” rewrote its description, which is the text the model reads

### 2026-10-31 (score 73, +1)

- [functional improvement] Stability: unverified → 0.03
- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-10-30 (score 72)

First indexed and scored.

## MCP tools (34)

### `usage` (~61 tokens)

Plan caps for this workspace: plan, period, probe_count, monthly_probe_quota, endpoints_used, max_endpoints, max_regions, min_interval_seconds, sample_retention_days, max_status_pages. Call this before creating anything. Stop when a cap is reached.

### `list_regions` (~19 tokens)

Enabled probe regions: id, name, and region.

Output parameters:

- `result` (array)

### `list_checks` (~34 tokens)

Checks in this workspace. Use this before create_check so you do not add a second check for a URL that is already watched.

Output parameters:

- `result` (array)

### `get_check` (~44 tokens)

One check, including assertion, DNS, and TCP fields. Secrets such as request headers, request body, and HTTP auth are not returned.

Input parameters:

- `endpoint_id` (string, required)

### `get_check_results` (~80 tokens)

Check results. view is status, history, or outages. history uses hours (default 24) and returns status, status_code, latency_ms, dns_ms, connect_ms, location_name, location_region, and observed_at. Sample metadata is omitted.

Input parameters:

- `endpoint_id` (string, required)
- `hours`
- `view` (string, required)

Output parameters:

- `result`

### `create_check` (~297 tokens)

Create a check. kind is http, api, dns, or tcp. Defaults: GET, status 200, 10s timeout, email alerts on, interval_seconds from the plan minimum, and one region. DNS defaults to an A record over UDP. TCP requires port. Pass regions only when you want more than the default, and only within max_regions from usage. Request headers, request body, and HTTP auth stay in the console. To link a status page, pass site_id, site_slug, and component_id together.

Input parameters:

- `alert_destination_ids`
- `alert_email_enabled`
- `alert_incident_enabled`
- `body_contains`
- `component_id`
- `display_metrics`
- `dns_expected_values`
- `dns_protocol`
- `dns_record_type`
- `dns_server`
- `expected_status_codes`
- `follow_redirects`
- `http_method`
- `incident_auto_resolve`
- `incident_mode`
- `interval_seconds`
- `kind` (string, required)
- `name` (string, required)
- `port`
- `regions`
- `site_id`
- `site_slug`
- `target` (string, required)
- `tcp_expected_outcome`
- `tcp_ip_family`
- `tcp_payload`
- `timeout_seconds`
- `verify_ssl`

### `update_check` (~270 tokens)

Update a check. Pass only the fields to change. enabled false pauses and true resumes. Linking requires site_id, site_slug, and component_id together, plus optional incident_mode (off, auto, or review: review stores a draft a person approves before it is published), incident_auto_resolve, and display_metrics. Request headers, request body, and HTTP auth stay in the console.

Input parameters:

- `alert_destination_ids`
- `alert_email_enabled`
- `alert_incident_enabled`
- `body_contains`
- `component_id`
- `display_metrics`
- `dns_expected_values`
- `dns_protocol`
- `dns_record_type`
- `dns_server`
- `enabled`
- `endpoint_id` (string, required)
- `expected_status_codes`
- `follow_redirects`
- `http_method`
- `incident_auto_resolve`
- `incident_mode`
- `interval_seconds`
- `name`
- `port`
- `regions`
- `site_id`
- `site_slug`
- `target`
- `tcp_expected_outcome`
- `tcp_ip_family`
- `tcp_payload`
- `timeout_seconds`
- `verify_ssl`

### `delete_check` (~34 tokens)

Delete a check. Run only when the user asked to delete this check in this conversation.

Input parameters:

- `endpoint_id` (string, required)

### `run_check` (~60 tokens)

Queue a probe for one check from each of its live regions (the same regions a scheduled run uses). Returns job_id and regions. Call get_check_results with view status for the result; it is not included here.

Input parameters:

- `endpoint_id` (string, required)

### `list_status_pages` (~34 tokens)

Status pages in this workspace: slug, name, visibility, publicUrl, custom domain, and the worst open incident status.

Output parameters:

- `result` (array)

### `get_status_page` (~51 tokens)

One status page: components with ids, groups, incidents with public ids, Slack connection state, and alert-destination ids. has_password is returned; the password is not.

Input parameters:

- `slug` (string, required)

### `create_status_page` (~142 tokens)

Create a public status page. visibility internal requires Pro and a password of at least 8 characters that the user typed; never invent a password or repeat it. custom_domain is a hostname such as status.acme.com and requires Pro. With endpoint_ids, each check becomes a component linked to the page with incidents and latency enabled. Returns slug, publicUrl, component ids, and linked check ids. If a later step fails, the new page is deleted.

Input parameters:

- `custom_domain`
- `endpoint_ids`
- `name` (string, required)
- `password`
- `slug` (string, required)
- `url`
- `visibility`

### `update_status_page` (~113 tokens)

Update a status page. Fields: name, url, visibility, password, custom_domain, show_auto_detected (label incidents a check opened itself as detected automatically). custom_domain null removes it. visibility internal needs a password of at least 8 characters that the user typed. Never invent a password or repeat it.

Input parameters:

- `custom_domain`
- `name`
- `password`
- `show_auto_detected`
- `slug` (string, required)
- `url`
- `visibility`

### `delete_status_page` (~38 tokens)

Delete a status page and its components. Run only when the user asked to delete this page in this conversation.

Input parameters:

- `slug` (string, required)

### `verify_custom_domain` (~30 tokens)

Check the CNAME and TXT records for a status page custom domain.

Input parameters:

- `slug` (string, required)

### `create_component` (~49 tokens)

Add a component to an existing status page. Returns its id so update_check can link a check to it.

Input parameters:

- `name` (string, required)
- `slug` (string, required)
- `url`

### `update_component` (~41 tokens)

Rename a component or change its URL.

Input parameters:

- `component_id` (string, required)
- `name`
- `slug` (string, required)
- `url`

### `delete_component` (~41 tokens)

Delete a component. Run only when the user asked to delete this component in this conversation.

Input parameters:

- `component_id` (string, required)
- `slug` (string, required)

### `manage_component_group` (~73 tokens)

Create, update, or delete a component group. action is create, update, or delete. create and update need name. update and delete need group_id. Delete only when the user asked.

Input parameters:

- `action` (string, required)
- `group_id`
- `name`
- `slug` (string, required)

### `slack_connection` (~66 tokens)

Slack connection for a status page. action start returns a URL for the user to open; do not complete OAuth. action disconnect removes the connection. Disconnect only when the user asked. Connection state is on get_status_page.

Input parameters:

- `action` (string, required)
- `slug` (string, required)

### `page_alert_destinations` (~58 tokens)

Replace the alert destinations attached to a status page with these existing destination ids. Use list_alert_destinations for the ids. An empty list detaches all of them.

Input parameters:

- `destination_ids` (array, required)
- `slug` (string, required)

### `list_incident_proposals` (~43 tokens)

Drafts waiting for review from checks in incident_mode review, pending first. Approving one publishes it as a status incident.

Input parameters:

- `slug` (string, required)

### `approve_incident_proposal` (~92 tokens)

Publish a pending review draft as a status incident. This emails subscribers and posts to Slack. Run only when the user asked to publish it in this conversation. Optional title, body, and impact (minor, major, or critical) replace the draft text.

Input parameters:

- `body`
- `impact`
- `proposal_id` (string, required)
- `slug` (string, required)
- `title`

### `dismiss_incident_proposal` (~37 tokens)

Dismiss a pending review draft. Nothing is published.

Input parameters:

- `proposal_id` (string, required)
- `slug` (string, required)

### `create_incident` (~132 tokens)

Open an incident. This emails subscribers and posts to Slack the same way the console does. Run only when the user asked to publish this incident in this conversation. status is investigating, identified, monitoring, or resolved. impact is minor, major, or critical. component_ids are component public ids. opened_at with resolved_at backfills a past incident.

Input parameters:

- `body` (string, required)
- `component_ids`
- `impact` (string, required)
- `opened_at`
- `resolved_at`
- `slug` (string, required)
- `status` (string, required)
- `title` (string, required)

### `get_incident` (~32 tokens)

One incident, including updates newest first.

Input parameters:

- `public_id` (string, required)
- `slug` (string, required)

### `update_incident` (~113 tokens)

Edit an incident's title or impact. Run only when the user asked. With update_id and update_body, rewrite that posted update's message (no new notification). To change status, post a message, or resolve, use post_incident_update instead.

Input parameters:

- `body`
- `component_ids`
- `impact`
- `public_id` (string, required)
- `slug` (string, required)
- `status`
- `title`
- `update_body`
- `update_id`

### `post_incident_update` (~72 tokens)

Post an incident update. This emails subscribers and posts to Slack. Run only when the user asked to publish this update in this conversation. status resolved closes the incident.

Input parameters:

- `body` (string, required)
- `public_id` (string, required)
- `slug` (string, required)
- `status` (string, required)

### `list_maintenance_windows` (~39 tokens)

Maintenance windows: id, name, starts_at, duration_seconds, timezone, recurrence, weekdays, ends_at, notify_subscribers, and items.

Output parameters:

- `result` (array)

### `create_maintenance_window` (~141 tokens)

Schedule a maintenance window. duration_seconds is 60 through 7 days. Pass both the check (endpoint_ids) and its public component (status_components) so probes pause and the page shows Under maintenance. notify_subscribers defaults to false. Set it true only when the user asked to email subscribers. This can email subscribers, so run only when the user asked to schedule this window.

Input parameters:

- `duration_seconds` (integer, required)
- `endpoint_ids`
- `name` (string, required)
- `notify_subscribers`
- `starts_at` (string, required)
- `status_components`
- `timezone` (string, required)
- `weekdays`

### `update_maintenance_window` (~96 tokens)

Update a maintenance window. notify_subscribers defaults to false unless you set it. This can email subscribers. Run only when the user asked to change this window.

Input parameters:

- `duration_seconds`
- `endpoint_ids`
- `name`
- `notify_subscribers`
- `starts_at`
- `status_components`
- `timezone`
- `weekdays`
- `window_id` (string, required)

### `cancel_maintenance_window` (~56 tokens)

Cancel a maintenance window. notify_subscribers defaults to false. This can email subscribers. Run only when the user asked to cancel this window in this conversation.

Input parameters:

- `notify_subscribers`
- `window_id` (string, required)

### `list_alert_destinations` (~36 tokens)

Existing alert destinations: id, kind, name, and hint. Secrets are not returned. Creating a destination stays in the console.

Output parameters:

- `result` (array)

### `test_alert_destination` (~38 tokens)

Send a real test alert to an existing destination. Run only when the user asked to send the test.

Input parameters:

- `destination_id` (string, required)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-scaledpapers-scaledpapers/api#diagnostics

## Score history

- 2026-11-05: 75
- 2026-11-04: 74
- 2026-11-03: 74
- 2026-11-02: 73
- 2026-11-01: 73
- 2026-10-31: 73
- 2026-10-30: 72

## Common questions

### What is the ScaledPapers MCP server?

ScaledPapers is an MCP server listed in the public MCP registry as com.scaledpapers/scaledpapers. Uptime checks, status pages, incidents, and maintenance for websites, APIs, DNS, and TCP. This page covers its hosted endpoint (https://api.scaledpapers.com/mcp).

### Is the ScaledPapers MCP server safe to use?

ScaledPapers scores 75 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the ScaledPapers MCP server expose?

ScaledPapers exposes 34 tools: usage, list_regions, list_checks, get_check, get_check_results, and 29 more. Their descriptions and schemas cost roughly 2,562 tokens of context every time the server is loaded.

### Does the ScaledPapers MCP server require authentication?

Yes. ScaledPapers asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the ScaledPapers MCP server still maintained?

ScaledPapers is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://api.scaledpapers.com/mcp
- Authorisation metadata: https://api.scaledpapers.com/.well-known/oauth-protected-resource/mcp
- Website: https://scaledpapers.com/docs/mcp/
- Changelog RSS feed: https://verifymcp.io/servers/com-scaledpapers-scaledpapers/api.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-scaledpapers-scaledpapers/api.json
- HTML version of this page: https://verifymcp.io/servers/com-scaledpapers-scaledpapers/api
