Guides Agents and MCP
MCP tools for webhooks, notifications and your account
Reference for the eighteen MCP tools that manage webhooks, subscriptions and client portals, read notifications, and report who you are and what the server can do.
These eighteen tools cover everything around the edges of your radars: URLs that turn outside events into blips, signed pushes out to other systems, client-portal connections, your notification tray, and the two tools that tell an agent who it is and what it can do. Ids and scopes are explained in the MCP reference overview. For the user view of webhooks, see Webhooks.
Inbound webhooks
An inbound webhook gives a radar a secret URL that anything can POST to. Each delivery becomes a blip: a form submission, a build result, an alert. The delivery is authorized as the person who created the webhook, so it can never reach a radar they could not write to, and it stops working when they lose that access. Deliveries are limited to 60 a minute per webhook and 64 KB per payload. All five tools need radars:manage and ownership of the radar.
The drop box cannot have a webhook, because an ingest URL is an unauthenticated way into a private inbox. A smart radar cannot have one either, because it holds no blips.
list_webhooks
Lists the inbound webhooks on a radar, with delivery counts and the last error. Secrets are never returned. Only a create or rotate call ever shows one.
- Scope:
radars:manage. Read-only. - Required:
radarId(string).
create_webhook
Creates a webhook on a radar. The response contains the secret URL and shows it exactly once. Hand it to the person, and remember that anyone holding it can write to the radar.
- Scope:
radars:manage. Writes. - Required:
radarId(string),name(1 to 120 characters: what will be sending). - Optional:
format:auto(default) reads the payload's shape. A recognisable message field is used as it is, otherwise every field becomes a labelled line.templaterendersbodyTemplateinstead.bodyTemplate(up to 4,000 characters): used withformat: "template".{{field.path}}is filled in from the payload.titleTemplate(up to 300 characters).tags(up to 24, each up to 48 characters): applied to every blip this webhook creates. Worth setting, for provenance.state: the triage state of created blips. Defaultinbox.
- Returns:
id,name,secretUrland a note.
A template format without a non-empty bodyTemplate is refused.
{ "radarId": "5b2c7e2e-1f0a-4a55-9a53-0d1f6f3b8a10", "name": "Contact form", "tags": ["inbound"] }update_webhook
Changes a webhook's mapping, tags or name, or pauses and resumes it. It does not reveal or rotate the existing secret.
- Scope:
radars:manage. Writes. - Required:
webhookId(UUID), plus at least one field. - Optional:
name,format,bodyTemplate,titleTemplate,tags,state(same limits ascreate_webhook) andenabled(boolean).
rotate_webhook_secret
Invalidates the current webhook URL and issues a replacement, shown only in this response. Update the sender with the new secretUrl.
- Scope:
radars:manage. Writes (marked destructive, and not idempotent: each call issues a new URL). - Required:
webhookId(UUID).
delete_webhook
Stops a webhook accepting deliveries. Its URL dies immediately.
- Scope:
radars:manage. Writes (marked destructive). - Required:
webhookId(UUID). - Returns:
{ "deleted": "<webhookId>" }.
Outbound subscriptions
An outbound subscription pushes signed events from a radar (blip.created, blip.updated, blip.deleted, comment.created) to a public HTTPS receiver. An agent can inspect and delete them. Creating one, pausing it, rotating its secret and sending a test are refused for any connection, so those happen in the app. A radar can have up to 20 subscriptions.
list_subscriptions
Lists the signed outbound webhook subscriptions on a radar. Secrets are never returned.
- Scope:
radars:manage. Read-only. - Required:
radarId(UUID).
list_subscription_deliveries
Shows the last 100 delivery attempts for a subscription, newest first, without payloads or secrets.
- Scope:
radars:manage. Read-only. - Required:
radarId(UUID),subscriptionId(UUID).
delete_subscription
Deletes a subscription and its pending deliveries.
- Scope:
radars:manage. Writes (marked destructive). - Required:
radarId(UUID),subscriptionId(UUID). - Returns:
{ "deleted": "<subscriptionId>" }.
Client-portal integrations
A client portal is an outside system that reads and posts to your Helpdesk radars using its own credential. That credential is never an MCP credential. Connecting a portal, rotating or revoking its token, connecting a Helpdesk, setting where events are pushed, rotating the signing secret, resuming delivery and sending a test are all refused to an agent at any scope. Send the person to Settings, Connections. An agent can read the state and take the two safe steps below.
list_integrations
Lists your outside-system credentials, revoked ones included, and the Helpdesk radars each one reaches, with when each token was last used and when it expires. Secrets are never returned.
- Scope:
radars:read. Read-only. - Arguments: none.
- Returns:
{ "integrations": [...] }.
list_integration_deliveries
Shows where an integration pushes its events (ids only, signed), whether delivery is paused, how many events are waiting, and the last attempts with their HTTP status. Delivery pauses by itself after six failed attempts and keeps every event queued.
- Scope:
radars:read. Read-only. - Required:
integrationId(UUID).
pause_integration_delivery
Stops pushing events to the portal. Nothing is lost: events keep being logged and queued, the portal can still pull them, and you resume delivery from Settings, Connections, which sends the queue oldest first.
- Scope:
radars:write. Writes. Idempotent. - Required:
integrationId(UUID). - Returns: the integration, as it is now.
unenroll_helpdesk_radar
Disconnects a Helpdesk radar from a portal: the portal can no longer list its requests or post to it. This is permanent for that connection. Reconnecting is the account owner's decision in a browser.
- Scope:
radars:write. Writes (marked destructive). - Required:
integrationId(UUID),radarId(UUID). - Returns: the integration, as it is now.
Notifications
An agent may read and clear your notifications. It may never change how or whether you are notified. Email, browser push, per-radar levels and device subscriptions are refused for any connection. Send the person to Settings, Notifications. See Notifications.
A connection bound to an agent has a notification queue of its own: mentions of that agent. Nothing is emailed or pushed to it, and an unread item waits indefinitely, so drain it on connect.
list_notifications
Lists what has happened on your radars while you were away. Each line is already a rendered sentence, and several events of the same kind on the same blip are folded into one with a count.
- Scope:
radars:read. Read-only. - Optional:
unreadOnly(boolean, default false).radarId(UUID): narrow to one radar.kind: one ofsubscription_failed,comment,mention,reaction,share,blip,topic_share,topic_cascade,email_received,dueorreply_pending.limit(1 to 100, default 30) andcursor.
- Returns:
unreadTotal,items(each withid,kind,summary, optionalexcerptandcount,radarId,radarName,blipId,read,createdAt) andnextCursor.
A comment notification means a thread is worth reading: call list_comments on its blipId. A mention is never folded: two mentions are two lines. A notification on a Helpdesk radar may quote a client, and is marked external and fenced as data.
mark_notifications_read
Clears notifications that have been dealt with. It deletes nothing: the notification stays, and read: false puts it back. It also closes the folding window, so the next event on the same blip starts a fresh line.
- Scope:
radars:write. Writes. - Required: one of
ids,radarIdorall. - Optional:
ids(1 to 200 UUIDs),radarId(UUID: everything outstanding on one radar),all(the literaltrue: everything; preferids),read(boolean:falseputs one back as unread, and only works withids). - Returns: the result and the new
unreadTotal.
{ "ids": ["a4f1b8c2-77d0-4e19-9b3a-0c6d5e2f1a88"] }mark_notifications_seen
Marks the notification tray as seen without marking items read or changing delivery settings. Use mark_notifications_read to finish individual items.
- Scope:
radars:write. Writes. Idempotent. - Arguments: none.
get_notification_settings
Reads your email and push preferences and your notification level for each radar you can read. It changes nothing, and this connection cannot mute or enable anything.
- Scope: no scope is checked beyond a valid connection, so it works with
radars:read. Read-only. - Arguments: none.
Account and discovery
whoami
Reports the On My Radar account this connection acts as, and what the connection was granted. Call it first if you need to know whether you can do something, so you can tell "I was not granted that" from "my person cannot do that".
- Scope: no scope is checked beyond a valid connection. Read-only.
- Arguments: none.
- Returns:
id,email,name,isAdmin,appUrl,scopes(the scopes this connection holds, or null),agent(id,name,handleandmentionwhen this connection is bound to an agent, otherwise null) andvoice(grantedanddefault, or null).
list_capabilities
Returns the inventory of web features and their MCP equivalents, and where the human-only controls live. Use it to find out whether something you want is possible, and where to send the person if it is not. It is also published as the resource onmyradar://capabilities.
- Scope: no scope is checked beyond a valid connection. Read-only.
- Arguments: none.
The tool itself says to use the live tool list for current input schemas. This reference was written from the server's code at one point in time, and the live list is authoritative.