Sentry
by io.github.getsentry · HTTP
Sentry by io.github.getsentry — connect via http to access its tools through your RouterMCP gateway.
Overview
Tools (14)
whoami
Identify the authenticated user in Sentry. Use this tool when you need to: - Get the user's name and email address.
schema
find_organizations
Find organizations that the user has access to in Sentry. Use this tool when you need to: - View organizations in Sentry - Find an organization's slug to aid other tool requests - Search for specific organizations by name or slug Returns up to 25 results. If you hit this limit, use the query parameter to narrow down results.
schema
find_teams
Find teams in an organization in Sentry. Use this tool when you need to: - View teams in a Sentry organization - Find a team's slug and numeric ID to aid other tool requests - Search for specific teams by name or slug Returns up to 25 results. If you hit this limit, use the query parameter to narrow down results.
schema
find_projects
Find projects in Sentry. Use this tool when you need to: - View projects in a Sentry organization - Find a project's slug to aid other tool requests - Search for specific projects by name or slug Returns up to 25 results. If you hit this limit, use the query parameter to narrow down results.
schema
find_releases
Find releases in Sentry. Use this tool when you need to: - Find recent releases in a Sentry organization - Find the most recent version released of a specific project - Determine when a release was deployed to an environment <examples> ### Find the most recent releases in the 'my-organization' organization ``` find_releases(organizationSlug='my-organization') ``` ### Find releases matching '2ce6a27' in the 'my-organization' organization ``` find_releases(organizationSlug='my-organization', query='2ce6a27') ``` </examples> <hints> - If the user passes a parameter in the form of name/otherName, its likely in the format of <organizationSlug>/<projectSlug>. </hints>
schema
get_issue_tag_values
Get tag value distribution for a specific Sentry issue. Use this tool when you need to: - Understand how an issue is distributed across different tag values - Get aggregate counts of unique tag values (e.g., 'how many unique URLs are affected') - Analyze which browsers, environments, or URLs are most impacted by an issue - View the tag distributions page data programmatically Common tag keys: - `url`: Request URLs affected by the issue - `browser`: Browser types and versions - `browser.name`: Browser names only - `os`: Operating systems - `environment`: Deployment environments (production, staging, etc.) - `release`: Software releases - `device`: Device types - `user`: Affected users <examples> ### Get URL distribution for an issue ``` get_issue_tag_values(organizationSlug='my-organization', issueId='PROJECT-123', tagKey='url') ``` ### Get browser distribution using issue URL ``` get_issue_tag_values(issueUrl='https://sentry.io/issues/PROJECT-123/', tagKey='browser') ``` ### Get environment distribution ``` get_issue_tag_values(organizationSlug='my-organization', issueId='PROJECT-123', tagKey='environment') ``` </examples> <hints> - If user provides a Sentry URL, pass the ENTIRE URL to issueUrl parameter unchanged - Common tag keys: url, browser, browser.name, os, environment, release, device, user - Tag keys are case-sensitive </hints>
schema
get_replay_details
Get high-level information about a specific Sentry replay by URL or replay ID. USE THIS TOOL WHEN USERS: - Share a replay URL - Ask what happened in a specific replay - Want a concise replay summary plus the next issue or trace lookups to run <examples> ### With replay URL ``` get_replay_details(replayUrl='https://my-organization.sentry.io/explore/replays/7e07485f-12f9-416b-8b14-26260799b51f/') ``` ### With organization and replay ID ``` get_replay_details(organizationSlug='my-organization', replayId='7e07485f-12f9-416b-8b14-26260799b51f') ``` </examples>
schema
get_event_attachment
Download attachments from a Sentry event. Use this tool when you need to: - Download files attached to a specific event - Access screenshots, log files, or other attachments uploaded with an error report - Retrieve attachment metadata and download URLs <examples> ### Download a specific attachment by ID ``` get_event_attachment(organizationSlug='my-organization', projectSlug='my-project', eventId='c49541c747cb4d8aa3efb70ca5aba243', attachmentId='12345') ``` ### List all attachments for an event ``` get_event_attachment(organizationSlug='my-organization', projectSlug='my-project', eventId='c49541c747cb4d8aa3efb70ca5aba243') ``` </examples> <hints> - If `attachmentId` is provided, the specific attachment will be downloaded as an embedded resource - If `attachmentId` is omitted, all attachments for the event will be listed with download information - The `projectSlug` is required to identify which project the event belongs to </hints>
schema
search_events
Search Sentry events and replays. Use for event counts/statistics. `query` can be natural language or Sentry search syntax. With an agent configured, it fixes dataset, query, fields, and sort before running. Supports TWO query types: 1. AGGREGATIONS (counts, sums, averages): 'how many errors', 'total tokens' 2. Individual events with timestamps: 'error logs from last hour' Datasets: - errors: Exception/crash events with stack traces, usually grouped into issues - logs: Application log entries, including error-severity log messages - spans: Raw trace/span events for performance, AI/LLM calls, requests, and operations - metrics: Metric rows and aggregates: counters, gauges, distributions, values - profiles: Transaction/continuous profile results, profile IDs, profiled transactions - replays: Session replay results: rage clicks, dead clicks, visited pages, replay users If the user says logs, log messages, error logs, or warning logs, choose logs instead of errors. Replay searches return replay lists only; replay count()/avg()/sum() are not supported. DO NOT USE for grouped issue lists → use search_issues <examples> search_events(organizationSlug='my-org', query='how many errors today') search_events(organizationSlug='my-org', dataset='errors', query='level:error') search_events(organizationSlug='my-org', dataset='errors', fields=['issue', 'count()'], sort='-count()') search_events(organizationSlug='my-org', dataset='spans', query='span.op:db', sort='-span.duration') search_events(organizationSlug='my-org', dataset='replays', query='count_errors:>0', sort='-count_errors') </examples> <hints> - If the user passes a parameter in the form of name/otherName, it's likely in the format of <organizationSlug>/<projectSlug>. - Parse org/project notation directly without calling find_organizations or find_projects. - Use fields with aggregate functions like count(), avg(), sum() for statistics - Sort by -count() for most common, -timestamp for newest </hints>
schema
analyze_issue_with_seer
Use Seer to analyze production errors and get detailed root cause analysis with specific code fixes. Use this tool when: - The user explicitly asks for root cause analysis, Seer analysis, or help fixing/debugging an issue - You are unable to accurately determine the root cause from the issue details alone Do NOT call this tool as an automatic follow-up to get_sentry_resource. What this tool provides: - Root cause analysis with code-level explanations - Specific file locations and line numbers where errors occur - Concrete code fixes you can apply - Step-by-step implementation guidance This tool automatically: 1. Checks if analysis already exists (instant results) 2. Starts new AI analysis if needed (~2-5 minutes) 3. Returns complete fix recommendations <examples> ### User: "Run Seer on this issue" ``` analyze_issue_with_seer(issueUrl='https://my-org.sentry.io/issues/PROJECT-1Z43') ``` ### User: "Analyze this issue and suggest a fix" ``` analyze_issue_with_seer(organizationSlug='my-organization', issueId='ERROR-456') ``` </examples> <hints> - Only use when the user explicitly requests analysis or you cannot determine the root cause from issue details alone - If the user provides an issueUrl, extract it and use that parameter alone - The analysis includes actual code snippets and fixes, not just error descriptions - Results are cached - subsequent calls return instantly </hints>
schema
search_issues
Search for grouped issues/problems in Sentry - returns a LIST of issues, NOT counts or aggregations. Provide `query` as natural language or Sentry issue search syntax. When an embedded agent is configured, it fixes query and sort before running. Returns grouped issues with metadata like title, status, and user count. Common Query Syntax: - is:unresolved / is:resolved / is:ignored - level:error / level:warning - firstSeen:-24h / lastSeen:-7d - assigned:me / assignedOrSuggested:me - issueCategory:feedback - environment:production - userCount:>100 DO NOT USE FOR COUNTS/AGGREGATIONS → use search_events DO NOT USE FOR individual events with timestamps → use search_events DO NOT USE FOR details about a specific issue → use get_sentry_resource <examples> search_issues(organizationSlug='my-org', query='critical bugs from last week') search_issues(organizationSlug='my-org', query='is:unresolved is:unassigned', sort='freq') search_issues(organizationSlug='my-org', query='level:error firstSeen:-24h', projectSlugOrId='my-project') </examples> <hints> - If the user passes a parameter in the form of name/otherName, it's likely in the format of <organizationSlug>/<projectSlugOrId>. - Parse org/project notation directly without calling find_organizations or find_projects. - The projectSlugOrId parameter accepts both project slugs (e.g., 'my-project') and numeric IDs (e.g., '123456'). </hints>
schema
search_issue_events
Search and filter events within a specific issue. Provide `query` as natural language or Sentry event search syntax. When an embedded agent is configured, it fixes filters, fields, sort, and time range before running. The tool automatically constrains results to the specified issue. Common Query Filters: - environment:production - Filter by environment - release:1.0.0 - Filter by release version - user.email:alice@example.com - Filter by user - trace:TRACE_ID - Filter by trace ID For cross-issue searches use search_issues. For single issue or event details use get_sentry_resource. <examples> search_issue_events(issueId='MCP-41', organizationSlug='my-org', query='from last hour') search_issue_events(issueId='MCP-41', organizationSlug='my-org', query='environment:production') search_issue_events(issueUrl='https://sentry.io/.../issues/123/', query='release:v1.0.0', statsPeriod='7d') </examples>
schema
get_profile_details
Inspect a specific Sentry profile in detail. USE THIS TOOL WHEN: - User shares a transaction profile URL and wants the details - User has a profile ID and wants a concise summary plus raw sample structure - User needs to inspect a continuous profile session by profiler ID and time range RETURNS: - Transaction profile summary with profile URL, transaction, trace, release, and runtime details - Sample structure summaries such as frame count, sample count, stacks, and thread breakdown - Top frames by occurrence for a quick hotspot overview NOTE: This tool supports two profile modes. - Transaction profiles: pass `profileUrl` or `organizationSlug` + `projectSlugOrId` + `profileId` - Continuous profiles: pass `profileUrl` or `organizationSlug` + `projectSlugOrId` + `profilerId` + `start` + `end` <examples> ### Transaction profile URL ``` get_profile_details( profileUrl='https://my-org.sentry.io/explore/profiling/profile/backend/cfe78a5c892d4a64a962d837673398d2/flamegraph/' ) ``` ### Transaction profile by ID ``` get_profile_details( organizationSlug='my-org', projectSlugOrId='backend', profileId='cfe78a5c892d4a64a962d837673398d2' ) ``` ### Continuous profile by session ``` get_profile_details( organizationSlug='my-org', projectSlugOrId='backend', profilerId='041bde57b9844e36b8b7e5734efae5f7', start='2024-01-01T00:00:00Z', end='2024-01-01T01:00:00Z' ) ``` </examples>
schema
get_sentry_resource
Fetch a Sentry resource by URL or by type and ID. Supports issues, events, traces, spans, replays, and breadcrumbs. Trace lookups return a condensed overview by default. For `resourceType='span'`, pass `resourceId` as `<traceId>:<spanId>`. <examples> ### From a Sentry URL get_sentry_resource(url='https://sentry.io/issues/PROJECT-123/') ### Breadcrumbs from a Sentry URL get_sentry_resource(url='https://sentry.io/issues/PROJECT-123/', resourceType='breadcrumbs') ### By type and ID get_sentry_resource(resourceType='issue', organizationSlug='my-org', resourceId='PROJECT-123') ### Span by trace and span ID get_sentry_resource(resourceType='span', organizationSlug='my-org', resourceId='a4d1aae7216b47ff8117cf4e09ce9d0a:aa8e7f3384ef4ff5') ### Replay by ID get_sentry_resource(resourceType='replay', organizationSlug='my-org', resourceId='7e07485f-12f9-416b-8b14-26260799b51f') </examples>