get_error_analytics
Retrieve error-count time-series data with total errors and per-bucket counts to monitor high-level error trends.
Instructions
Get error-count time-series data with summary.total_errors and per-bucket counts. Use this for high-level error trends; use get_error_rate_analytics for percentages, or get_error_status_codes_analytics and get_error_stacks_analytics for breakdowns. Enterprise-gated. Returns 403 on non-Enterprise Portkey plans.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| time_of_generation_min | Yes | Start time for the analytics period (ISO8601 format, e.g., '2024-01-01T00:00:00Z') | |
| time_of_generation_max | Yes | End time for the analytics period (ISO8601 format, e.g., '2024-02-01T00:00:00Z') | |
| total_units_min | No | Minimum number of total tokens to filter by | |
| total_units_max | No | Maximum number of total tokens to filter by | |
| cost_min | No | Minimum cost in cents to filter by | |
| cost_max | No | Maximum cost in cents to filter by | |
| prompt_token_min | No | Minimum number of prompt tokens | |
| prompt_token_max | No | Maximum number of prompt tokens | |
| completion_token_min | No | Minimum number of completion tokens | |
| completion_token_max | No | Maximum number of completion tokens | |
| status_code | No | Legacy Portkey query param for HTTP status codes. Comma-separated string; prefer status_codes for structured inputs. | |
| weighted_feedback_min | No | Minimum weighted feedback score (-10 to 10) | |
| weighted_feedback_max | No | Maximum weighted feedback score (-10 to 10) | |
| virtual_keys | No | Legacy Portkey query param for virtual key slugs. Comma-separated string; prefer virtual_key_slugs for structured inputs. | |
| configs | No | Legacy Portkey query param for config slugs. Comma-separated string; prefer config_slugs for structured inputs. | |
| status_codes | No | Structured alias for status_code. Use an array of HTTP status codes; normalized to the legacy comma-separated Portkey query param. | |
| virtual_key_slugs | No | Structured alias for virtual_keys. Use an array of virtual key slugs; normalized to the legacy comma-separated Portkey query param. | |
| config_slugs | No | Structured alias for configs. Use an array of config slugs; normalized to the legacy comma-separated Portkey query param. | |
| workspace_slug | No | Filter by specific workspace | |
| api_key_ids | Yes | Legacy Portkey query param for API key UUIDs. Comma-separated string; request_analytics also accepts an array and normalizes it to this form. | |
| metadata | No | Legacy Portkey query param for metadata filtering. Stringified JSON object, e.g. '{"env":"prod","app":"myapp"}'; prefer metadata_filter for structured inputs. | |
| ai_org_model | No | Legacy Portkey query param for provider/model pairs. Format: 'provider__model' with double underscore, e.g. 'openai__gpt-4' or 'anthropic__claude-3-opus'. Comma-separated string; prefer provider_models for structured inputs. | |
| provider_models | No | Structured alias for ai_org_model. Use provider__model strings in an array; normalized to the legacy comma-separated Portkey query param. | |
| trace_id | No | Legacy Portkey query param for trace IDs. Comma-separated string; prefer trace_ids for structured inputs. | |
| trace_ids | No | Structured alias for trace_id. Use an array of trace IDs; normalized to the legacy comma-separated Portkey query param. | |
| span_id | No | Legacy Portkey query param for span IDs. Comma-separated string; prefer span_ids for structured inputs. | |
| span_ids | No | Structured alias for span_id. Use an array of span IDs; normalized to the legacy comma-separated Portkey query param. | |
| metadata_filter | No | Structured alias for metadata. Use an object such as { env: 'prod' }; normalized to a JSON string before the request is sent. | |
| prompt_slug | No | Filter by prompt slug |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ok | Yes | Whether the tool call succeeded and returned structured data | |
| data | No | Structured success payload when ok is true | |
| error | No | Structured error payload when ok is false |
Implementation Reference
- src/tools/analytics.tools.ts:556-586 (handler)The MCP tool handler for 'get_error_analytics'. It registers a tool with the MCP server, calls service.analytics.getErrorAnalytics with normalized params, maps data_points to {timestamp, total_errors}, and formats the response using formatGraphAnalytics.
server.tool( "get_error_analytics", "Get error-count time-series data with summary.total_errors and per-bucket counts. Use this for high-level error trends; use get_error_rate_analytics for percentages, or get_error_status_codes_analytics and get_error_stacks_analytics for breakdowns.", baseAnalyticsSchema, async (params) => { const analytics = await service.analytics.getErrorAnalytics( normalizeAnalyticsParams(params as Record<string, unknown>), ); const dataPoints = analytics.data_points.map((point) => ({ timestamp: point.timestamp, total_errors: point.total, })); return { content: [ { type: "text", text: JSON.stringify( formatGraphAnalytics( { total_errors: analytics.summary.total, }, dataPoints, ), null, 2, ), }, ], }; }, ); - Type definitions for ErrorAnalyticsResponse, ErrorDataPoint, and ErrorSummary used in the handler.
export interface ErrorDataPoint { timestamp: string; total: number; } export interface ErrorSummary { total: number; } export interface ErrorAnalyticsResponse { object: "analytics-graph"; data_points: ErrorDataPoint[]; summary: ErrorSummary; } - src/tools/analytics.tools.ts:264-277 (helper)Helper function formatGraphAnalytics used to structure the response with summary, point_count, and data_points.
function formatGraphAnalytics( summary: Record<string, unknown>, dataPoints: Record<string, unknown>[], ): { summary: Record<string, unknown>; point_count: number; data_points: Record<string, unknown>[]; } { return { summary, point_count: dataPoints.length, data_points: dataPoints, }; } - src/tools/analytics.tools.ts:15-35 (helper)The baseAnalyticsSchema Zod schema (fragment shown) used for input validation across all analytics tools including get_error_analytics.
const baseAnalyticsSchema = { time_of_generation_min: z .string() .describe( "Start time for the analytics period (ISO8601 format, e.g., '2024-01-01T00:00:00Z')", ), time_of_generation_max: z .string() .describe( "End time for the analytics period (ISO8601 format, e.g., '2024-02-01T00:00:00Z')", ), total_units_min: z.coerce .number() .positive() .optional() .describe("Minimum number of total tokens to filter by"), total_units_max: z.coerce .number() .positive() .optional() .describe("Maximum number of total tokens to filter by"), - src/tools/index.ts:110-125 (registration)Registration of 'get_error_analytics' in the ENTERPRISE_GATED_TOOL_NAMES set, marking it as an enterprise-only tool.
const ENTERPRISE_GATED_TOOL_NAMES = new Set([ "get_cost_analytics", "get_request_analytics", "get_token_analytics", "get_latency_analytics", "get_error_analytics", "get_error_rate_analytics", "get_cache_hit_latency", "get_cache_hit_rate", "get_users_analytics", "get_error_stacks_analytics", "get_error_status_codes_analytics", "get_user_requests_analytics", "get_rescued_requests_analytics", "get_feedback_analytics", "get_feedback_models_analytics",