whoami
Identify the authenticated user in Sentry.
Use this tool when you need to:
- Get the user's name and email address.
Try it
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.
Try it
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 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.
Try it
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.
Try it
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>
Try it
get_issue_details
Get detailed information about a specific Sentry issue by ID.
USE THIS TOOL WHEN USERS:
- Provide a specific issue ID (e.g., 'CLOUDFLARE-MCP-41', 'PROJECT-123')
- Ask to 'explain [ISSUE-ID]', 'tell me about [ISSUE-ID]'
- Want details/stacktrace/analysis for a known issue
- Provide a Sentry issue URL
DO NOT USE for:
- General searching or listing issues (use search_issues)
- Root cause analysis (use analyze_issue_with_seer)
TRIGGER PATTERNS:
- 'Explain ISSUE-123' → use get_issue_details
- 'Tell me about PROJECT-456' → use get_issue_details
- 'What happened in [issue URL]' → use get_issue_details
<examples>
### With Sentry URL (recommended - simplest approach)
```
get_issue_details(issueUrl='https://sentry.sentry.io/issues/6916805731/?project=4509062593708032&query=is%3Aunresolved')
```
### With issue ID and organization
```
get_issue_details(organizationSlug='my-organization', issueId='CLOUDFLARE-MCP-41')
```
### With event ID and organization
```
get_issue_details(organizationSlug='my-organization', eventId='c49541c747cb4d8aa3efb70ca5aba243')
```
</examples>
<hints>
- **IMPORTANT**: If user provides a Sentry URL, pass the ENTIRE URL to issueUrl parameter unchanged
- When using issueUrl, all other parameters are automatically extracted - don't provide them separately
- If using issueId (not URL), then organizationSlug is required
</hints>
Try it
get_trace_details
Get detailed information about a specific Sentry trace by ID.
USE THIS TOOL WHEN USERS:
- Provide a specific trace ID (e.g., 'a4d1aae7216b47ff8117cf4e09ce9d0a')
- Ask to 'show me trace [TRACE-ID]', 'explain trace [TRACE-ID]'
- Want high-level overview and link to view trace details in Sentry
- Need trace statistics and span breakdown
DO NOT USE for:
- General searching for traces (use search_events with trace queries)
- Individual span details (this shows trace overview)
TRIGGER PATTERNS:
- 'Show me trace abc123' → use get_trace_details
- 'Explain trace a4d1aae7216b47ff8117cf4e09ce9d0a' → use get_trace_details
- 'What is trace [trace-id]' → use get_trace_details
<examples>
### Get trace overview
```
get_trace_details(organizationSlug='my-organization', traceId='a4d1aae7216b47ff8117cf4e09ce9d0a')
```
</examples>
<hints>
- Trace IDs are 32-character hexadecimal strings
</hints>
Try it
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>
Try it
update_issue
Update an issue's status or assignment in Sentry. This allows you to resolve, ignore, or reassign issues.
Use this tool when you need to:
- Resolve an issue that has been fixed
- Assign an issue to a team member or team for investigation
- Mark an issue as ignored to reduce noise
- Reopen a resolved issue by setting status to 'unresolved'
<examples>
### Resolve an issue
```
update_issue(organizationSlug='my-organization', issueId='PROJECT-123', status='resolved')
```
### Assign an issue to a user (use whoami to get your user ID)
```
update_issue(organizationSlug='my-organization', issueId='PROJECT-123', assignedTo='user:123456')
```
### Assign an issue to a team
```
update_issue(organizationSlug='my-organization', issueId='PROJECT-123', assignedTo='team:789')
```
### Mark an issue as ignored
```
update_issue(organizationSlug='my-organization', issueId='PROJECT-123', status='ignored')
```
</examples>
<hints>
- If the user provides the `issueUrl`, you can ignore the other required parameters and extract them from the URL.
- At least one of `status` or `assignedTo` must be provided to update the issue.
- assignedTo format: Use 'user:ID' for users (e.g., 'user:123456') or 'team:ID' for teams (e.g., 'team:789')
- To find your user ID, first use the whoami tool which returns your numeric user ID
- Valid status values are: 'resolved', 'resolvedInNextRelease', 'unresolved', 'ignored'.
</hints>
Try it
search_events
Search for events AND perform counts/aggregations - the ONLY tool for statistics and counts.
Supports TWO query types:
1. AGGREGATIONS (counts, sums, averages): 'how many errors', 'count of issues', 'total tokens'
2. Individual events with timestamps: 'show me error logs from last hour'
USE THIS FOR ALL COUNTS/STATISTICS:
- 'how many errors today' → returns count
- 'count of database failures' → returns count
- 'total number of issues' → returns count
- 'average response time' → returns avg()
- 'sum of tokens used' → returns sum()
ALSO USE FOR INDIVIDUAL EVENTS:
- 'error logs from last hour' → returns event list
- 'database errors with timestamps' → returns event list
- 'trace spans for slow API calls' → returns span list
Dataset Selection (AI automatically chooses):
- errors: Exception/crash events
- logs: Log entries
- spans: Performance data, AI/LLM calls, token usage
DO NOT USE for grouped issue lists → use search_issues
<examples>
search_events(organizationSlug='my-org', naturalLanguageQuery='how many errors today')
search_events(organizationSlug='my-org', naturalLanguageQuery='count of database failures this week')
search_events(organizationSlug='my-org', naturalLanguageQuery='total tokens used by model')
search_events(organizationSlug='my-org', naturalLanguageQuery='error logs from the last hour')
</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.
</hints>
Try it
create_team
Create a new team in Sentry.
USE THIS TOOL WHEN USERS WANT TO:
- 'Create a new team'
- 'Set up a team called [X]'
- 'I need a team for my project'
Be careful when using this tool!
<examples>
### Create a new team
```
create_team(organizationSlug='my-organization', name='the-goats')
```
</examples>
<hints>
- If any parameter is ambiguous, you should clarify with the user what they meant.
</hints>
Try it
create_project
Create a new project in Sentry (includes DSN automatically).
USE THIS TOOL WHEN USERS WANT TO:
- 'Create a new project'
- 'Set up a project for [app/service] with team [X]'
- 'I need a new Sentry project'
- Create project AND need DSN in one step
DO NOT USE create_dsn after this - DSN is included in output.
Be careful when using this tool!
<examples>
### Create new project with team
```
create_project(organizationSlug='my-organization', teamSlug='my-team', name='my-project', platform='javascript')
```
</examples>
<hints>
- If the user passes a parameter in the form of name/otherName, its likely in the format of <organizationSlug>/<teamSlug>.
- If any parameter is ambiguous, you should clarify with the user what they meant.
</hints>
Try it
update_project
Update project settings in Sentry, such as name, slug, platform, and team assignment.
Be careful when using this tool!
Use this tool when you need to:
- Update a project's name or slug to fix onboarding mistakes
- Change the platform assigned to a project
- Update team assignment for a project
<examples>
### Update a project's name and slug
```
update_project(organizationSlug='my-organization', projectSlug='old-project', name='New Project Name', slug='new-project-slug')
```
### Assign a project to a different team
```
update_project(organizationSlug='my-organization', projectSlug='my-project', teamSlug='backend-team')
```
### Update platform
```
update_project(organizationSlug='my-organization', projectSlug='my-project', platform='python')
```
</examples>
<hints>
- If the user passes a parameter in the form of name/otherName, it's likely in the format of <organizationSlug>/<projectSlug>.
- Team assignment is handled separately from other project settings
- If any parameter is ambiguous, you should clarify with the user what they meant.
- When updating the slug, the project will be accessible at the new slug after the update
</hints>
Try it
create_dsn
Create an additional DSN for an EXISTING project.
USE THIS TOOL WHEN:
- Project already exists and needs additional DSN
- 'Create another DSN for project X'
- 'I need a production DSN for existing project'
DO NOT USE for new projects (use create_project instead)
Be careful when using this tool!
<examples>
### Create additional DSN for existing project
```
create_dsn(organizationSlug='my-organization', projectSlug='my-project', name='Production')
```
</examples>
<hints>
- If the user passes a parameter in the form of name/otherName, its likely in the format of <organizationSlug>/<projectSlug>.
- If any parameter is ambiguous, you should clarify with the user what they meant.
</hints>
Try it
find_dsns
List all Sentry DSNs for a specific project.
Use this tool when you need to:
- Retrieve a SENTRY_DSN for a specific project
<hints>
- If the user passes a parameter in the form of name/otherName, its likely in the format of <organizationSlug>/<projectSlug>.
- If only one parameter is provided, and it could be either `organizationSlug` or `projectSlug`, its probably `organizationSlug`, but if you're really uncertain you might want to call `find_organizations()` first.
</hints>
Try it
analyze_issue_with_seer
Use Seer to analyze production errors and get detailed root cause analysis with specific code fixes.
Use this tool when you need:
- Detailed AI-powered root cause analysis
- Specific code fixes and implementation guidance
- Step-by-step troubleshooting for complex issues
- Understanding why an error is happening in production
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: "What's causing this error? https://my-org.sentry.io/issues/PROJECT-1Z43"
```
analyze_issue_with_seer(issueUrl='https://my-org.sentry.io/issues/PROJECT-1Z43')
```
### User: "Can you help me understand why this is failing in production?"
```
analyze_issue_with_seer(organizationSlug='my-organization', issueId='ERROR-456')
```
</examples>
<hints>
- Use this tool when you need deeper analysis beyond basic issue details
- 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>
Try it
search_docs
Search Sentry documentation for SDK setup, instrumentation, and configuration guidance.
Use this tool when you need to:
- Set up Sentry SDK or framework integrations (Django, Flask, Express, Next.js, etc.)
- Configure features like performance monitoring, error sampling, or release tracking
- Implement custom instrumentation (spans, transactions, breadcrumbs)
- Configure data scrubbing, filtering, or sampling rules
Returns snippets only. Use `get_doc(path='...')` to fetch full documentation content.
<examples>
```
search_docs(query='Django setup configuration SENTRY_DSN', guide='python/django')
search_docs(query='source maps webpack upload', guide='javascript/nextjs')
```
</examples>
<hints>
- Use guide parameter to filter to specific technologies (e.g., 'javascript/nextjs')
- Include specific feature names like 'beforeSend', 'tracesSampleRate', 'SENTRY_DSN'
</hints>
Try it
get_doc
Fetch the full markdown content of a Sentry documentation page.
Use this tool when you need to:
- Read the complete documentation for a specific topic
- Get detailed implementation examples or code snippets
- Access the full context of a documentation page
- Extract specific sections from documentation
<examples>
### Get the Next.js integration guide
```
get_doc(path='/platforms/javascript/guides/nextjs.md')
```
</examples>
<hints>
- Use the path from search_docs results for accurate fetching
- Paths should end with .md extension
</hints>
Try it
search_issues
Search for grouped issues/problems in Sentry - returns a LIST of issues, NOT counts or aggregations.
Uses AI to translate natural language queries into Sentry issue search syntax.
Returns grouped issues with metadata like title, status, and user count.
USE THIS TOOL WHEN USERS WANT:
- A LIST of issues: 'show me issues', 'what problems do we have'
- Filtered issue lists: 'unresolved issues', 'critical bugs'
- Issues by impact: 'errors affecting more than 100 users'
- Issues by assignment: 'issues assigned to me'
DO NOT USE FOR COUNTS/AGGREGATIONS:
- 'how many errors' → use search_events
- 'count of issues' → use search_events
- 'total number of errors today' → use search_events
- 'sum/average/statistics' → use search_events
ALSO DO NOT USE FOR:
- Individual error events with timestamps → use search_events
- Details about a specific issue ID → use get_issue_details
REMEMBER: This tool returns a LIST of issues, not counts or statistics!
<examples>
search_issues(organizationSlug='my-org', naturalLanguageQuery='critical bugs from last week')
search_issues(organizationSlug='my-org', naturalLanguageQuery='unhandled errors affecting 100+ users')
search_issues(organizationSlug='my-org', naturalLanguageQuery='issues assigned to me')
</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>
Try it