{
  "server": "sentry",
  "url": "https://mcp.sentry.dev/mcp",
  "date": "2026-09-30",
  "protocolVersion": "2026-07-28",
  "serverInfo": {
    "name": "Sentry MCP",
    "version": "0.42.0"
  },
  "listChangedDeclared": true,
  "toolCount": 9,
  "outputSchemaCoveragePct": 33.33,
  "tools": [
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "description": "Use Seer to analyze production errors and get detailed root cause analysis with specific code fixes.\n\nUse this tool when:\n- The user explicitly asks for root cause analysis, Seer analysis, or help fixing/debugging an issue\n- You are unable to accurately determine the root cause from the issue details alone\n\nDo NOT call this tool as an automatic follow-up to get_sentry_resource.\n\nWhat this tool provides:\n- Root cause analysis with code-level explanations\n- Specific file locations and line numbers where errors occur\n- Concrete code fixes you can apply\n- Step-by-step implementation guidance\n\nThis tool automatically:\n1. Checks if analysis already exists (instant results)\n2. Starts new AI analysis if needed (~2-5 minutes)\n3. Returns complete fix recommendations\n\n\u003cexamples\u003e\n### User: \"Run Seer on this issue\"\n\n```\nanalyze_issue_with_seer(issueUrl='https://my-org.sentry.io/issues/PROJECT-1Z43')\n```\n\n### User: \"Analyze this issue and suggest a fix\"\n\n```\nanalyze_issue_with_seer(organizationSlug='my-organization', issueId='ERROR-456')\n```\n\u003c/examples\u003e\n\n\u003chints\u003e\n- Only use when the user explicitly requests analysis or you cannot determine the root cause from issue details alone\n- Seer Autofix does not support metric alert issues (issueCategory: metric); use get_issue_details and search_events instead\n- If the user provides an issueUrl, extract it and use that parameter alone\n- The analysis includes actual code snippets and fixes, not just error descriptions\n- Results are cached - subsequent calls return instantly\n\u003c/hints\u003e",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "instruction": {
            "description": "Optional custom instruction for the AI analysis",
            "type": "string"
          },
          "issueId": {
            "description": "The Issue ID. e.g. `PROJECT-1Z43`",
            "type": "string"
          },
          "issueUrl": {
            "description": "The URL of the issue. e.g. https://my-organization.sentry.io/issues/PROJECT-1Z43",
            "format": "uri",
            "type": "string"
          },
          "organizationSlug": {
            "description": "The organization's slug. You can find a existing list of organizations you have access to using the `find_organizations()` tool.",
            "type": "string"
          },
          "regionUrl": {
            "anyOf": [
              {
                "description": "The region URL for the organization you're querying, if known. For Sentry's Cloud Service (sentry.io), this is typically the region-specific URL like 'https://us.sentry.io'. For self-hosted Sentry installations, this parameter is usually not needed and should be omitted. You can find the correct regionUrl from the organization details using the `find_organizations()` tool.",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "name": "analyze_issue_with_seer"
    },
    {
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "description": "Execute an available Sentry MCP tool discovered through search_sentry_tools.\n\nUse this tool when you need to:\n- Call a Sentry operation returned by search_sentry_tools\n- Execute a tool by name using arguments that match its returned schema\n\n\u003cexamples\u003e\nexecute_sentry_tool(name='find_projects', arguments={ organizationSlug: 'my-org' })\nexecute_sentry_tool(name='whoami', arguments={})\n\u003c/examples\u003e\n\n\u003chints\u003e\n- Use search_sentry_tools first if you are not sure which name or arguments to pass.\n- Arguments are validated against the target tool's schema before execution.\n- Active organization, project, and region constraints are injected automatically.\n\u003c/hints\u003e",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "arguments": {
            "additionalProperties": {},
            "default": {},
            "description": "Arguments for the target tool, matching the schema returned by search_sentry_tools.",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          },
          "name": {
            "description": "The name of the available tool to execute.",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "execute_sentry_tool"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": true
      },
      "description": "Find organizations that the user has access to in Sentry.\n\nUse this tool when you need to:\n- View organizations in Sentry\n- Find an organization's slug to aid other tool requests\n- Search for specific organizations by name or slug\n\nReturns up to 25 results. If you hit this limit, use the query parameter to narrow down results.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "query": {
            "anyOf": [
              {
                "description": "Search query to filter results by name or slug. Use this to narrow down results when there are many items.",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "type": "object"
      },
      "name": "find_organizations",
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "hasMore": {
            "type": "boolean"
          },
          "organizations": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "regionUrl": {
                  "anyOf": [
                    {
                      "format": "uri",
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "slug": {
                  "type": "string"
                },
                "webUrl": {
                  "anyOf": [
                    {
                      "format": "uri",
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "slug",
                "webUrl",
                "regionUrl"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "organizations",
          "hasMore"
        ],
        "type": "object"
      }
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": true
      },
      "description": "Find projects in Sentry.\n\nUse this tool when you need to:\n- View projects in a Sentry organization\n- Find a project's slug to aid other tool requests\n- Search for specific projects by name or slug\n\nReturns up to 25 results. When hasMore is true, use the query parameter to narrow down results.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "organizationSlug": {
            "description": "The organization's slug. You can find a existing list of organizations you have access to using the `find_organizations()` tool.",
            "type": "string"
          },
          "query": {
            "anyOf": [
              {
                "description": "Search query to filter results by name or slug. Use this to narrow down results when there are many items.",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "regionUrl": {
            "anyOf": [
              {
                "description": "The region URL for the organization you're querying, if known. For Sentry's Cloud Service (sentry.io), this is typically the region-specific URL like 'https://us.sentry.io'. For self-hosted Sentry installations, this parameter is usually not needed and should be omitted. You can find the correct regionUrl from the organization details using the `find_organizations()` tool.",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "required": [
          "organizationSlug"
        ],
        "type": "object"
      },
      "name": "find_projects",
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "hasMore": {
            "type": "boolean"
          },
          "projects": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "slug": {
                  "type": "string"
                }
              },
              "required": [
                "slug"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "projects",
          "hasMore"
        ],
        "type": "object"
      }
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": true
      },
      "description": "Fetch a Sentry resource by URL, or by resourceType plus resourceId.\nPass a Sentry URL directly when possible; the resource type is auto-detected.\n\nSupports issues, events, traces, spans, agent conversations, replays, monitors, preprod snapshots, and snapshot images.\nTrace lookups return a condensed overview by default.\n\nAgent Conversations: A conversation is a set of spans sharing the same gen_ai.conversation.id. Use resourceType='ai_conversation' with a conversation ID, or pass a Sentry conversation URL, to fetch the transcript/details. To discover or list conversations, use search_agent_conversations. Conversations are NOT issues — do not use search_issues for conversation queries.\n\nFor preprod snapshot URLs (matching 'sentry.io/preprod/snapshots/'):\n- Without ?selectedSnapshot=: returns the snapshot diff summary (changed, added, removed images)\n- With ?selectedSnapshot=\u003cimage_file_name\u003e: returns the image preview and metadata. Use the Sentry tool `get_snapshot_image` for full-resolution image bytes.\n\nResource IDs:\n- monitor: \u003cmonitorSlug\u003e\n- snapshot: \u003csnapshotId\u003e\n\n\u003cexamples\u003e\nget_sentry_resource(url='https://sentry.io/issues/PROJECT-123/')\nget_sentry_resource(resourceType='issue', organizationSlug='my-org', resourceId='PROJECT-123')\nget_sentry_resource(resourceType='ai_conversation', organizationSlug='my-org', resourceId='conversation-123')\nget_sentry_resource(url='https://sentry.sentry.io/preprod/snapshots/123/')\nget_sentry_resource(url='https://sentry.sentry.io/preprod/snapshots/123/?selectedSnapshot=login_screen.png')\n\u003c/examples\u003e",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "organizationSlug": {
            "description": "The organization's slug. You can find a existing list of organizations you have access to using the `find_organizations()` tool.",
            "type": "string"
          },
          "resourceId": {
            "description": "Resource identifier: issue shortId (e.g., 'PROJECT-123'), event ID, trace ID, agent conversation ID, replay ID, monitor slug when inspect monitor tools are available, or snapshot artifact ID. Required when not using a URL.",
            "type": "string"
          },
          "resourceType": {
            "description": "Resource type. With a URL, can override a span-focused trace URL with `trace`. Use `monitor` with a monitor slug only when inspect monitor tools are available or `snapshot` with a snapshot artifact ID.",
            "enum": [
              "issue",
              "event",
              "trace",
              "ai_conversation",
              "replay",
              "monitor",
              "snapshot"
            ],
            "type": "string"
          },
          "url": {
            "description": "Sentry URL. The resource type is auto-detected from the URL pattern.",
            "format": "uri",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_sentry_resource"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": true
      },
      "description": "Search Sentry events and replays. Use for event counts/statistics.\n\n`query` is natural language or Sentry search syntax; a configured agent fixes dataset, query, fields, and sort.\n\nSupports THREE query types:\n1. AGGREGATIONS (counts, sums, averages): 'how many errors', 'total tokens'\n2. Individual events with timestamps: 'error logs from last hour'\n3. TIME SERIES (metric over time): 'errors per hour', 'error trend over time'\n\nDatasets:\n- errors: Exception/crash events with stack traces, usually grouped into issues\n- logs: Application log entries, including error-severity log messages\n- spans: Raw trace/span events for performance, AI/LLM calls, requests, and operations\n- metrics: Metric rows and aggregates: counters, gauges, distributions, values\n- profiles: Transaction/continuous profile results, profile IDs, profiled transactions\n- replays: Session replay results: rage clicks, dead clicks, visited pages, replay users\nIf the user says logs, log messages, error logs, or warning logs, choose logs instead of errors.\n\nReplay searches return replay lists only; replay count()/avg()/sum() are not supported.\n\nNOT for grouped issue lists (use search_issues) or app screenshots/images (use get_latest_base_snapshot).\n\n\u003cexamples\u003e\nsearch_events(organizationSlug='my-org', query='how many errors today')\nsearch_events(organizationSlug='my-org', dataset='errors', fields=['issue', 'count()'], sort='-count()')\nsearch_events(organizationSlug='my-org', query='errors per hour last 24h')\nsearch_events(organizationSlug='my-org', dataset='spans', query='span.op:db', sort='-span.duration')\nsearch_events(organizationSlug='my-org', dataset='replays', query='count_errors:\u003e0', sort='-count_errors')\n\u003c/examples\u003e\n\n\u003chints\u003e\n- name/otherName notation means \u003corganizationSlug\u003e/\u003cprojectSlug\u003e; parse it directly, don't call find_organizations/find_projects.\n- Use fields with aggregate functions like count(), avg(), sum() for statistics\n- Sort by -count() for most common, -timestamp for newest\n\u003c/hints\u003e",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "dataset": {
            "description": "Initial dataset hint: errors, logs, spans, metrics, profiles, or replays. The agent may correct this when configured.",
            "enum": [
              "spans",
              "errors",
              "logs",
              "metrics",
              "profiles",
              "replays"
            ],
            "type": "string"
          },
          "environment": {
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "items": {
                  "minLength": 1,
                  "type": "string"
                },
                "minItems": 1,
                "type": "array"
              }
            ],
            "description": "Optional environment filter for dataset='replays'. Use a string for one environment or an array for multiple. Omit when unused. For other datasets, filter environment in the query string instead."
          },
          "fields": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Fields to return for event datasets. If not specified, uses sensible defaults. Include aggregate functions like count(), avg() for statistics. Leave null for dataset='replays'."
          },
          "includeExplanation": {
            "default": false,
            "description": "Include explanation of how the query was translated or repaired",
            "type": "boolean"
          },
          "limit": {
            "default": 10,
            "description": "Maximum number of results to return (1-100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "organizationSlug": {
            "description": "The organization's slug. You can find a existing list of organizations you have access to using the `find_organizations()` tool.",
            "type": "string"
          },
          "period": {
            "description": "Relative time window, such as `24h`, `7d`, `14d`, `30d`, or `90d`. Controls which records fall within the search window.",
            "pattern": "^\\d+[hdw]$",
            "type": "string"
          },
          "projectSlug": {
            "anyOf": [
              {
                "description": "The project's slug. You can find a list of existing projects in an organization using the `find_projects()` tool.",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "query": {
            "description": "Natural language or Sentry event search query syntax.",
            "type": "string"
          },
          "regionUrl": {
            "anyOf": [
              {
                "description": "The region URL for the organization you're querying, if known. For Sentry's Cloud Service (sentry.io), this is typically the region-specific URL like 'https://us.sentry.io'. For self-hosted Sentry installations, this parameter is usually not needed and should be omitted. You can find the correct regionUrl from the organization details using the `find_organizations()` tool.",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "sort": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Sort field (prefix with - for descending). If omitted, event datasets default to -timestamp and replays default to -started_at. Use -count() for event aggregations. For dataset='replays', use replay sorts like -started_at or -count_errors."
          }
        },
        "required": [
          "organizationSlug"
        ],
        "type": "object"
      },
      "name": "search_events"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": true
      },
      "description": "Search for grouped issues/problems in Sentry - returns a LIST of issues, NOT counts or aggregations.\n\nProvide `query` as natural language or Sentry issue search syntax. When an embedded agent is configured, it fixes query and sort before running while preserving explicit Sentry search syntax.\n\nReturns grouped issues with metadata like title, status, and user count.\n\nCommon Query Syntax:\n- is:unresolved / is:resolved / is:ignored / is:for_review / is:new / is:regressed / is:escalating\n- level:error / level:warning\n- firstSeen:-24h / lastSeen:-7d\n- assigned:me / assigned_or_suggested:me\n- release:latest\n- issue.category:feedback\n- issue.priority:high\n- environment:production\n- userCount:\u003e100\n\nDO NOT USE FOR COUNTS/AGGREGATIONS → use search_events\nDO NOT USE FOR individual events with timestamps → use search_events\nDO NOT USE FOR details about a specific issue → use get_sentry_resource\n\n\u003cexamples\u003e\nsearch_issues(organizationSlug='my-org', query='critical bugs from last week')\nsearch_issues(organizationSlug='my-org', query='is:unresolved is:unassigned', sort='freq')\nsearch_issues(organizationSlug='my-org', query='level:error firstSeen:-24h', projectSlugOrId='my-project')\n\u003c/examples\u003e\n\n\u003chints\u003e\n- If the user passes a parameter in the form of name/otherName, it's likely in the format of \u003corganizationSlug\u003e/\u003cprojectSlugOrId\u003e.\n- Parse org/project notation directly without calling find_organizations or find_projects.\n- The projectSlugOrId parameter accepts both project slugs (e.g., 'my-project') and numeric IDs (e.g., '123456').\n\u003c/hints\u003e",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "includeExplanation": {
            "default": false,
            "description": "Include explanation of how the query was translated or repaired",
            "type": "boolean"
          },
          "limit": {
            "default": 10,
            "description": "Maximum number of issues to return (1-100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "organizationSlug": {
            "description": "The organization's slug. You can find a existing list of organizations you have access to using the `find_organizations()` tool.",
            "type": "string"
          },
          "period": {
            "default": "30d",
            "description": "Time window for issue search results. Controls which issues are returned based on when they had activity. Default 30d is a balance between coverage and query performance; use 24h for very recent issues or 90d for broader historical searches.",
            "enum": [
              "24h",
              "7d",
              "14d",
              "30d",
              "90d"
            ],
            "type": "string"
          },
          "projectSlugOrId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The project's slug or numeric ID (optional)"
          },
          "query": {
            "default": "is:unresolved",
            "description": "Natural language or Sentry issue search query syntax.",
            "type": "string"
          },
          "regionUrl": {
            "anyOf": [
              {
                "description": "The region URL for the organization you're querying, if known. For Sentry's Cloud Service (sentry.io), this is typically the region-specific URL like 'https://us.sentry.io'. For self-hosted Sentry installations, this parameter is usually not needed and should be omitted. You can find the correct regionUrl from the organization details using the `find_organizations()` tool.",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "sort": {
            "default": "date",
            "description": "Sort order: date (last seen), freq (frequency), new (first seen), user (user count), recommended (Sentry's prioritized ranking)",
            "enum": [
              "date",
              "freq",
              "new",
              "user",
              "recommended"
            ],
            "type": "string"
          }
        },
        "required": [
          "organizationSlug"
        ],
        "type": "object"
      },
      "name": "search_issues"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "Search the available Sentry MCP tool catalog by name and description.\n\nMany Sentry operations are intentionally not exposed as top-level tools. Use this for any Sentry-related task when you do not see an obvious direct tool, including long-tail inspection, project management, documentation lookup, preprod snapshots, attachments, DSNs, releases, teams, and issue-specific pivots.\n\nUse this tool when you need to:\n- Find the right Sentry operation for a task\n- Discover catalog tools and their schemas for a task\n- Inspect the executable JSON input schema for an available tool\n\n\u003cexamples\u003e\nsearch_sentry_tools(query='list projects')\nsearch_sentry_tools(query='issue details')\nsearch_sentry_tools(query='find dsn', limit=5)\nsearch_sentry_tools(query='snapshot image')\n\u003c/examples\u003e\n\n\u003chints\u003e\n- Results only include tools available in the current session.\n- If a Sentry operation is not listed as a direct tool, search here before deciding it is unavailable.\n- Returned schemas already account for active organization, project, and region constraints.\n- Use the returned name and schema when executing a catalog result.\n- This tool returns structured JSON. Do not parse markdown from its text content.\n\u003c/hints\u003e",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "limit": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "maximum": 20,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": 8,
            "description": "Maximum number of matching tools to return, up to 20."
          },
          "query": {
            "description": "Natural language keywords describing the Sentry operation, resource, or workflow to find.",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "search_sentry_tools",
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "query": {
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "annotations": {
                  "additionalProperties": false,
                  "properties": {
                    "destructiveHint": {
                      "type": "boolean"
                    },
                    "idempotentHint": {
                      "type": "boolean"
                    },
                    "openWorldHint": {
                      "type": "boolean"
                    },
                    "readOnlyHint": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "description": {
                  "type": "string"
                },
                "inputSchema": {
                  "additionalProperties": {},
                  "description": "JSON Schema for the matching tool's arguments. Session-constrained parameters are omitted.",
                  "propertyNames": {
                    "type": "string"
                  },
                  "type": "object"
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "name",
                "description",
                "inputSchema",
                "annotations"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "query",
          "results"
        ],
        "type": "object"
      }
    },
    {
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "description": "Update a Sentry issue's status or assignment.\n\nUse this to resolve, reopen, assign, unassign, or ignore an issue.\n\n\u003cexamples\u003e\n```\nupdate_issue(organizationSlug='my-org', issueId='PROJECT-123', status='resolved')\nupdate_issue(organizationSlug='my-org', issueId='PROJECT-123', assignedTo='user:123456')\nupdate_issue(organizationSlug='my-org', issueId='PROJECT-123', assignedTo=null)\nupdate_issue(organizationSlug='my-org', issueId='PROJECT-123', status='ignored')\nupdate_issue(organizationSlug='my-org', issueId='PROJECT-123', status='ignored', ignoreMode='forever')\nupdate_issue(organizationSlug='my-org', issueId='PROJECT-123', status='ignored', ignoreMode='untilOccurrenceCount', ignoreCount=100, ignoreWindowMinutes=60)\nupdate_issue(organizationSlug='my-org', issueId='PROJECT-123', status='ignored', reason='Ignoring because this is expected noise from the staging deploy')\n```\n\u003c/examples\u003e\n\n\u003chints\u003e\n- Provide `issueUrl` or `organizationSlug` + `issueId`.\n- At least one of `status` or `assignedTo` is required.\n- Omit `assignedTo` to leave assignment unchanged. Pass `null` to unassign; otherwise use `user:ID` or `team:ID_OR_SLUG`.\n- Use `execute_sentry_tool(name='whoami', arguments={})` to find your user ID for self-assignment.\n- Status values: `resolved`, `resolvedInNextRelease`, `unresolved`, `ignored`.\n- `status='ignored'` defaults to `ignoreMode='untilEscalating'`.\n- Ignore modes: `untilEscalating`, `forever`, `forDuration`, `untilOccurrenceCount`, `untilUserCount`.\n- Matching ignore inputs are `ignoreDurationMinutes`, `ignoreCount` + optional `ignoreWindowMinutes`, or `ignoreUserCount` + optional `ignoreUserWindowMinutes`.\n- To switch an already ignored issue between `untilEscalating`, `forever`, and condition-based ignore modes, first set `status='unresolved'`, then ignore it again with the new rule.\n- `reason` is optional. When provided, it will be posted as a comment on the issue's activity feed explaining why the action was taken.\n\u003c/hints\u003e",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "assignedTo": {
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The assignee in format 'user:ID' or 'team:ID_OR_SLUG' where ID is numeric. Pass null to unassign the issue. Example: 'user:123456', 'team:789', or 'team:my-team-slug'. Use `execute_sentry_tool(name='whoami', arguments={})` to find your user ID."
          },
          "ignoreCount": {
            "description": "How many times the issue must occur before it stops being ignored when ignoreMode is 'untilOccurrenceCount'.",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "type": "integer"
          },
          "ignoreDurationMinutes": {
            "description": "How many minutes to ignore the issue when ignoreMode is 'forDuration'.",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "type": "integer"
          },
          "ignoreMode": {
            "description": "How ignored issues should behave. Use 'untilEscalating' to match the Sentry UI default, 'forever' for a permanent ignore, 'forDuration' with ignoreDurationMinutes, 'untilOccurrenceCount' with ignoreCount and optional ignoreWindowMinutes, or 'untilUserCount' with ignoreUserCount and optional ignoreUserWindowMinutes.",
            "enum": [
              "untilEscalating",
              "forever",
              "forDuration",
              "untilOccurrenceCount",
              "untilUserCount"
            ],
            "type": "string"
          },
          "ignoreUserCount": {
            "description": "How many users must be affected before the issue stops being ignored when ignoreMode is 'untilUserCount'.",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "type": "integer"
          },
          "ignoreUserWindowMinutes": {
            "description": "Optional time window in minutes for ignoreUserCount. If omitted, Sentry counts all future affected users.",
            "exclusiveMinimum": 0,
            "maximum": 10080,
            "type": "integer"
          },
          "ignoreWindowMinutes": {
            "description": "Optional time window in minutes for ignoreCount. If omitted, Sentry counts all future occurrences.",
            "exclusiveMinimum": 0,
            "maximum": 10080,
            "type": "integer"
          },
          "issueId": {
            "description": "The Issue ID. e.g. `PROJECT-1Z43`",
            "type": "string"
          },
          "issueUrl": {
            "description": "The URL of the issue. e.g. https://my-organization.sentry.io/issues/PROJECT-1Z43",
            "format": "uri",
            "type": "string"
          },
          "organizationSlug": {
            "description": "The organization's slug. You can find a existing list of organizations you have access to using the `find_organizations()` tool.",
            "type": "string"
          },
          "reason": {
            "description": "Optional reason for taking this action. When provided, it will be posted as a comment on the issue's activity feed.",
            "minLength": 1,
            "type": "string"
          },
          "regionUrl": {
            "anyOf": [
              {
                "description": "The region URL for the organization you're querying, if known. For Sentry's Cloud Service (sentry.io), this is typically the region-specific URL like 'https://us.sentry.io'. For self-hosted Sentry installations, this parameter is usually not needed and should be omitted. You can find the correct regionUrl from the organization details using the `find_organizations()` tool.",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "status": {
            "description": "The new status for the issue. Valid values are 'resolved', 'resolvedInNextRelease', 'unresolved', and 'ignored'.",
            "enum": [
              "resolved",
              "resolvedInNextRelease",
              "unresolved",
              "ignored"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "update_issue"
    }
  ],
  "expanded": {
    "strategy": "none",
    "completeness": "none",
    "reason": "credentialed: the watch expands only public, unauthenticated servers (Idan, 2026-09-17)",
    "meta_tools": [
      "search_sentry_tools",
      "execute_sentry_tool"
    ],
    "tools": [],
    "via": {}
  }
}
