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