Master ticket for migrating data-shaped MCP tools from handwritten markdown to structuredContent + outputSchema.
Prefer tools whose handler is basically fetch → map stable fields → optional limit/cursor note, and whose only steering is presentation (“tell the user X”) or follow-up handles (slug/id/cursor). Skip tools that need markdown to make the result legible, or that return heavy untrusted telemetry.
Contract refs: docs/contributing/tool-responses.md, existing structured tools (search_ai_conversations, get_ai_conversation_details, search_sentry_tools). Related experimental work: #1045 (get_issue_details, search_events, search_issue_events).
Tier 1 — migrate first
Tier 2 — good, more schema work
Defer
get_issue_details, search_events, search_issue_events, search_issues — heavy presentation + untrusted telemetry
get_trace_details / get_span_details, profiles, replays — big nested investigation surfaces
get_doc / search_docs, analyze_issue_with_seer — prose-first
Spawn child issues/PRs per tool or small batch; keep this issue as the rollup.
Requested by David Cramer via Junior.
--
View Junior Session in Sentry
Master ticket for migrating data-shaped MCP tools from handwritten markdown to
structuredContent+outputSchema.Prefer tools whose handler is basically fetch → map stable fields → optional limit/cursor note, and whose only steering is presentation (“tell the user X”) or follow-up handles (slug/id/cursor). Skip tools that need markdown to make the result legible, or that return heavy untrusted telemetry.
Contract refs:
docs/contributing/tool-responses.md, existing structured tools (search_ai_conversations,get_ai_conversation_details,search_sentry_tools). Related experimental work: #1045 (get_issue_details,search_events,search_issue_events).Tier 1 — migrate first
find_projects— slug list; no response notesfind_teams— slug + id list; no response noteswhoami— user + optional session constraintscreate_team— id/slug/name; drop “please tell the user the team slug” into datacreate_dsn/find_dsns— name/id/dsn; drop “please tell the user the DSN” into dataupdate_project— small metadata echoadd_team_to_project/remove_team_from_project— assignment result + team listfind_organizations— slug, webUrl, regionUrl; region notes become fieldsTier 2 — good, more schema work
find_dashboards— list +nextCursorfind_alert_rules— list + cursors; “useget_alert_rule” →suggestedActionsfind_monitors— monitor summaries — feat(tools): Structure find_monitors results #1209get_issue_tag_values— tag key + top valuesfind_releases— nested but stable fields (version, dates, last commit/deploy) — feat(tools): Structure find_releases results #1210Defer
get_issue_details,search_events,search_issue_events,search_issues— heavy presentation + untrusted telemetryget_trace_details/get_span_details, profiles, replays — big nested investigation surfacesget_doc/search_docs,analyze_issue_with_seer— prose-firstSpawn child issues/PRs per tool or small batch; keep this issue as the rollup.
Requested by David Cramer via Junior.
--
View Junior Session in Sentry