|
772 | 772 | }, |
773 | 773 | { |
774 | 774 | "name": "search_events", |
775 | | - "description": "Search Sentry events and replays. This is the ONLY tool for counts/statistics on event datasets.\n\nProvide `naturalLanguageQuery` to let an embedded agent determine dataset, query, fields, and sort,\nor provide these directly with Sentry search syntax.\n\nSupports TWO query types:\n1. AGGREGATIONS (counts, sums, averages): 'how many errors', 'total tokens'\n2. Individual events with timestamps: 'error logs from last hour'\n\nDatasets:\n- errors: Exception/crash events with stack traces, usually grouped into issues\n- logs: Application log entries, including error-severity log messages\n- spans: Raw trace/span events for performance, AI/LLM calls, requests, and operations\n- metrics: Metric rows and aggregates, including counters, gauges, distributions, and metric values\n- profiles: Transaction and continuous profile results, profile IDs, and profiled transactions\n- replays: Session replay results such as rage clicks, dead clicks, visited pages, and replay users\nIf the user says logs, log messages, error logs, or warning logs, choose logs instead of errors.\n\nReplay searches on this tool return replay lists only. Replay count()/avg()/sum() aggregations are not supported.\n\nDO NOT USE for grouped issue lists → use search_issues\n\n<examples>\nsearch_events(organizationSlug='my-org', naturalLanguageQuery='how many errors today')\nsearch_events(organizationSlug='my-org', dataset='errors', query='level:error')\nsearch_events(organizationSlug='my-org', dataset='errors', fields=['issue', 'count()'], sort='-count()')\nsearch_events(organizationSlug='my-org', dataset='spans', query='span.op:db', sort='-span.duration')\nsearch_events(organizationSlug='my-org', dataset='replays', query='count_errors:>0', sort='-count_errors')\n</examples>\n\n<hints>\n- If the user passes a parameter in the form of name/otherName, it's likely in the format of <organizationSlug>/<projectSlug>.\n- Parse org/project notation directly without calling find_organizations or find_projects.\n- Use fields with aggregate functions like count(), avg(), sum() for statistics\n- Sort by -count() for most common, -timestamp for newest\n</hints>", |
| 775 | + "description": "Search Sentry events and replays. Use for event counts/statistics.\n\n`query` can be natural language or Sentry search syntax. With an agent configured, it fixes dataset, query, fields, and sort before running.\n\nSupports TWO query types:\n1. AGGREGATIONS (counts, sums, averages): 'how many errors', 'total tokens'\n2. Individual events with timestamps: 'error logs from last hour'\n\nDatasets:\n- errors: Exception/crash events with stack traces, usually grouped into issues\n- logs: Application log entries, including error-severity log messages\n- spans: Raw trace/span events for performance, AI/LLM calls, requests, and operations\n- metrics: Metric rows and aggregates: counters, gauges, distributions, values\n- profiles: Transaction/continuous profile results, profile IDs, profiled transactions\n- replays: Session replay results: rage clicks, dead clicks, visited pages, replay users\nIf the user says logs, log messages, error logs, or warning logs, choose logs instead of errors.\n\nReplay searches return replay lists only; replay count()/avg()/sum() are not supported.\n\nDO NOT USE for grouped issue lists → use search_issues\n\n<examples>\nsearch_events(organizationSlug='my-org', query='how many errors today')\nsearch_events(organizationSlug='my-org', dataset='errors', query='level:error')\nsearch_events(organizationSlug='my-org', dataset='errors', fields=['issue', 'count()'], sort='-count()')\nsearch_events(organizationSlug='my-org', dataset='spans', query='span.op:db', sort='-span.duration')\nsearch_events(organizationSlug='my-org', dataset='replays', query='count_errors:>0', sort='-count_errors')\n</examples>\n\n<hints>\n- If the user passes a parameter in the form of name/otherName, it's likely in the format of <organizationSlug>/<projectSlug>.\n- Parse org/project notation directly without calling find_organizations or find_projects.\n- Use fields with aggregate functions like count(), avg(), sum() for statistics\n- Sort by -count() for most common, -timestamp for newest\n</hints>", |
776 | 776 | "inputSchema": { |
777 | 777 | "type": "object", |
778 | 778 | "properties": { |
779 | 779 | "organizationSlug": { |
780 | 780 | "type": "string", |
781 | 781 | "description": "The organization's slug. You can find a existing list of organizations you have access to using the `find_organizations()` tool." |
782 | 782 | }, |
783 | | - "naturalLanguageQuery": { |
784 | | - "type": "string", |
785 | | - "minLength": 1, |
786 | | - "description": "Natural language description of what you want to search for. When provided, an embedded agent determines the dataset, query, fields, and sort." |
787 | | - }, |
788 | 783 | "dataset": { |
789 | 784 | "type": "string", |
790 | 785 | "enum": ["spans", "errors", "logs", "metrics", "profiles", "replays"], |
791 | | - "description": "Dataset to query when naturalLanguageQuery is not provided: errors, logs, spans, metrics, profiles, or replays." |
| 786 | + "description": "Initial dataset hint: errors, logs, spans, metrics, profiles, or replays. The agent may correct this when configured." |
792 | 787 | }, |
793 | 788 | "query": { |
794 | 789 | "type": "string", |
795 | | - "description": "Sentry event search query syntax. Used when naturalLanguageQuery is not provided." |
| 790 | + "description": "Natural language or Sentry event search query syntax." |
796 | 791 | }, |
797 | 792 | "fields": { |
798 | 793 | "anyOf": [ |
|
858 | 853 | }, |
859 | 854 | "statsPeriod": { |
860 | 855 | "type": "string", |
861 | | - "description": "Time period: 1h, 24h, 7d, 14d, 30d, etc. Used when naturalLanguageQuery is not provided." |
| 856 | + "description": "Initial time period hint: 1h, 24h, 7d, 14d, 30d, etc." |
862 | 857 | }, |
863 | 858 | "regionUrl": { |
864 | 859 | "anyOf": [ |
|
883 | 878 | "includeExplanation": { |
884 | 879 | "type": "boolean", |
885 | 880 | "default": false, |
886 | | - "description": "Include explanation of how the query was translated (only applies with naturalLanguageQuery)" |
| 881 | + "description": "Include explanation of how the query was translated or repaired" |
887 | 882 | } |
888 | 883 | }, |
889 | 884 | "required": ["organizationSlug"], |
|
894 | 889 | }, |
895 | 890 | { |
896 | 891 | "name": "search_issue_events", |
897 | | - "description": "Search and filter events within a specific issue.\n\nProvide `naturalLanguageQuery` to let an embedded agent determine the correct filters,\nor use `query` and `sort` directly with Sentry search syntax.\n\nThe tool automatically constrains results to the specified issue.\n\nCommon Query Filters:\n- environment:production - Filter by environment\n- release:1.0.0 - Filter by release version\n- user.email:alice@example.com - Filter by user\n- trace:TRACE_ID - Filter by trace ID\n\nFor cross-issue searches use search_issues. For single issue or event details use get_sentry_resource.\n\n<examples>\nsearch_issue_events(issueId='MCP-41', organizationSlug='my-org', naturalLanguageQuery='from last hour')\nsearch_issue_events(issueId='MCP-41', organizationSlug='my-org', query='environment:production')\nsearch_issue_events(issueUrl='https://sentry.io/.../issues/123/', query='release:v1.0.0', statsPeriod='7d')\n</examples>", |
| 892 | + "description": "Search and filter events within a specific issue.\n\nProvide `query` as natural language or Sentry event search syntax. When an embedded agent is configured, it fixes filters, fields, sort, and time range before running.\n\nThe tool automatically constrains results to the specified issue.\n\nCommon Query Filters:\n- environment:production - Filter by environment\n- release:1.0.0 - Filter by release version\n- user.email:alice@example.com - Filter by user\n- trace:TRACE_ID - Filter by trace ID\n\nFor cross-issue searches use search_issues. For single issue or event details use get_sentry_resource.\n\n<examples>\nsearch_issue_events(issueId='MCP-41', organizationSlug='my-org', query='from last hour')\nsearch_issue_events(issueId='MCP-41', organizationSlug='my-org', query='environment:production')\nsearch_issue_events(issueUrl='https://sentry.io/.../issues/123/', query='release:v1.0.0', statsPeriod='7d')\n</examples>", |
898 | 893 | "inputSchema": { |
899 | 894 | "type": "object", |
900 | 895 | "properties": { |
|
920 | 915 | "format": "uri", |
921 | 916 | "description": "Full Sentry issue URL (e.g., 'https://sentry.io/organizations/my-org/issues/123/'). Includes both organization and issue ID." |
922 | 917 | }, |
923 | | - "naturalLanguageQuery": { |
924 | | - "type": "string", |
925 | | - "minLength": 1, |
926 | | - "description": "Natural language description of what events to find within this issue. When provided, an embedded agent determines the correct filters, fields, sort, and time range." |
927 | | - }, |
928 | 918 | "query": { |
929 | 919 | "type": "string", |
930 | | - "description": "Sentry event search query syntax for filtering within the issue. Used when naturalLanguageQuery is not provided." |
| 920 | + "description": "Natural language or Sentry event search query syntax for filtering within the issue." |
931 | 921 | }, |
932 | 922 | "sort": { |
933 | 923 | "type": "string", |
934 | 924 | "description": "Sort field (prefix with - for descending). Default: -timestamp" |
935 | 925 | }, |
936 | 926 | "statsPeriod": { |
937 | 927 | "type": "string", |
938 | | - "description": "Time period: 1h, 24h, 7d, 14d, 30d, etc. Used when naturalLanguageQuery is not provided." |
| 928 | + "description": "Initial time period hint: 1h, 24h, 7d, 14d, 30d, etc." |
939 | 929 | }, |
940 | 930 | "projectSlug": { |
941 | 931 | "anyOf": [ |
|
973 | 963 | "includeExplanation": { |
974 | 964 | "type": "boolean", |
975 | 965 | "default": false, |
976 | | - "description": "Include explanation of how the query was translated (only applies with naturalLanguageQuery)" |
| 966 | + "description": "Include explanation of how the query was translated or repaired" |
977 | 967 | } |
978 | 968 | }, |
979 | 969 | "additionalProperties": false, |
|
983 | 973 | }, |
984 | 974 | { |
985 | 975 | "name": "search_issues", |
986 | | - "description": "Search for grouped issues/problems in Sentry - returns a LIST of issues, NOT counts or aggregations.\n\nProvide `naturalLanguageQuery` to let an embedded agent determine the correct query and sort params,\nor use `query` and `sort` directly with Sentry search syntax.\n\nReturns grouped issues with metadata like title, status, and user count.\n\nCommon Query Syntax:\n- is:unresolved / is:resolved / is:ignored\n- level:error / level:warning\n- firstSeen:-24h / lastSeen:-7d\n- assigned:me / assignedOrSuggested:me\n- issueCategory:feedback\n- environment:production\n- userCount:>100\n\nDO NOT USE FOR COUNTS/AGGREGATIONS → use search_events\nDO NOT USE FOR individual events with timestamps → use search_events\nDO NOT USE FOR details about a specific issue → use get_sentry_resource\n\n<examples>\nsearch_issues(organizationSlug='my-org', naturalLanguageQuery='critical bugs from last week')\nsearch_issues(organizationSlug='my-org', query='is:unresolved is:unassigned', sort='freq')\nsearch_issues(organizationSlug='my-org', query='level:error firstSeen:-24h', projectSlugOrId='my-project')\n</examples>\n\n<hints>\n- If the user passes a parameter in the form of name/otherName, it's likely in the format of <organizationSlug>/<projectSlugOrId>.\n- Parse org/project notation directly without calling find_organizations or find_projects.\n- The projectSlugOrId parameter accepts both project slugs (e.g., 'my-project') and numeric IDs (e.g., '123456').\n</hints>", |
| 976 | + "description": "Search for grouped issues/problems in Sentry - returns a LIST of issues, NOT counts or aggregations.\n\nProvide `query` as natural language or Sentry issue search syntax. When an embedded agent is configured, it fixes query and sort before running.\n\nReturns grouped issues with metadata like title, status, and user count.\n\nCommon Query Syntax:\n- is:unresolved / is:resolved / is:ignored\n- level:error / level:warning\n- firstSeen:-24h / lastSeen:-7d\n- assigned:me / assignedOrSuggested:me\n- issueCategory:feedback\n- environment:production\n- userCount:>100\n\nDO NOT USE FOR COUNTS/AGGREGATIONS → use search_events\nDO NOT USE FOR individual events with timestamps → use search_events\nDO NOT USE FOR details about a specific issue → use get_sentry_resource\n\n<examples>\nsearch_issues(organizationSlug='my-org', query='critical bugs from last week')\nsearch_issues(organizationSlug='my-org', query='is:unresolved is:unassigned', sort='freq')\nsearch_issues(organizationSlug='my-org', query='level:error firstSeen:-24h', projectSlugOrId='my-project')\n</examples>\n\n<hints>\n- If the user passes a parameter in the form of name/otherName, it's likely in the format of <organizationSlug>/<projectSlugOrId>.\n- Parse org/project notation directly without calling find_organizations or find_projects.\n- The projectSlugOrId parameter accepts both project slugs (e.g., 'my-project') and numeric IDs (e.g., '123456').\n</hints>", |
987 | 977 | "inputSchema": { |
988 | 978 | "type": "object", |
989 | 979 | "properties": { |
990 | 980 | "organizationSlug": { |
991 | 981 | "type": "string", |
992 | 982 | "description": "The organization's slug. You can find a existing list of organizations you have access to using the `find_organizations()` tool." |
993 | 983 | }, |
994 | | - "naturalLanguageQuery": { |
995 | | - "type": "string", |
996 | | - "minLength": 1, |
997 | | - "description": "Natural language description of issues to search for. When provided, an embedded agent translates this into the correct query and sort params." |
998 | | - }, |
999 | 984 | "query": { |
1000 | 985 | "type": "string", |
1001 | 986 | "default": "is:unresolved", |
1002 | | - "description": "Sentry issue search query syntax. Used when naturalLanguageQuery is not provided." |
| 987 | + "description": "Natural language or Sentry issue search query syntax." |
1003 | 988 | }, |
1004 | 989 | "sort": { |
1005 | 990 | "type": "string", |
|
1042 | 1027 | "includeExplanation": { |
1043 | 1028 | "type": "boolean", |
1044 | 1029 | "default": false, |
1045 | | - "description": "Include explanation of how the query was translated (only applies with naturalLanguageQuery)" |
| 1030 | + "description": "Include explanation of how the query was translated or repaired" |
1046 | 1031 | } |
1047 | 1032 | }, |
1048 | 1033 | "required": ["organizationSlug"], |
|
0 commit comments