Remote MCP · Streamable HTTP

A remote screenshot MCP server with a hash and timestamp on every capture.

Point an MCP client at https://pageverified.com/mcp and send your key as a Bearer header. The capture_url tool renders a public page as PNG, PDF or HTML and returns a download link, the SHA-256 hash of the file, the UTC capture time and, by default, a receipt link. It is a hosted endpoint, so there is nothing to install.

Three steps

Connect

  1. Get a key. POST /api/v1/keys issues a key with 25 free credits. No signup is needed.
  2. Add the server. Point your MCP client at https://pageverified.com/mcp over Streamable HTTP and send the key as an Authorization: Bearer header.
  3. Call capture_url. Ask the agent to capture a public URL. The tool returns a download link, the SHA-256 hash, the UTC capture time and, by default, a receipt link.

Scroll the table horizontally to see all fields.

Connection details
SettingValue
Endpointhttps://pageverified.com/mcp
TransportStreamable HTTP. Requests are JSON-RPC over POST and answers are JSON. A GET returns 405.
AuthenticationAuthorization: Bearer <key>
Without a keyinitialize and tools/list work. tools/call needs a key.
CreditsThe same key and the same balance as the HTTP API.

Copy and paste

Config for common MCP clients

Set PAGEVERIFIED_API_KEY in your environment first, or put the key in your client's secret settings.

Claude Code

claude mcp add --transport http pageverified https://pageverified.com/mcp \
  --header "Authorization: Bearer $PAGEVERIFIED_API_KEY"

Or in a project's .mcp.json:

{
  "mcpServers": {
    "pageverified": {
      "type": "http",
      "url": "https://pageverified.com/mcp",
      "headers": {
        "Authorization": "Bearer ${PAGEVERIFIED_API_KEY}"
      }
    }
  }
}

Cursor

In .cursor/mcp.json for one project, or ~/.cursor/mcp.json for all of them:

{
  "mcpServers": {
    "pageverified": {
      "url": "https://pageverified.com/mcp",
      "headers": {
        "Authorization": "Bearer ${env:PAGEVERIFIED_API_KEY}"
      }
    }
  }
}

Codex

In ~/.codex/config.toml:

[mcp_servers.pageverified]
url = "https://pageverified.com/mcp"
bearer_token_env_var = "PAGEVERIFIED_API_KEY"

Any other client

A client that supports Streamable HTTP and lets you set a request header can connect. Give it the endpoint and the Authorization header from the table above.

These formats belong to each client and can change. They were checked against each client's own documentation on 10 November 2026.

No pasted header

Sign in instead of pasting a key

Clients that sign in with OAuth use a second endpoint, https://pageverified.com/mcp/connect. The sign-in page asks you to paste a key you already have or to take a free one. There is no account and no password.

Sign-in is set up for Claude today: a custom connector in the Claude apps, and Claude Code. In Claude, add a custom connector with the URL above. In Claude Code:

claude mcp add --transport http pageverified https://pageverified.com/mcp/connect
# then run /mcp inside Claude Code and choose pageverified to sign in

Other clients should use https://pageverified.com/mcp with a Bearer key, as shown above.

No client needed

Try it with curl

List the tools. This needs no key and runs nothing:

curl -s -X POST https://pageverified.com/mcp \
  -H "content-type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Call the capture tool. This spends 1 credit:

curl -s -X POST https://pageverified.com/mcp \
  -H "authorization: Bearer $PAGEVERIFIED_API_KEY" \
  -H "content-type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"capture_url","arguments":{"url":"https://example.com","format":"png"}}}'

The answer has this shape. The capture comes back as JSON inside a text block:

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "resultType": "complete",
    "content": [
      {
        "type": "text",
        "text": "{\"id\":\"<capture id>\",\"artifact_url\":\"<signed download link>\",\"sha256\":\"<64 hex characters>\",\"captured_at\":\"<UTC time>\",\"evidence_url\":\"https://pageverified.com/e/<capture id>\"}"
      }
    ],
    "isError": false
  }
}

The capture_url tool

Scroll the table horizontally to see all fields.

capture_url arguments
ArgumentValues
urlRequired. A public http or https page.
formatpng (the default), pdf or html. PNG and HTML cost 1 credit; PDF costs 2 credits.
full_pagetrue or false. The default is false.
viewportwidth 320 to 2,560 and height 240 to 2,000.
public_receiptThe default is true: the capture gets a public receipt page.

The tool returns id, artifact_url, sha256, captured_at, evidence_url. It returns a link to the file, not the image itself. A model that needs to look at the screenshot has to fetch artifact_url, which works for 24 hours.

A capture records what PageVerified's renderer saw at the recorded time. It is not a forensic chain of custody, proof of who wrote a page, or a legal certification.

What else is on the server

The same endpoint lists 32 other PageVerified tools, each with its credit cost in its description. See all tools.

Signed Capture Records are available over HTTP only, at POST /api/v1/capture/record. They are not an MCP tool today.

A tools/call without a key, or with a key that has run out of credits, returns a tool error named payment_required. It carries a free_key_url and a payment_url, so an agent can take a free key or buy credits by itself. How an agent pays over HTTP 402.

The same on every page

Prices and limits

  • Formats. PNG, PDF or rendered HTML. One format per call.
  • Cost. A PNG or HTML capture costs 1 credit. A PDF costs 2 credits. A capture that fails is not charged.
  • Signed Capture Record. The capture cost plus 4 credits.
  • Free key. 25 credits, with no email and no card. Free keys render at up to 1,280 by 800 pixels, stop full-page captures at 2,400 pixels and allow 10 captures a minute. New free keys are issued in limited numbers; when none are left the API answers 429.
  • Every key. Free or paid, one key can run up to 120 captures an hour. Each key also has a daily share of the shared browser pool. A key capturing at that rate reaches it in under an hour.
  • Paid keys. Viewports from 320 to 2,560 pixels wide and 240 to 2,000 pixels high. Full-page captures stop at 16,000 pixels.
  • Packs. Credit packs are one-time payments in US dollars, bought with card checkout: $19 for 3,000 credits, $49 for 12,000 credits, $149 for 60,000 credits. Nothing renews.
  • Agents. An agent can buy the same packs over HTTP 402 with no person involved, plus $1 for 150 credits. How an agent pays.
  • Storage. The captured file is kept in private storage until you ask for it to be deleted. Download links are signed and expire after 24 hours. By default a capture has a public receipt page, which issues a fresh link each time it is loaded.
  • Time. The capture time is UTC from PageVerified's own server clock. For a signed Capture Record, outside time-stamp authorities later sign the record's hash with their own time, usually within 15 minutes; the record check at /verify shows it.
  • Pages it can capture. Public http and https pages only. It cannot log in, send cookies or set request headers, and private network addresses are refused.
  • What a capture is. A capture records what PageVerified's renderer saw at the recorded time. It is not a forensic chain of custody, proof of who wrote a page, or a legal certification.
  • Not offered. No uptime guarantee and no security or compliance certifications.

The card packs and the cost of every tool are on the pricing page, and more limits are in the API reference. How long data is kept is on the data handling page.