MCP server

AgentPing for AI assistants.

Connect ChatGPT, Claude, Cursor, VS Code, Codex or Claude Code to your AgentPing account and ask which agents failed, why a run went wrong, what it cost and whether it actually worked. 21 tools, one URL, on every plan including Free.

POSThttps://agentping.io/mcp

What you can ask.

Agents get fixed where you code and incidents get handled where you are talking, not on a dashboard. With AgentPing connected, the assistant reads the run, the cost and the evaluation where you already are, and can fix the code in the same session.

“Why did invoicer fail last night?”

Finds the failed runs in the window, reads the evaluation on each, and tells you what actually went wrong rather than what errored.

calls search_runs · get_run_evaluation

“Which agent cost the most this week, and for which customer?”

Spend is attributed per agent, per customer and per feature, so the answer is a name and a number, not a total.

calls list_agents · search_runs

“Show me every run the evaluator marked as not achieved since Monday.”

Quality drift shows up as runs that completed cleanly and still did the wrong thing. This surfaces them.

calls search_runs · get_run_evaluation

“Walk me through run run_8f3a step by step.”

Every model call, tool call and log line for the run, in order, with tokens and cost per step.

calls get_run_events

“Acknowledge the open incident on support-triage. I am looking at it.”

Stops the reminders for everyone on the channel and records who has it. Needs the Act permission.

calls acknowledge_incident

“That evaluation was wrong, the reply was fine. Tell the evaluator.”

Feedback corrects the verdict and feeds the calibration of future evaluations on that agent.

calls submit_evaluation_feedback

“Snooze the cost spike rule on researcher for two hours while I run the backfill.”

Quiet a rule for a known burst without turning it off and forgetting to turn it back on.

calls snooze_rule

“Set a $500 monthly budget on the outreach agent that warns at 80%.”

Budgets warn, they never throttle. Needs the Configure permission and an admin role.

calls create_budget

“This run failed on the parse step. Fix the code.”

In Cursor, VS Code or Claude Code the assistant reads the step, the input and the error, and edits the handler in the same session.

calls get_run_events

Connect in a minute.

Every client needs the URL and a sign-in. The first tool call sends you to an AgentPing consent screen where you choose what the assistant may do: view, act, or configure. Approve once and the assistant gets a token for exactly those permissions. No API keys to paste.

Claude Code

claude mcp add -s user --transport http agentping https://agentping.io/mcp
claude mcp login agentping

The -s user flag registers the server for every project. The second command opens the consent screen; pick the permissions you want the assistant to have.

Codex

codex mcp add agentping --url https://agentping.io/mcp
codex mcp login agentping

Cursor

.cursor/mcp.json

{
    "mcpServers": {
        "agentping": {
            "url": "https://agentping.io/mcp"
        }
    }
}

Cursor opens the consent screen the first time a tool is called.

VS Code

.vscode/mcp.json

{
    "servers": {
        "agentping": {
            "type": "http",
            "url": "https://agentping.io/mcp"
        }
    }
}

Or run MCP: Add Server from the command palette, choose HTTP and paste the URL.

ChatGPT

  1. Open Settings, then Connectors, then Create. Developer mode has to be on under Advanced settings.
  2. Name it AgentPing, paste the server URL, leave authentication on OAuth and save.
  3. Click Connect and approve on the AgentPing consent screen.

Server URL: https://agentping.io/mcp

Claude

  1. Open Settings, then Connectors, then Add custom connector.
  2. Name it AgentPing and paste the server URL. Leave the client ID and secret empty.
  3. Click Add, then Connect, and approve on the consent screen.

Server URL: https://agentping.io/mcp

Works on claude.ai and in Claude Desktop.

Gemini CLI

gemini mcp add --transport http -s user agentping https://agentping.io/mcp

Windsurf

~/.codeium/windsurf/mcp_config.json

{
    "mcpServers": {
        "agentping": {
            "serverUrl": "https://agentping.io/mcp"
        }
    }
}

Any other client that speaks Streamable HTTP works with the same URL. Full setup notes and troubleshooting are in the MCP guide.

Tools.

This list is read from the running server, so it is exactly what a connected assistant sees. Tools are grouped by the permission they need, which is also how the consent screen groups them: view on every plan, act on paid plans, configure on paid plans with an admin role. Every tool carries hints that tell the assistant whether it only reads, changes something, or cannot be undone.

View your agents and runs (View permission, every plan, including free)

list_teams

List teams Read only View

List the teams you can reach, each with its agent count and whether evaluations are switched on. Start here: most other tools need a team slug.

No inputs.

list_agents

List agents Read only View

List the agents in a team with their recent health pass rate, quality, last-seen time, and month-to-date cost. Use this to see the workforce at a glance.

team*
The team slug, from list_teams. Required because your token can reach several teams.

search_runs

Search runs Read only View

Search a team's runs, newest first. Filter by status (success/failed/timeout/running), agent, and an ISO date range. Returns a page of run summaries (max 100) plus a next_cursor; pass it back as cursor to page. This is the run explorer.

team*
The team slug, from list_teams. Required because your token can reach several teams.
status
Only runs with this status.
agent_id
Only runs for this agent (its id or slug).
from
ISO 8601 lower bound on received time.
to
ISO 8601 upper bound on received time.
per_page
Page size, 1 to 100 (default 50).
cursor
A next_cursor from a previous call.

get_run_events

Get run steps Read only View

Get the step-by-step events of one run in order (LLM calls, tool calls, logs). Large payloads come back as a payload_url you can fetch separately, never inlined.

team*
The team slug, from list_teams.
run_id*
The run id, e.g. run_eu_...

get_run_evaluation

Get run evaluation Read only View

Get the evaluation verdict for one run: whether it achieved its goal, a 0-5 quality, issues, and reasoning. Status may be complete, pending, covered_by_routine_baseline, or returned_to_allowance.

team*
The team slug, from list_teams.
run_id*
The run id, e.g. run_eu_...

Act on incidents and evaluations (Act permission, paid plans)

acknowledge_incident

Acknowledge incident Writes Act

Acknowledge an open incident: stops reminders, keeps it open until the condition clears. Idempotent.

team*
The team slug, from list_teams.
incident_id*
The incident id, inc_...

resolve_incident

Resolve incident Writes Act

Resolve an incident now (for conditions that do not auto-resolve). Idempotent.

team*
The team slug, from list_teams.
incident_id*
The incident id, inc_...

snooze_rule

Snooze rule Writes Act

Snooze an alert rule for 1 hour (60), 24 hours (1440), or 7 days (10080), optionally for a single agent.

team*
The team slug, from list_teams.
rule_id*
The rule id, arule_...
minutes*
60 (1 hour), 1440 (24 hours), or 10080 (7 days).
agent
Snooze for just this agent (id or slug); omit for the whole rule.

submit_evaluation_feedback

Give evaluation feedback Writes Act

Tell AgentPing whether you agree with a run's evaluation verdict. A disagreement (with an optional note) feeds rubric tuning.

team*
The team slug, from list_teams.
run_id*
The run id, run_...
agree*
true if the verdict was right, false if wrong.
note
Why it was wrong (only used when agree is false). Max 500 characters.

Change your monitoring configuration (Configure permission, paid plans, admin role)

create_alert_rule

Create alert rule Writes Configure

Create an alert rule. condition is one of run_failed, evaluation_failed, consecutive_failures, health_rate, quality_drop, agent_silent. scope is "team" or "agent" (give agent then). channels are channel ids to route to; params tune thresholds.

team*
The team slug, from list_teams.
condition*
What the rule watches for.
scope*
Whether the rule applies to the whole team or one agent.
agent
Required when scope is agent: the agent id or slug.
params
Thresholds, e.g. {"score":70,"min_evaluated":5} for quality_drop.
channels
Channel ids to notify.
severity
Severity label; defaults to warning.
remind_minutes
Remind at this cadence (minutes, min 5) while open; omit to notify once.

update_alert_rule

Update alert rule Writes Configure

Update an alert rule's params, channels, severity, reminder cadence, or active flag.

team*
The team slug, from list_teams.
rule_id*
The rule id, arule_...
params
Replacement threshold params.
channels
Replacement set of channel ids.
severity
New severity label.
remind_minutes
New reminder cadence in minutes (min 5), or null to notify once.
active
Enable or pause the rule.

delete_alert_rule

Delete alert rule Destructive, needs confirm and name Configure

Delete an alert rule. Destructive: requires confirm true and confirm_name matching the rule's description exactly.

team*
The team slug, from list_teams.
rule_id*
The rule id, arule_...
confirm*
Must be true to delete.
confirm_name*
Must match the rule description, e.g. "quality drops".

create_channel

Create channel Writes Configure

Create an alert channel. type is email, slack, discord, webhook, teams, or pagerduty. config carries the type-specific fields (e.g. {"url":"https://hooks.slack.com/..."} for slack). Telegram is dashboard-only.

team*
The team slug, from list_teams.
type*
The channel type. Telegram is dashboard-only and not available here.
label
A name for the channel. Max 80 characters.
config
Type-specific fields, e.g. {"url":"https://hooks.slack.com/..."} for slack, {"address":"ops@acme.com"} for email.

delete_channel

Delete channel Destructive, needs confirm and name Configure

Delete an alert channel. Destructive: requires confirm true and confirm_name matching the channel label exactly.

team*
The team slug, from list_teams.
channel_id*
The channel id, achan_...
confirm*
Must be true to delete.
confirm_name*
Must match the channel label.

create_budget

Create spend budget Writes Configure

Create a monthly spend budget. scope is "team", "agent" (give the agent as scope_value), or "model". thresholds are alert percentages, default [50,80,100]. AgentPing never stops agents; a budget only warns.

team*
The team slug, from list_teams.
name*
A name for the budget. Max 120 characters.
scope*
What the budget covers.
scope_value
The agent (id/slug) or "<provider>:<model>" when scope is not team.
amount_usd*
The monthly budget amount in USD.
thresholds
Alert percentages (1-1000), e.g. [50,80,100]. Defaults to [50,80,100].

update_budget

Update spend budget Writes Configure

Update a budget's name, amount, or alert thresholds.

team*
The team slug, from list_teams.
budget_id*
The budget id, bud_...
name
New name. Max 120 characters.
amount_usd
New monthly amount in USD.
thresholds
New alert percentages (1-1000).

delete_budget

Delete spend budget Destructive, needs confirm and name Configure

Delete a budget. Destructive: requires confirm true and confirm_name matching the budget name.

team*
The team slug, from list_teams.
budget_id*
The budget id, bud_...
confirm*
Must be true to delete.
confirm_name*
Must match the budget name.

update_team

Update team Writes Configure

Update the team's name or its "evaluate runs" switch (true turns AI evaluations on for this team).

team*
The team slug, from list_teams.
name
New team name. Max 120 characters.
evaluations_enabled
true turns AI evaluations on for this team, false turns them off.

create_status_page

Create status page Writes Configure

Create a status page for some of the team's agents. visibility is "link" (anyone with the link), "password" (give a passcode), or "internal" (signed-in team members only). Each agent shows a daily track per enabled pillar: availability (default on), quality, and spend. The spend track shows state only, never figures, driven by spend_source (budget breaches and/or anomalies). States only, never data.

team*
The team slug, from list_teams.
title*
The status page title. Max 120 characters.
agents*
Agent ids or slugs to show. At least one.
visibility
"link" for anyone with the link, "password" to gate behind a passcode, "internal" for signed-in team members only. Defaults to link.
passcode
Required when visibility is password; 6-120 characters, never echoed back.
show_availability
Show the availability (run success) track. Defaults to true.
show_quality
Show the quality (evaluation score) track.
show_spend
Show the spend track (state only, never figures).
spend_source
What the spend track reflects: budget breaches, spend anomalies, or both. Defaults to both.

regenerate_status_page_slug

Regenerate status page link Destructive, needs confirm and name Configure

Rotate a status page's link, invalidating the old URL and any passcode cookies immediately. Destructive: requires confirm true and confirm_name matching the page title.

team*
The team slug, from list_teams.
page_id*
The status page id, stat_...
confirm*
Must be true to rotate the link.
confirm_name*
Must match the page title.

delete_status_page

Delete status page Destructive, needs confirm and name Configure

Delete a status page. Destructive: requires confirm true and confirm_name matching the page title.

team*
The team slug, from list_teams.
page_id*
The status page id, stat_...
confirm*
Must be true to delete.
confirm_name*
Must match the page title.

What it will and will not do.

You choose the permissions

The consent screen offers view, act and configure separately. Give a chat assistant view only and it can never change anything, whatever it is asked. Every tool re-checks its permission, your team membership, the plan and your role on each call, so a downgrade takes effect immediately.

Scoped to the teams you belong to

Almost every tool takes a team slug and refuses any team you are not a member of. list_teams shows the assistant what it can reach and nothing else.

Revoke in one click

Every connected assistant is listed under Connected apps in Settings. Disconnect revokes its tokens immediately. Tokens expire after an hour and refresh silently for up to 90 days, so a forgotten connection does not live forever.

Deletions name their target

Deleting a rule, channel, budget or status page needs confirm: true and a confirm_name that matches the thing exactly, so a wrong guess cannot remove the wrong rule.

No billing, members or keys

A connected assistant cannot change your plan, invite or remove people, create or revoke API keys, or delete your account or your data. Those stay in the dashboard on purpose.

Never stops an agent, always leaves a trail

Budgets and rules only warn; nothing the assistant does can throttle or halt a running agent. Every change is written to your Activity log with who, when, through which app, and from what to what.

Ask your assistant about your agents.

Viewing runs, costs and evaluations through an assistant is on the Free plan, no card required. Acting on what it finds comes with any paid plan.