Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/specs/search-events.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ search_metrics({
- Prominent rendering directives for AI agents
- Shareable Sentry Explorer URL

Dataset tools that declare an `outputSchema` (`search_errors`, `search_logs`, `search_traces`, and `search_metrics` today) return
Dataset tools that declare an `outputSchema` (`search_errors`, `search_logs`, `search_traces`, `search_metrics`, and `search_profiles` today) return
`structuredContent` instead of the markdown above; legacy `search_events` keeps
markdown. In that payload, `resultType` (`samples`, `aggregates`, or
`timeSeries`) replaces the dataset-specific rendering, each row holds only the
Expand Down
251 changes: 251 additions & 0 deletions packages/mcp-core/src/toolDefinitions.json
Original file line number Diff line number Diff line change
Expand Up @@ -11249,6 +11249,257 @@
},
"required": ["organizationSlug"]
},
"outputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string"
},
"explanation": {
"type": ["string", "null"]
},
"executedSearch": {
"type": "object",
"properties": {
"dataset": {
"type": "string"
},
"query": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "string"
}
},
"sort": {
"type": ["string", "null"]
},
"timeRange": {
"type": "object",
"properties": {
"statsPeriod": {
"type": ["string", "null"]
},
"start": {
"type": ["string", "null"]
},
"end": {
"type": ["string", "null"]
}
},
"required": ["statsPeriod", "start", "end"],
"additionalProperties": false
}
},
"required": ["dataset", "query", "fields", "sort", "timeRange"],
"additionalProperties": false
},
"url": {
"type": "string",
"description": "Opens these results in Sentry."
},
"presentationHint": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"resultType": {
"type": "string",
"enum": ["samples", "aggregates", "timeSeries"]
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"values": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {},
"description": "The requested fields, keyed by field name."
},
"links": {
"type": "object",
"properties": {
"profileUrl": {
"type": ["string", "null"]
},
"traceUrl": {
"type": ["string", "null"]
}
},
"required": ["profileUrl", "traceUrl"],
"additionalProperties": false
}
},
"required": ["values", "links"],
"additionalProperties": false
}
},
"timeSeries": {
"anyOf": [
{
"type": "object",
"properties": {
"yAxis": {
"type": "string"
},
"interval": {
"description": "Bucket size; null when Sentry chose it for the range.",
"type": ["string", "null"]
},
"total": {
"description": "Sum of all buckets; null for non-additive aggregates.",
"type": ["number", "null"]
},
"totalIncludesIncompleteBuckets": {
"type": "boolean"
},
"peak": {
"anyOf": [
{
"type": "object",
"properties": {
"time": {
"type": "string"
},
"value": {
"type": ["number", "string"]
}
},
"required": ["time", "value"],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Highest bucket that is no longer receiving data."
},
"ingestion": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"delaySeconds": {
"type": ["number", "null"]
},
"completeThrough": {
"type": ["string", "null"]
}
},
"required": ["status", "delaySeconds", "completeThrough"],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"bucketCount": {
"type": "number"
},
"buckets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"time": {
"type": "string"
},
"value": {
"type": ["number", "string"]
},
"incomplete": {
"type": "boolean",
"description": "Data is still arriving, so the value may rise."
},
"outsideRetention": {
"type": "boolean",
"description": "Starts before the retention window, so older data is missing and the value will not change."
}
},
"required": [
"time",
"value",
"incomplete",
"outsideRetention"
],
"additionalProperties": false
},
"description": "The most recent buckets, oldest first."
}
},
"required": [
"yAxis",
"interval",
"total",
"totalIncludesIncompleteBuckets",
"peak",
"ingestion",
"bucketCount",
"buckets"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"suggestedActions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "tool_call"
},
"toolName": {
"type": "string"
},
"arguments": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"reason": {
"type": "string"
}
},
"required": ["type", "toolName", "arguments", "reason"],
"additionalProperties": false
}
}
},
"required": [
"query",
"explanation",
"executedSearch",
"url",
"presentationHint",
"notes",
"resultType",
"results",
"timeSeries",
"suggestedActions"
],
"additionalProperties": false
},
"requiredScopes": ["event:read"],
"skills": ["inspect", "triage", "seer"],
"surface": "direct"
Expand Down
Loading
Loading