get_sentry_resource
on npm:@sentry/mcp-server@0.35.0
Severity
3 findings on this tool
- highssrf surfacef-r8-get_sentry_resource
Tool `get_sentry_resource` accepts an unconstrained URL / endpoint parameter
The parameter(s) `url` look like URL or endpoint inputs but carry no `pattern` or `enum` constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL (e.g. `http://169.254.169.254/`) to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot.
fix: Constrain the URL parameter with an allow-list `enum`, or a `pattern` that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level.
OWASP LLM07NIST MANAGE-2.2ATLAS T0051CAST-02 - mediumunconstrained inputf-r1-get_sentry_resource
Tool `get_sentry_resource` accepts unconstrained string input
The following string parameter(s) have no `maxLength` constraint: `organizationSlug`, `resourceId`, `url`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.
fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.
OWASP LLM01NIST MEASURE-2.3ATLAS T0051CAST-03 - mediumindirect injectionf-r6-get_sentry_resource
Tool `get_sentry_resource` fetches external web content -- indirect-injection surface
Description: "Fetch a Sentry resource by URL or by type and ID. Pass a Sentry URL directly and the resource type is auto-detected. Supports issues, events, traces, spans, AI conversations, replays, breadcrumbs, and preprod snapshots. Sentry URLs require authentication that this tool handles. Trace lookups return a condensed overview by default. For preprod snapshot URLs (matching 'sentry.io/preprod/snapshots/'): - Without ?selectedSnapshot=: returns the snapshot diff summary (changed, added, removed images) - With ?selectedSnapshot=<image_file_name>: returns the specific image and full metadata 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') ### AI conversation by ID get_sentry_resource(resourceType='ai_conversation', organizationSlug='my-org', resourceId='conversation-123') ### Investigate a failed snapshot test from CI get_sentry_resource(url='https://sentry.sentry.io/preprod/snapshots/241539/') ### View a specific changed snapshot image get_sentry_resource(url='https://sentry.sentry.io/preprod/snapshots/241539/?selectedSnapshot=login_screen.png') </examples>" -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions.
fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a `domain in [...]` caveat.
OWASP LLM01NIST MEASURE-2.3ATLAS T0051CAST-02
About this tool
get_sentry_resource is one of 23 tools exposed by Sentry MCP. The server scored 42/100 overall against the capframe rule engine (source: sandbox). Last scanned 2026-07-20.
The findings above are emitted by the public capframe.findings.v1 schema. Disagree with one? Open an issue.