Documentation
MCP server
Connect an AI agent to JAMP so it can read your site's errors, uptime, vitals and traffic. Ask it what is broken in production and it can pull the stack trace, see which deploy it started in, and go fix it.
JAMP exposes its monitoring data through the Model Context Protocol, supported by Claude, Cursor, Claude Code and other MCP clients. It is read-only: an agent can read your data but cannot change or delete anything.
Connect with OAuth (easiest)
For clients that support OAuth, add the hosted server URL and the client sends you to JAMP to sign in and authorize. There is nothing to install and no token to paste.
https://mcp.jamp.io/mcpJAMP is an OAuth 2.1 server with dynamic client registration and PKCE, so the client registers itself. You will see a consent screen asking to grant read access to your sites, then the connection completes.
Connect with a token
For clients without OAuth, create a token under Settings → API & MCP access and pass it in an Authorization header. With Claude Code:
claude mcp add --transport http jamp \
https://mcp.jamp.io/mcp \
--header "Authorization: Bearer jamp_..."For Cursor, Claude Desktop, Windsurf and similar, add the server to the MCP config:
{
"mcpServers": {
"jamp": {
"url": "https://mcp.jamp.io/mcp",
"headers": { "Authorization": "Bearer jamp_..." }
}
}
}Run it locally (stdio)
If you would rather run the server yourself, the jamp-mcp package is a small stdio server that wraps the same API.
# from the mcp/ folder
npm install && npm run build
claude mcp add jamp --env JAMP_API_TOKEN=jamp_... -- node /abs/path/to/mcp/dist/index.jsTools
Most tools take a site id (from jamp_list_sites) and an optional window of 24h, 7d (default), 30d or 90d.
jamp_list_sitesYour sites and their ids (needed by the other tools).
jamp_list_errorsGrouped JavaScript errors for a site, busiest first.
jamp_get_errorOne error in full: scrubbed stack trace, the release it appeared in, file and line, and breakdowns.
jamp_uptimeUp or down, uptime percentage, average response time and recent incidents.
jamp_vitalsp75 Core Web Vitals (LCP, CLS, INP, FCP, TTFB) from real users.
jamp_trafficPageviews, unique visitors and top pages, sources and countries.
The fix-it flow
Ask your agent something like "what is the top error on my site?" It calls jamp_list_errors, picks a fingerprint, then calls jamp_get_error to get the scrubbed stack trace and the release SHA the error last appeared in, so it can open the right file at the right commit.
REST API
The MCP server is a thin wrapper over a read-only REST API you can also call directly with the same token. All responses are JSON and take an optional ?window= query parameter.
curl -H "Authorization: Bearer jamp_..." \
https://jamp.io/api/v1/sitesGET /api/v1/sitesList the sites this token can read.
GET /api/v1/sites/:id/errorsGrouped errors, busiest first.
GET /api/v1/sites/:id/errors/:fingerprintFull detail for one error group.
GET /api/v1/sites/:id/uptimeStatus, uptime percentage and incidents.
GET /api/v1/sites/:id/vitalsp75 Core Web Vitals.
GET /api/v1/sites/:id/trafficTraffic summary.
Security
- Tokens and OAuth grants are read-only and cover every site in your account.
- We store only a hash of each token, so the secret is shown once at creation. Revoke any token from Settings → API & MCP access.
- Error messages and stack traces are scrubbed of emails, tokens and long numbers before storage, so the agent never sees that data.
- Requests are rate limited per account (120 per minute); over that you get a 429, so a runaway client can't hammer the API.