
Retrieve the Checkly account this connection acts on, with its plan and default runtime. Use this to confirm which account subsequent calls will affect.
List every Checkly account this API key can reach. Use getcurrentaccount for just the account the connection is configured against.
List the people with access to the current Checkly account, with their roles. Use this to find the user IDs and emails behind alert subscriptions.
List the destinations Checkly sends alerts to, such as email, Slack and webhooks. Use this before subscribing a check to a channel, and getalertchannel for one channel's full config. Returns pageinfo.nextpage for the following page.
Retrieve one alert channel by ID, with its type-specific config. Use listalertchannels to find channel IDs.
Create an alert destination. The config keys depend on type: EMAIL takes address, SLACK and WEBHOOK take url, SMS and CALL take number. Returns the new channel's id. Checks are attached to a channel through their own alert settings, not from here.
Update an alert channel's config or which alert kinds it receives. Checkly applies a partial update, so fields you omit keep their current values. Use listalertchannels to find channel IDs.
Permanently delete an alert channel. Checks subscribed to it stop sending alerts there. Use listalertchannels to find channel IDs.
List alerts Checkly has raised across every check, newest first, optionally limited to a date range. Use this to review recent incidents; use listcheckresults for a single check's full run history.
List check groups, which hold shared locations, runtime and alert settings for a set of checks. Filter by tag or by exact name. Use listcheckgroupchecks to see a group's members. Returns pageinfo.next_page for the following page.
Retrieve one check group by ID, with its shared settings. Use listcheckgroups to find group IDs.
List the checks that belong to one check group. Use listcheckgroups to find group IDs. Returns pageinfo.nextpage for the following page.
Create a check group so several checks share locations, runtime and alert settings. Use listlocations for location codes and listruntimes for runtime IDs. Returns the new group's id.
Update a check group. Checkly applies a partial update, so fields you omit keep their current values. Use listcheckgroups for group IDs and list_locations for location codes.
Permanently delete a check group. Checks in the group are not deleted; they lose the group's shared settings. Use listcheckgroups to find group IDs.
List recorded runs of one check, newest first, filtered by location, failure state, result type and time window. Defaults to the last 6 hours. Use listchecks to find check IDs and getcheck_result for one run's full detail.
Retrieve one recorded check run in full, including timings and per-assertion detail. Use listcheckresults to find result IDs for a check.
List monitoring checks, newest first, with server-side filtering by type, name, tag, status and API-check URL. Use this to browse or find a check; use getcheck once you have an ID. Returns pageinfo.next_page for the following page.
Retrieve one check by ID, including its schedule, locations and request or heartbeat configuration. Use list_checks to find check IDs.
Create an API check that sends an HTTP request on a schedule and asserts on the response. Needs locations unless groupid names a group that already has them: use listlocations for codes, listcheckgroups for group IDs, list_runtimes for runtime IDs. Returns the new check's id.
Create a heartbeat check that alerts when a scheduled job stops pinging Checkly. The response carries the ping URL the job should call. Use listcheckgroups for group IDs. Returns the new check's id.
Update a check. Checkly applies a partial update, so fields you omit keep their current values. Use listchecks for check IDs, listlocations for location codes and listcheckgroups for group IDs.
Permanently delete a check and its run history. Use list_checks to find check IDs. This cannot be undone.
List maintenance windows, the scheduled periods in which Checkly pauses checks and silences their alerts. Use getmaintenancewindow for one window's full schedule. Returns pageinfo.nextpage for the following page.
Retrieve one maintenance window by ID, with its schedule and the tags it applies to. Use listmaintenancewindows to find window IDs.
Create a maintenance window so checks are paused and alerts silenced during planned work. Scope it to checks carrying the given tags. Returns the new window's id.
Update a maintenance window's schedule or the tags it applies to. Checkly applies a partial update, so fields you omit keep their current values. Use listmaintenancewindows to find window IDs.
Permanently delete a maintenance window, so the checks it covered are no longer paused during it. Use listmaintenancewindows to find window IDs.
List the public locations Checkly can run checks from. Call this before createapicheck or createcheckgroup to get valid region codes for their locations field.
List the runtime versions checks can execute on, with their Node.js version and bundled packages. Call this before createapicheck or createcheckgroup to get a valid runtime_id.
Retrieve one runtime by ID, including every package version it bundles. Use list_runtimes to find valid runtime IDs.
List the IPv4 addresses Checkly's public runners send traffic from, for allowlisting a monitored endpoint's firewall.
Get aggregated success rates and response-time percentiles per check over a window. Pass quickrange for a preset window or fromdate and todate for a custom one, and filterby_tags to narrow the checks covered.
List reusable JavaScript snippets that checks can run as setup or teardown steps. Use this to find a snippet ID before attaching it to a check. Returns pageinfo.nextpage for the following page.
Retrieve one snippet by ID, including its full script. Use list_snippets to find snippet IDs.
Create a reusable JavaScript snippet that checks can run as a setup or teardown step. Returns the new snippet's id.
Update a snippet's name or script. Checkly applies a partial update, so fields you omit keep their current values. Use list_snippets to find snippet IDs.
Permanently delete a snippet. Checks that reference it will fail until they are updated. Use list_snippets to find snippet IDs.
Validate the Checkly API key and account ID with a lightweight account lookup. Both values are required: a call carrying only the key is rejected because it does not say which account to act on.
List account-level environment variables that checks can read at runtime. Use this to find a variable key before reading or updating it. Returns pageinfo.nextpage for the following page.
Retrieve one environment variable by key. Variables stored as secrets come back without their value. Use list_variables to find keys.
Create an account-level environment variable that checks can read at runtime. The key is the identifier and cannot be changed later. Set secret to store it write-only.
Replace an environment variable's value. The key itself cannot be changed; delete and recreate the variable to rename it. Use list_variables to find keys.
Permanently delete an environment variable. Checks that read it will fail until they are updated. Use list_variables to find keys.

In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now