Skip to content
Agentmart
Submit a tool

Jira Alerts (JSM Operations)

MCP server for Jira Service Management Operations — alerts, on-call schedules and responders

Connector by rrvrs · GitHub account verified by the MCP Registry

IndexedApache-2.0Local (stdio)★ 4
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/rrvrs-jira-alerts-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

MCP server for Jira Service Management Operations — alerts, on-call schedules and responders

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
12 read · 11 write · 14 delete
Secrets
2 (API keys, tokens or passwords)
Install scripts
Not scanned yet
Runs as
Node.js package

Tools by what they do 37

Read from the source code; the running server may list different tools.

Read 12 · Look things up without changing anything.

  • jsm_get_alert
  • jsm_get_alert_attachment
  • jsm_get_next_on_call
  • jsm_get_on_call
  • jsm_get_request_status
  • jsm_get_schedule_timeline
  • jsm_list_alert_attachments
  • jsm_list_alert_logs
  • jsm_list_alert_notes
  • jsm_list_alerts
  • jsm_list_capabilities
  • jsm_list_heartbeats

Write 11 · Create, change, send or run things.

  • jsm_acknowledge_alert
  • jsm_add_alert_note
  • jsm_add_alert_responder
  • jsm_add_alert_tags
  • jsm_assign_alert
  • jsm_cancel_maintenance
  • jsm_create_alert
  • jsm_create_heartbeat
  • jsm_escalate_alert
  • jsm_snooze_alert
  • jsm_unacknowledge_alert

Delete 14 · Delete, drop, revoke or wipe things.

  • jsm_add_alert_extra_properties
  • jsm_change_routing_rule_order
  • jsm_close_alert
  • jsm_delete_alert
  • jsm_delete_alert_attachment
  • jsm_delete_alert_note
  • jsm_delete_heartbeat
  • jsm_execute_alert_action
  • jsm_ping_heartbeat
  • jsm_remove_alert_extra_properties
  • jsm_remove_alert_tags
  • jsm_update_alert_field
Show 2 more tools
  • jsm_update_alert_note
  • jsm_update_heartbeat

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • JSM_API_TOKEN
  • JSM_OAUTH_TOKEN

Other settings (environment variables or headers).

  • JSM_CLOUD_ID
  • JSM_EMAIL

Files it touches

  • Any path the agent passes to its tools

Tools (37)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • jsm_acknowledge_alertAcknowledge a JSM alert

    Acknowledge an open JSM alert, stopping further escalation notifications for it. Acknowledging signals that a human has picked the alert up. It does not resolve the alert — use jsm_close_alert for that. Acknowledging an already-acknowledged alert is a no-op. Args: - alert_id (string): the full alert id (not the tinyId) Returns: { "requestId": string, "result": string, "alert_id": string } IMPORTANT: this action is asynchronous. The response confirms the request was accepted, not that the alert changed. Verify with jsm_get_request_status using the returned requestId. Examples: - "Ack t…

  • jsm_add_alert_extra_propertiesAttach key/value properties to a JSM alertcan change or delete data

    Attach arbitrary key/value context to a JSM alert, or overwrite properties already on it. Extra properties are the structured half of an alert, next to the prose in its description: a runbook link, the region, the deploy that preceded it, a trace id. Unlike a note they can be read back programmatically by whatever picks the alert up next. Args: - alert_id (string): the full alert id (not the tinyId) - extra_properties (object): key/value pairs; values may be strings, numbers or booleans Returns: { "requestId": string, "result": string, "alert_id": string } IMPORTANT: this action is asy…

  • jsm_add_alert_noteAdd a note to a JSM alert

    Append a note to a JSM alert's activity timeline without changing its state. Use this to record triage findings, link a runbook or dashboard, or leave context for the next responder. It does not acknowledge, close, or reassign the alert. Args: - alert_id (string): the full alert id (not the tinyId) - note (string): the note text - user (string, optional): actor name/email; defaults to the credential owner - source (string, optional): source label for the activity log Returns: { "requestId": string, "result": string, "alert_id": string } IMPORTANT: this action is asynchronous. Verif…

  • jsm_add_alert_responderAdd a responder to a JSM alert

    Add a responder (user, team, escalation or schedule) to an existing JSM alert so they are notified and become accountable for it. Use this to pull in another team once triage shows the alert belongs elsewhere. Responders are additive — this does not remove the existing ones. Args: - alert_id (string): the full alert id (not the tinyId) - responder_id (string): id of the user/team/escalation/schedule to add - responder_type ('user' | 'team' | 'escalation' | 'schedule'): what responder_id refers to Returns: { "requestId": string, "result": string, "alert_id": string } IMPORTANT: this a…

  • jsm_add_alert_tagsAdd tags to a JSM alert

    Add one or more tags to a JSM alert. Tags are additive — existing ones stay. Tags are how alerts get grouped and found later: jsm_list_alerts can filter on them (tag:"db"), and they are what turns a scattering of individual alerts into "the seventeen from last night's storage incident". Args: - alert_id (string): the full alert id (not the tinyId) - tags (string[]): one or more tag names Returns: { "requestId": string, "result": string, "alert_id": string } IMPORTANT: this action is asynchronous. Verify with jsm_get_request_status using the returned requestId. Tags are case-sensitive.…

  • jsm_assign_alertAssign a JSM alert to a person

    Make one person the owner of a JSM alert, so it is clear who is working it. Assigning names an owner; jsm_add_alert_responder adds people to notify without taking ownership away. Reach for this when triage has decided whose problem it is, and for that one alert rather than a class of them — routing rules, not assignment, are how a class of alerts finds its team. Args: - alert_id (string): the full alert id (not the tinyId) - account_id (string): Atlassian account id of the assignee Returns: { "requestId": string, "result": string, "alert_id": string } IMPORTANT: this action is asynchro…

  • jsm_cancel_maintenanceCancel a maintenance window

    End a maintenance window now, resuming alerting for everything it was silencing. Args: - maintenance_id (string): the window to cancel - team_id (string, optional): for a team window rather than a site-wide one Returns: { "maintenance": { "id": string, "status": string, ... } } This is the right way to end maintenance early. Unlike jsm_delete_maintenance it keeps the record of what was silenced and for how long, which is what someone reviewing an incident will want. Alerts suppressed *during* the window are not replayed — cancelling resumes future alerting, it does not recover what was…

  • jsm_change_routing_rule_orderReorder a routing rulecan change or delete data

    Move a routing rule to a different position in its team's list. Args: - team_id (string), routing_rule_id (string): the rule to move - order (number): its new position Returns: { "confirmed": true, "routing_rule_id": string } The API answers 204 with no body, so nothing about the rule comes back — re-read it with jsm_get_routing_rule if you need to show the new position. Order is behaviour, not presentation: rules are evaluated top down and the first match wins. Moving a broad rule upwards can shadow everything below it, so alerts that were reaching one rotation start reaching another …

  • jsm_close_alertClose a JSM alertcan change or delete data

    Close a JSM alert, marking it resolved and ending all notifications for it. Closing is how an alert leaves the open queue. Treat it as effectively one-way: a closed alert cannot be reopened through this API, and a recurring condition will create a fresh alert (or increment a deduplicated one) rather than reviving this record. Prefer jsm_acknowledge_alert while work is still in progress. Args: - alert_id (string): the full alert id (not the tinyId) Returns: { "requestId": string, "result": string, "alert_id": string } IMPORTANT: this action is asynchronous. Verify with jsm_get_request_sta…

  • jsm_create_alertCreate a JSM alert

    Create a new alert in Jira Service Management Operations. This pages people. A created alert enters the team's routing and escalation rules exactly as one raised by a monitoring integration would, so someone's phone may ring. Create one when a human wants an incident tracked and escalated — not to leave a note, which is jsm_add_alert_note, and not to record something nobody needs to act on. Args: - message (string): one-line summary. The ONLY required field. - alias (string, optional): de-duplication key — see below - description (string, optional): longer detail, impact, what to try …

  • jsm_create_heartbeatCreate a heartbeat

    Create a heartbeat: JSM raises an alert if no ping arrives within the interval. Args: - team_id (string): the owning team - name (string): required — this is the heartbeat's identifier, and what the pinging job must send - interval (number), interval_unit ('minutes' | 'hours' | 'days'): required — how long silence may last - description, enabled, alert_message, alert_priority, alert_tags: optional Returns: { "heartbeat": { "name": string, ... } } Synchronous. Set the interval longer than the job's own schedule, with room for a slow run — a heartbeat pinged hourly with a one-hour in…

  • jsm_delete_alertPermanently delete a JSM alertcan change or delete data

    Permanently delete a JSM alert and everything recorded on it. **This is almost never the right tool.** Closing an alert with jsm_close_alert takes it out of the open queue and keeps the record: who was paged, what they tried, when it resolved. Deleting throws that away, for everyone, with no undo — the notes, the activity log, the attachments and the timing all go with it. A closed alert costs nothing to keep. The cases that justify it are narrow: an alert containing credentials or personal data that must not persist, or a flood of alerts from a misconfigured integration that never represent…

  • jsm_delete_alert_attachmentDelete a file attached to a JSM alertcan change or delete data

    Permanently remove one attachment from a JSM alert. Reach for this when a file should never have been attached — a screenshot with credentials in it, a log containing customer data, a file on the wrong alert. Not for tidying: an attachment is evidence of what a responder was looking at, and the alert's history is worth more than the storage. Args: - alert_id (string): the full alert id (not the tinyId) - attachment_id (string): from jsm_list_alert_attachments Returns: { "deleted": true, "attachment_id": string } **There is no undo.** The file is gone when this returns. Confirm with the…

  • jsm_delete_alert_noteDelete a note from a JSM alertcan change or delete data

    Permanently remove a note from a JSM alert's timeline. Reach for this only for a note that should never have been written — a pasted credential, someone's personal information, a note on the wrong alert. Not for a note that turned out to be wrong: that is what jsm_update_alert_note is for, and being able to see what a responder believed at the time is most of what the timeline is worth. Args: - alert_id (string): the full alert id (not the tinyId) - note_id (string): id of the note to delete, from jsm_list_alert_notes Returns: { "deleted": true, "note_id": string } **There is no undo, …

  • jsm_delete_heartbeatDelete a heartbeatcan change or delete data

    Permanently delete a heartbeat. Args: - team_id (string), name (string) Returns: { "deleted": true, "name": string } Nothing then notices if the job it watched stops running, and no alert is raised to say the watch is gone. If the goal is to stop it alerting temporarily, jsm_update_heartbeat with enabled=false is reversible and leaves the configuration in place. Requires delete:ops-config:jira-service-management. That grant belongs to the individual token rather than to API-token auth — another token on the same account can hold it — so a 401 here means reissue JSM_API_TOKEN with the del…

Show 22 more tools
  • jsm_escalate_alertEscalate a JSM alert through an escalation policy

    Push a JSM alert into an escalation policy immediately, rather than waiting for it to escalate on its own. Use this when an alert is not getting picked up and waiting out the escalation timer is not acceptable. It pages the next people in that policy now. Args: - alert_id (string): the full alert id (not the tinyId) - escalation_id (string): id of the escalation policy to run Returns: { "requestId": string, "result": string, "alert_id": string } IMPORTANT: this action is asynchronous. Verify with jsm_get_request_status using the returned requestId. This pages people out of band, ahead…

  • jsm_execute_alert_actionRun a custom action on a JSM alertcan change or delete data

    Run one of your organisation's own custom alert actions — the buttons a team wires up on an integration, like "Restart service" or "Roll back deploy". What these do is entirely up to whoever configured them, and this server cannot see it. An action name is a request to run somebody's automation against production. Args: - alert_id (string): the full alert id (not the tinyId) - action_name (string): the configured action's name, exactly as configured Returns: { "requestId": string, "result": string, "alert_id": string } IMPORTANT: this action is asynchronous. Verify with jsm_get_request…

  • jsm_get_alertGet JSM alert detailsread-only

    Retrieve the full detail of a single JSM alert, including its description, custom details/extraProperties, responders, tags and dedupe count. Use this after jsm_list_alerts when you need the payload an integration attached to the alert (host, service, metric values, runbook links) — the list endpoint returns a thinner record without the description or details map. Args: - identifier (string): the full alert id, or an alias when identifier_type='alias' - identifier_type ('id' | 'alias'): default 'id' - response_format ('markdown' | 'json'): default 'markdown' Returns (json format): a s…

  • jsm_get_alert_attachmentGet a download URL for a JSM alert attachmentread-only

    Get a temporary download URL for one file attached to a JSM alert. Args: - alert_id (string): the full alert id (not the tinyId) - attachment_id (string): from jsm_list_alert_attachments Returns: { "alert_id": string, "attachment_id": string, "url": string } **The URL expires**, and it is pre-authorised — anyone holding it can fetch the file without credentials for as long as it lasts. Hand it to the user to open; do not paste it anywhere it will be stored or shared, and fetch a fresh one rather than reusing an old one. This server does not download the file. It returns the URL and sto…

  • jsm_get_next_on_callGet who is on-call nextread-only

    Return the responders who take over the next shift on a JSM schedule, and when that shift begins. Use this for handover messages and for deciding whether an alert can wait for the next rotation. Args: - schedule_id (string): schedule id, or name if schedule_identifier_type='name' - schedule_identifier_type ('id' | 'name'): default 'id' - date (string, optional): ISO 8601 reference point; "next" is computed relative to it. Defaults to now - flat (boolean): default true — flat list of user identifiers; false shows rotation/escalation nesting - response_format ('markdown' | 'json'): d…

  • jsm_get_on_callGet who is on-call nowread-only

    Return the responders currently on-call for a JSM schedule, optionally evaluated at a past or future timestamp. This is the tool for "who do I wake up?" and, with the 'date' argument, for "who was on-call when this incident started?" — which is often the more useful question during a post-incident review. Args: - schedule_id (string): schedule id, or name if schedule_identifier_type='name' - schedule_identifier_type ('id' | 'name'): default 'id' - date (string, optional): ISO 8601 timestamp to evaluate at; defaults to now - flat (boolean): default true — flat list of user identifiers…

  • jsm_get_request_statusCheck JSM async request statusread-only

    Check whether an asynchronous alert action actually succeeded. Every JSM alert write (acknowledge, close, add note, assign, snooze) returns immediately with a requestId and does NOT apply the change synchronously. Pass that requestId here to confirm the action landed — this is the correct way to verify a write, rather than immediately re-reading the alert and finding it unchanged. Args: - request_id (string): the requestId returned by a write tool - response_format ('markdown' | 'json'): default 'markdown' Returns (json format): { "action": string, // e.g. "Acknowledge" …

  • jsm_get_schedule_timelineGet a schedule's shift boundariesread-only

    Return the on-call rotation periods for a JSM schedule — who covers each shift, and exactly when each shift starts and ends. This is the tool for any question about shift boundaries rather than a single moment: "when does the current shift end?", "when is the handover?", "who covers the weekend?", "show me next week's rota". Answering those by calling jsm_get_on_call at guessed timestamps takes many calls and still cannot find a boundary exactly; this takes one. Responders are resolved to names, so periods come back with people rather than bare account ids. Args: - schedule_id (string): s…

  • jsm_list_alert_attachmentsList files attached to a JSM alertread-only

    List the files attached to a JSM alert — screenshots, logs, dashboards someone captured while working it. Attachments carry evidence the alert's text does not: the graph that showed the spike, the stack trace, the config that was wrong. Check them before concluding an alert has no context. Args: - alert_id (string): the full alert id (not the tinyId) - limit (number): 1-100, default 20 - cursor (string, optional): the 'next_cursor' from a previous response - response_format ('markdown' | 'json'): default "markdown" Returns (json format): { "attachments": [{ "id": string, "atta…

  • jsm_list_alert_logsList JSM alert activity logsread-only

    List the system activity log for a JSM alert — every state transition, notification, escalation and automated action, newest first by default. Use this to answer "why did nobody get paged?" or "when was this escalated and to whom?". Logs are system-generated; human comments live in jsm_list_alert_notes instead. Args: - alert_id (string): the full alert id (not the tinyId) - limit (number): 1-100, default 20 - order ('asc' | 'desc'): default 'desc' - offset (string, optional): opaque cursor from a previous response's next_cursor - response_format ('markdown' | 'json'): default 'mark…

  • jsm_list_alert_notesList JSM alert notesread-only

    List the notes (human comments) recorded on a JSM alert's activity timeline, newest first by default. Notes are where responders write triage context, and where integrations append re-fire and resolution updates for a deduplicated alert. Read them before acting on an alert so you don't repeat work someone already did. Args: - alert_id (string): the full alert id (not the tinyId) - limit (number): 1-100, default 20 - order ('asc' | 'desc'): default 'desc' - offset (string, optional): opaque cursor from a previous response's next_cursor - response_format ('markdown' | 'json'): defaul…

  • jsm_list_alertsSearch JSM alertsread-only

    Description is built at runtime.

  • jsm_list_capabilitiesList this server's toolsetsread-only

    Report every toolset this server knows about, whether it is currently loaded, and how to load one that is not. Call this before telling the user something is impossible. This server carries far more of the Jira Service Management Operations API than any one install registers — the operator chooses which families load, so an absent tool usually means "not enabled here", not "not supported". This tool tells you which of the two it is, and names the exact environment variable to change. It takes no arguments, makes no API call, and needs no credentials, so it also answers when the token is miss…

  • jsm_list_heartbeatsList heartbeats for a teamread-only

    List a team's heartbeats — the dead-man's switches that alert when an expected ping stops arriving. A heartbeat is how you learn that a job died rather than failed: something pings JSM on a schedule, and JSM alerts when the ping does not come. Args: - team_id (string): the owning team, from jsm_list_teams - name (string, optional): filter to one heartbeat by name - limit (number): 1-100, default 20 - offset (number): records to skip, default 0 - response_format ('markdown' | 'json'): default 'markdown' Returns (json format): { "heartbeats": [ { "name": string, "status": "Responsiv…

  • jsm_ping_heartbeatSend a heartbeat pingcan change or delete data

    Send a ping, resetting a heartbeat's timer and clearing it if it had expired. Args: - team_id (string): the owning team - name (string): the heartbeat to ping Returns: { "pinged": true, "name": string, "message": string } The response is only an acknowledgement — "PONG - Heartbeat received" — not the heartbeat's record. Nothing about the heartbeat's state comes back, so report that the ping was accepted rather than describing the heartbeat. The API answers PONG whether or not a heartbeat by that name exists, and answers it on sites whose plan excludes heartbeat monitoring entirely (bot…

  • jsm_remove_alert_extra_propertiesRemove key/value properties from a JSM alertcan change or delete data

    Remove properties from a JSM alert by key. Args: - alert_id (string): the full alert id (not the tinyId) - keys (string[]): the property keys to remove — keys, not values Returns: { "requestId": string, "result": string, "alert_id": string } IMPORTANT: this action is asynchronous. Verify with jsm_get_request_status using the returned requestId. A key that is not present is not an error, so a receipt here does not prove anything was removed. Read the alert back if that matters. Constraints and errors: - Needs delete:ops-alert:jira-service-management, a separate grant from write:ops-a…

  • jsm_remove_alert_tagsRemove tags from a JSM alertcan change or delete data

    Remove one or more tags from a JSM alert. Args: - alert_id (string): the full alert id (not the tinyId) - tags (string[]): the tag names to remove Returns: { "requestId": string, "result": string, "alert_id": string } IMPORTANT: this action is asynchronous. Verify with jsm_get_request_status using the returned requestId. Removal matches exactly and is case-sensitive, so removing 'DB' leaves 'db' in place. Read the alert's current tags with jsm_get_alert first rather than guessing the casing — a removal that silently matches nothing still returns a successful receipt. Constraints and e…

  • jsm_snooze_alertSnooze a JSM alert until a given time

    Silence a JSM alert's notifications until a specific instant, after which it resumes as if untouched. Snoozing is the right tool for "we know, and there is nothing to do until the maintenance window ends" — it stops the paging without pretending the alert is resolved. Closing it would remove it from the open queue and lose the fact that it is still an open problem. Args: - alert_id (string): the full alert id (not the tinyId) - end_time (string): ISO 8601 instant with an offset, e.g. "2026-09-05T18:30:00Z" Returns: { "requestId": string, "result": string, "alert_id": string } IMPORTANT…

  • jsm_unacknowledge_alertTake back an acknowledgement on a JSM alert

    Return an acknowledged JSM alert to unacknowledged, so escalation notifications resume. Use this when someone acked an alert they cannot actually work — picked it up by mistake, or got pulled onto something else — and it needs to go back into the escalation path so the next responder is paged. It does not close, snooze or reassign the alert. Args: - alert_id (string): the full alert id (not the tinyId) Returns: { "requestId": string, "result": string, "alert_id": string } IMPORTANT: this action is asynchronous. Verify with jsm_get_request_status using the returned requestId. This restar…

  • jsm_update_alert_fieldUpdate a JSM alert's priority, message or descriptioncan change or delete data

    Overwrite one field on an existing JSM alert: its priority, its message, or its description. This is how an alert gets corrected once triage knows more than the integration that raised it did — a P3 that turns out to be customer-facing, a message that says "check failed" when it should say which check, a description that should carry what has been tried. Args: - alert_id (string): the full alert id (not the tinyId) - field ('priority' | 'message' | 'description'): which field to overwrite - value (string): the new value There are no 'user' or 'source' arguments here, unlike the other …

  • jsm_update_alert_noteEdit a note on a JSM alertcan change or delete data

    Replace the text of an existing note on a JSM alert. Use it to correct a note you just wrote — a wrong hostname, a stale conclusion. Prefer adding a new note with jsm_add_alert_note for anything that reads as a development rather than a correction: the timeline is the record of what responders knew and when, and editing history out of it costs more than an extra line. Args: - alert_id (string): the full alert id (not the tinyId) - note_id (string): id of the note to edit, from jsm_list_alert_notes - note (string): the replacement text Returns the updated note: { "alert_id", "note_id",…

  • jsm_update_heartbeatUpdate a heartbeatcan change or delete data

    Change a heartbeat's interval, alert settings or enabled flag. Args: - team_id (string), name (string): which heartbeat — the name goes in the query string, not a path id - interval, interval_unit, description, enabled, alert_message, alert_priority, alert_tags Returns: { "heartbeat": { "name": string, ... } } Setting enabled=false is the reversible way to stop a heartbeat alerting — during a planned outage, say. While disabled it raises nothing however long the silence, which is easy to forget to undo. Lengthening the interval widens the window in which a dead job goes unnoticed. Say …

Signals

Stars
4
Forks
0
Open issues
1
Last commit
Sep 12, 2026 (1 month ago)
Last release
Sep 12, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.rrvrs/jira-alerts-mcp
Version
2.1.0
Auth
API key
Packages
npm jira-alerts-mcp
License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026
Cite this page

Jira Alerts (JSM Operations) MCP server. Agent Mart. https://agentmart.dev/connectors/rrvrs-jira-alerts-mcp (last updated 2026-10-24)