{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_qtdap4ggvrcu","handle":"ct-jsm-ops-mcp-server","url":"https://wellknown.network/agents/ct-jsm-ops-mcp-server","links":{"self":"https://wellknown.network/agents/ct-jsm-ops-mcp-server/record.json","html":"https://wellknown.network/agents/ct-jsm-ops-mcp-server","markdown":"https://wellknown.network/agents/ct-jsm-ops-mcp-server/record.md","api":"https://wellknown.network/api/v1/agents/ct-jsm-ops-mcp-server","status":"https://wellknown.network/api/v1/agents/ct-jsm-ops-mcp-server/status","claim":"https://wellknown.network/agents/ct-jsm-ops-mcp-server/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/ct-jsm-ops-mcp-server/claim.json","badge":"https://wellknown.network/agents/ct-jsm-ops-mcp-server/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air::server:ct-jsm-ops-mcp-server","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"ct-jsm-ops-mcp-server","summary":"CloudThinker MCP server for Jira Service Management Operations: reads JSM_* env at startup, auto-connects to the JSM ops REST API, and serves alert, on-call, and idempotent alert-lifecycle tools over stdio.","description":"# ct-jsm-ops-mcp-server\n\nCloudThinker MCP server for **Jira Service Management Operations** — alerts,\non-call schedules, and an idempotent alert lifecycle, served over stdio.\n\nReads `JSM_*` env at startup, resolves the site's `cloudId`, proves the\ncredential can actually read Operations, then serves tools. There is no\nconnect or login tool: the first tool call works.\n\n## Why this exists\n\nAtlassian's own Rovo MCP server exposes only four JSM ops tools\n(`getJsmOpsAlerts`, `getJsmOpsScheduleInfo`, `getJsmOpsTeamInfo`,\n`updateJsmOpsAlert`), and those are reachable **only under API-token auth, not\nOAuth** — which is the auth CloudThinker's `atlassian` connection uses. That\nsurface also has no alert timeline, no responder management, and no assign or\nescalate. So this is a from-scratch wrapper over the JSM ops REST API\n(`https://api.atlassian.com/jsm/ops/api/{cloudId}/v1`) plus the Jira platform\nAPI for the incident issue itself.\n\n## Environment\n\n| Env var | Required | Default | Purpose |\n|---|---|---|---|\n| `JSM_SITE_URL` | yes | — | Site origin, e.g. `https://acme.atlassian.net`. Project and board URLs are accepted and normalized back to the origin. |\n| `JSM_SITE_EMAIL` | yes | — | The Atlassian account the API token belongs to. |\n| `JSM_API_TOKEN` | yes | — | Atlassian API token from id.atlassian.com. Sent as `Authorization: Basic base64(email:token)`. |\n| `LOG_LEVEL` | no | `info` | Also mirrored into `FASTMCP_LOG_LEVEL`. |\n\n`cloudId` is **not** an input. It is resolved from `JSM_SITE_URL` via\n`/_edge/tenant_info`; it is a UUID the user has no reason to know.\n\n## Startup preflight\n\nThe server exits non-zero rather than starting when Operations is not usable,\nso the CloudThinker connection test reports the real reason instead of letting\nthe failure surface mid-incident:\n\n| Condition | Exit | Reported as |\n|---|---|---|\n| Missing env var | 2 | which var is unset |\n| Unparseable `JSM_SITE_URL` | 2 | expected form |\n| Site or `cloudId` unreachable | 1 | check the site UR…","publisher":{"name":"CloudThinker","url":null},"homepage":"https://github.com/cloudthinker/ct-jsm-ops-mcp-server","repository":"https://github.com/cloudthinker/ct-jsm-ops-mcp-server","version":"0.1.0","license":"Apache-2.0","protocols":["mcp"],"tags":["cloudthinker","incidents","jira","jira-service-management","jsm","llm","mcp","on-call","opsgenie"],"pricing":null,"endpoints":[{"url":"pypi:ct-jsm-ops-mcp-server","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","license":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"dev.project-management","name":"Project Management","confidence":1,"provenance":"declared"}],"categories":["dev","security"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"ct-jsm-ops-mcp-server","registry":"pypi","observedAt":"2026-09-09T13:22:05.359Z","publishedAt":"2026-07-31T11:17:13.608875Z","latestVersion":"0.1.0"}},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"ct-jsm-ops-mcp-server","url":"https://pypi.org/project/ct-jsm-ops-mcp-server/","firstSeenAt":"2026-09-09T13:21:00.990Z","fetchedAt":"2026-09-09T13:21:00.990Z","normalizedAt":"2026-09-09T13:21:00.990Z"}]},"firstSeenAt":"2026-09-09T13:21:00.990Z","updatedAt":"2026-09-09T13:22:05.359Z"}