---
title: "MCP JSON-RPC endpoint"
method: POST
path: "/mcp"
tags: ["mcp"]
---

# MCP JSON-RPC endpoint

`POST /mcp`

Primary MCP endpoint. Accepts JSON-RPC requests such as `initialize`, `tools/list`, and `tools/call`. Some responses may stream over SSE depending on client transport/session flow.

## Request body

- union
  - JsonRpcInitializeRequest
    - `jsonrpc` '2.0', required
    - `id` union, required
      - integer
      - string
    - `method` 'initialize', required
    - `params` InitializeParams, required
      - `protocolVersion` string, required
      - `capabilities` object, required
      - `clientInfo` object, required
        - `name` string, required
        - `version` string, required
  - JsonRpcToolsListRequest
    - `jsonrpc` '2.0', required
    - `id` union, required
      - integer
      - string
    - `method` 'tools/list', required
    - `params` ToolsListParams, required
  - JsonRpcToolsCallRequest
    - `jsonrpc` '2.0', required
    - `id` union, required
      - integer
      - string
    - `method` 'tools/call', required
    - `params` union, required — Tool invocation envelope. `arguments` schema is selected by `name`.
      - object
        - `name` 'analyze_dashboard_health', required
        - `arguments` AnalyzeDashboardHealthArguments, required
          - `dashboard_uid` string, required — Grafana dashboard UID, URL slug, or exact allow-listed title.
          - `start` string — Window start (default now-6h).
          - `end` string — Window end (default now).
          - `step` string — Optional step; server picks a default.
          - `workspace_id` string — Optional workspace scope.
          - `response_mode` 'compact' | 'full' — compact trims panel series; full returns API payload.
          - `panel_limit` integer — Maximum panels returned in compact mode.
          - `max_series` integer — Maximum series per panel in compact mode.
          - `max_points` integer — Maximum samples per series in compact mode.
      - object
        - `name` 'argocd_analyze_application', required
        - `arguments` ArgocdAnalyzeApplicationArguments, required
          - `name` string, required — Argo CD application name.
          - `integration_id` string — Optional integration id.
          - `response_mode` 'compact' | 'full' — compact trims large nested lists; full returns API payload.
          - `history_limit` integer — Maximum history entries in compact mode.
      - object
        - `name` 'argocd_connection_health', required
        - `arguments` ArgocdConnectionHealthArguments, required
          - `integration_id` string — Optional Argo CD integration id. Omit when only one is connected.
      - object
        - `name` 'argocd_find_recent_deployments', required
        - `arguments` ArgocdFindRecentDeploymentsArguments, required
          - `integration_id` string — Optional integration id.
          - `project` string — Argo CD project filter.
          - `namespace` string — Destination namespace filter.
          - `limit` integer
      - object
        - `name` 'argocd_get_application', required
        - `arguments` ArgocdGetApplicationArguments, required
          - `name` string, required — Argo CD application name.
          - `integration_id` string — Optional integration id.
          - `response_mode` 'compact' | 'full' — compact trims large nested lists; full returns API payload.
          - `history_limit` integer — Maximum history entries in compact mode.
      - object
        - `name` 'argocd_get_application_resources', required
        - `arguments` ArgocdGetApplicationResourcesArguments, required
          - `name` string, required — Argo CD application name.
          - `integration_id` string — Optional integration id.
          - `limit` integer — Maximum resources returned in compact mode.
          - `response_mode` 'compact' | 'full' — compact trims large resource trees; full returns API payload.
      - object
        - `name` 'argocd_get_last_operation', required
        - `arguments` ArgocdGetLastOperationArguments, required
          - `name` string, required — Argo CD application name.
          - `integration_id` string — Optional integration id.
      - object
        - `name` 'argocd_get_sync_history', required
        - `arguments` ArgocdGetSyncHistoryArguments, required
          - `name` string, required — Argo CD application name.
          - `integration_id` string — Optional integration id.
          - `limit` integer
      - object
        - `name` 'argocd_list_applications', required
        - `arguments` ArgocdListApplicationsArguments, required
          - `integration_id` string — Optional integration id.
          - `search` string — Case-insensitive app search text.
          - `project` string — Argo CD project filter.
          - `namespace` string — Destination namespace filter.
          - `destination_cluster` string — Destination cluster name or server filter.
          - `health_status` string — Health status filter.
          - `sync_status` string — Sync status filter.
          - `limit` integer
      - object
        - `name` 'correlate_alerts', required
        - `arguments` CorrelateAlertsArguments, required
          - `alerts` object[] — Alert objects to correlate. Each alert requires alert_id, name, service, severity, status, and fired_at.
            - `alert_id` string, required — Stable alert identifier.
            - `name` string, required — Alert name, for example InstanceDown.
            - `service` string, required — Affected service name.
            - `severity` 'critical' | 'high' | 'medium' | 'warning' | 'low' | 'info', required
            - `status` 'firing' | 'resolved' | 'pending', required
            - `fired_at` string, date-time, required — Time the alert fired, as an ISO 8601 timestamp.
            - `labels` object — Optional alert labels such as env, namespace, pod, or deployment.
            - `slack` object — Optional Slack message metadata for the alert.
            - `thread` object — Optional Slack thread metadata for the alert.
          - `alerts_json` string — Legacy JSON string containing the same array accepted by alerts. Prefer alerts for new calls.
          - `window_minutes` integer — Correlation time window in minutes (1-1440)
          - `min_cluster_size` integer — Minimum number of alerts required to form a cluster
          - `execution_mode` 'auto' | 'sync' | 'async' — Execution strategy. auto and sync run inline. async is reserved for a future dedicated correlation runner.
          - `workspace_id` string — Reserved for future async orchestration; ignored for inline correlation.
      - object
        - `name` 'external_status_check', required
        - `arguments` ExternalStatusCheckArguments, required
          - `providers` string[] — External status providers to query
          - `days_back` integer — How many days of incident history to fetch (default: 30)
          - `wait_for_result` boolean — If true (default), polls until the job completes. If false, returns job_id immediately for manual polling.
          - `execution_mode` 'auto' | 'sync' | 'async' — Runner orchestration mode. auto/sync are coerced to async.
          - `workspace_id` string — Workspace scope for async orchestration. Optional when token has workspace scope or MCP_DEFAULT_WORKSPACE_ID is configured.
          - `job_id` string — UUID of an existing async job to poll. When provided, MCP polls this job and does not create a new one.
          - `check_id` string — Deprecated alias for job_id. Use job_id for polling an existing async job.
          - `response_mode` 'compact' | 'full' — compact returns chat-safe summary; full returns raw job result payload.
      - object
        - `name` 'grafana_extract_panel_queries', required
        - `arguments` GrafanaExtractPanelQueriesArguments, required
          - `dashboard_uid` string, required — Grafana dashboard UID, URL slug, or exact allow-listed title.
          - `workspace_id` string — Optional workspace scope.
      - object
        - `name` 'grafana_get_dashboard', required
        - `arguments` GrafanaGetDashboardArguments, required
          - `dashboard_uid` string, required — Grafana dashboard UID, URL slug, or exact allow-listed title.
          - `workspace_id` string — Optional workspace scope.
          - `response_mode` 'compact' | 'full' — compact trims dashboard panels; full returns API payload.
          - `panel_limit` integer — Maximum panels returned in compact mode.
      - object
        - `name` 'grafana_get_panel_view', required
        - `arguments` GrafanaGetPanelViewArguments, required
          - `dashboard_uid` string, required — Grafana dashboard UID, URL slug, or exact allow-listed title.
          - `panel_id` integer, required — Grafana panel id.
          - `start` string — Window start (default now-1h).
          - `end` string — Window end (default now).
          - `variables` object — Grafana dashboard variables to apply.
          - `max_points` integer — Maximum points per rendered series.
          - `workspace_id` string — Optional workspace scope.
      - object
        - `name` 'grafana_list_dashboards', required
        - `arguments` GrafanaListDashboardsArguments, required
          - `workspace_id` string — Workspace scope. Optional when the token has workspace scope or INCIDENTFLOW_WORKSPACE_ID is configured.
      - object
        - `name` 'grafana_metrics_query', required
        - `arguments` GrafanaMetricsQueryArguments, required
          - `datasource_uid` string, required — Grafana datasource uid.
          - `query` string, required — PromQL expression.
          - `time` string — Optional evaluation time (RFC3339 or unix seconds).
          - `workspace_id` string — Optional workspace scope.
          - `response_mode` 'compact' | 'full' — compact trims series/samples; full returns API payload.
          - `max_series` integer — Maximum metric series in compact mode.
          - `max_points` integer — Maximum samples per series in compact mode.
      - object
        - `name` 'grafana_metrics_query_range', required
        - `arguments` GrafanaMetricsQueryRangeArguments, required
          - `datasource_uid` string, required — Grafana datasource uid.
          - `query` string, required — PromQL expression.
          - `start` string, required — Range start (RFC3339/unix/now-6h).
          - `end` string, required — Range end (RFC3339/unix/now).
          - `step` string, required — Step, e.g. '30s' or seconds.
          - `workspace_id` string — Optional workspace scope.
          - `response_mode` 'compact' | 'full' — compact trims series/samples; full returns API payload.
          - `max_series` integer — Maximum metric series in compact mode.
          - `max_points` integer — Maximum samples per series in compact mode.
      - object
        - `name` 'incident_summary', required
        - `arguments` IncidentSummaryArguments, required
          - `incident_id` string — Unique incident identifier (e.g. INC-001). Required unless check_id is provided to poll an existing async job.
          - `include_timeline` boolean — Include event timeline in the response
          - `include_affected_services` boolean — Include impacted service list in the response
          - `execution_mode` 'auto' | 'sync' | 'async' — Execution strategy. sync runs the read-only correlator inline and returns the summary immediately; async dispatches a runner job and returns a job_id to poll via check_id; auto picks async when async tools are enabled, else sync.
          - `wait_for_result` boolean — When polling with check_id: if true (default), polls until the job completes; if false, returns the current job status immediately.
          - `check_id` string — Existing async job_id to poll. When provided, MCP fetches this job's result instead of creating a new summary (incident_id not required).
          - `workspace_id` string — Workspace scope for async orchestration. Optional when the token has workspace scope or MCP_DEFAULT_WORKSPACE_ID is configured.
      - object
        - `name` 'incident_thread_summary', required
        - `arguments` IncidentThreadSummaryArguments, required
          - `channel_id` string, required — Slack channel ID containing the thread.
          - `thread_ts` string, required — Slack thread timestamp.
          - `alert_context` object — Optional alert or incident context to shape the summary title/root-cause hints.
            - `alert_name` string — Alert name from the root Slack alert.
            - `name` string — Alternative alert name field.
            - `summary` string — Short alert or incident summary.
            - `service` string — Affected service name.
            - `severity` string — Alert severity.
            - `status` string — Alert status.
            - `labels` object — Alert labels copied from Grafana, Alertmanager, or IncidentFlow.
          - `workspace_id` string — Workspace scope for platform Slack mode. Optional when INCIDENTFLOW_WORKSPACE_ID is configured.
      - object
        - `name` 'incidentflow_auth_status', required
        - `arguments` IncidentflowAuthStatusArguments, required
      - object
        - `name` 'incidentflow_capabilities', required
        - `arguments` IncidentflowCapabilitiesArguments, required
          - `response_mode` 'compact' | 'full' — compact omits long descriptions; full includes full metadata.
          - `category` string — Optional category id filter, e.g. kubernetes, grafana_prometheus, slack_incidents, or knowledge.
      - object
        - `name` 'incidentflow_integrations_status', required
        - `arguments` IncidentflowIntegrationsStatusArguments, required
      - object
        - `name` 'k8s_agent_status', required
        - `arguments` K8sAgentStatusArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_analyze_workload', required
        - `arguments` K8sAnalyzeWorkloadArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `namespace` string, required
          - `workload` string, required — Deployment or Pod name to inspect, for example checkout-api or checkout-api-7f9c6d7d8b-abcde. Do not include kind/ prefixes.
          - `tail_lines` integer
          - `include_memory_context` boolean — Attach relevant runbook/RCA/postmortem context when the workload looks unhealthy. Enabled by default for investigation workflows.
          - `include_raw_logs` boolean — Include compact raw log lines under data.raw_logs. Off by default; the tool normally returns log_analysis only.
          - `exclude_loggers` string[] — Additional logger or substring patterns to classify as internal_debug and hide from top application patterns, for example httpcore.*.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_cluster_overview', required
        - `arguments` K8sClusterOverviewArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_connection_health', required
        - `arguments` K8sConnectionHealthArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_debug_pod', required
        - `arguments` K8sDebugPodArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `namespace` string, required
          - `pod` string, required
          - `tail_lines` integer — Log lines to fetch for diagnosis.
          - `include_memory_context` boolean — Attach relevant runbook/RCA/postmortem context when current pod issues are detected. Enabled by default for debug workflows.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_describe_pod', required
        - `arguments` K8sDescribePodArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `namespace` string, required
          - `pod` string, required
          - `include_details` boolean — Include lower-level pod details such as node, pod IP, probes, and resource requests/limits. Off by default for compact output.
          - `include_memory_context` boolean — Attach relevant runbook/RCA/postmortem context when current pod issues are detected. Off by default for compact inspect calls.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_get_pod', required
        - `arguments` K8sGetPodArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `namespace` string, required
          - `pod` string, required
          - `detail_level` 'summary' | 'standard' | 'debug' — summary=health basics only; standard=with events for this pod; debug=standard plus raw agent response structure
          - `include_labels` boolean — Include Kubernetes labels in the response.
          - `include_images` boolean — Include container image name:tag in the response.
          - `include_node` boolean — Include the node name the pod is scheduled on.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_get_pod_logs', required
        - `arguments` K8sGetPodLogsArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `namespace` string, required
          - `pod` string, required
          - `container` string
          - `tail_lines` integer
          - `level` 'trace' | 'debug' | 'info' | 'warn' | 'warning' | 'error' | 'critical' | 'fatal' — Optional case-insensitive level filter.
          - `contains` string — Only return log lines containing this text.
          - `exclude` string — Drop log lines containing this text.
          - `since_minutes` integer
          - `compact` boolean — Return compact highlighted logs instead of raw logs.
          - `json_parse` boolean — Ask the agent to parse JSON log lines when supported.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_get_rollout_status', required
        - `arguments` K8sGetRolloutStatusArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `namespace` string, required
          - `deployment` string — Deployment name. Use 'workload' as an alias if preferred.
          - `workload` string — Alias for 'deployment'. Provide one or the other, not both.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_list_deployments', required
        - `arguments` K8sListDeploymentsArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `namespace` string
          - `limit` integer — Maximum number of deployments to return.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_list_events', required
        - `arguments` K8sListEventsArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `namespace` string
          - `pod` string — Optional pod name to filter events to a specific pod.
          - `limit` integer — Maximum number of deduplicated events to return.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_list_namespaces', required
        - `arguments` K8sListNamespacesArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_list_pods', required
        - `arguments` K8sListPodsArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `namespace` string
          - `include_labels` boolean — Include Kubernetes labels in the response. Off by default.
          - `include_images` boolean — Include container image name:tag in the response.
          - `include_node` boolean — Include the node name the pod is scheduled on.
          - `limit` integer — Maximum number of pods to return. Defaults to 50.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_list_services', required
        - `arguments` K8sListServicesArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `namespace` string
          - `limit` integer — Maximum number of services to return.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_namespace_overview', required
        - `arguments` K8sNamespaceOverviewArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `namespace` string, required
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_rbac_check', required
        - `arguments` K8sRbacCheckArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `timeout_seconds` integer
      - object
        - `name` 'k8s_show_unhealthy_pods', required
        - `arguments` K8sShowUnhealthyPodsArguments, required
          - `environment` string — Optional environment selector, e.g. production, staging, or dev.
          - `cluster_name` string — Optional cluster name or alias selector.
          - `cluster_id` string — Internal/debug override. Usually omit this.
          - `namespace` string
          - `include_memory_context` boolean — Attach semantic memory/runbook context. Off by default for this status/list tool to keep routine output focused.
          - `timeout_seconds` integer
      - object
        - `name` 'knowledge_get', required
        - `arguments` KnowledgeGetArguments, required
          - `id` string, required — UI UUID, entry id, point id, exact title, or stable document id.
          - `id_type` 'auto' | 'entry_id' | 'ui_id' | 'knowledge_id' | 'document_id' | 'point_id' | 'title' — Identifier type. auto tries deterministic exact lookups.
          - `document_type` 'incident' | 'rca' | 'postmortem' | 'runbook' | 'knowledge' — Optional type hint for stable document ids or title matches.
          - `response_mode` 'compact' | 'full' — compact omits document body; full includes complete content.
      - object
        - `name` 'knowledge_upsert', required
        - `arguments` KnowledgeUpsertArguments, required
          - `document_type` 'knowledge' | 'incident' | 'rca' | 'postmortem' | 'runbook', required — Kind of private knowledge document to save.
          - `title` string, required
          - `text` string, required — Markdown or plain text body to store.
          - `id` string — Stable document id. Required for incidents; generated from title for other document types when omitted.
          - `service` string — Optional service name.
          - `cluster` string — Optional cluster name.
          - `namespace` string — Optional namespace.
          - `severity` 'critical' | 'high' | 'medium' | 'low' | 'info'
          - `status` string — Optional status, e.g. active, draft, open, or resolved.
          - `started_at` string, date-time
          - `tags` string[] — Keyword tags for filtering, e.g. ['kubernetes', 'startupProbe'].
          - `dry_run` boolean — If true, validate and return what would be stored without writing.
      - object
        - `name` 'mcp_version', required
        - `arguments` McpVersionArguments, required
      - object
        - `name` 'private_knowledge_search', required
        - `arguments` PrivateKnowledgeSearchArguments, required
          - `query` string, required — Natural language private query.
          - `document_type` 'incident' | 'rca' | 'postmortem' | 'runbook' | 'knowledge' | 'service_context' | 'deployment_note' — Optional workspace document type filter.
          - `service` string — Optional service filter.
          - `environment` string — Optional workspace environment filter.
          - `response_mode` 'compact' | 'full' — compact returns excerpts only; full includes complete content.
          - `limit` integer
      - object
        - `name` 'public_knowledge_search', required
        - `arguments` PublicKnowledgeSearchArguments, required
          - `query` string, required — Natural language public knowledge query.
          - `document_type` 'documentation' | 'integration_guide' | 'tool_reference' | 'runbook' | 'troubleshooting' | 'best_practice' | 'security_documentation' | 'faq' | 'api_reference' — Optional public document type filter.
          - `response_mode` 'compact' | 'full' — compact returns excerpts only; full includes complete content.
          - `limit` integer
      - object
        - `name` 'slack_alert_thread_get', required
        - `arguments` SlackAlertThreadGetArguments, required
          - `channel_id` string, required — Slack channel ID containing the alert message.
          - `message_ts` string, required — Slack root message timestamp or thread_ts.
          - `include_root` boolean — Include parsed root alert details in the response.
          - `include_raw` boolean — Include unfiltered raw Slack message text in the root alert. Default false returns a compact response: IPs are redacted and commands are extracted into extracted_commands instead.
          - `max_replies` integer — Maximum Slack thread replies to fetch.
          - `workspace_id` string — Workspace scope for platform Slack mode. Optional when INCIDENTFLOW_WORKSPACE_ID is configured.
      - object
        - `name` 'slack_alerts_list', required
        - `arguments` SlackAlertsListArguments, required
          - `channel` string — Slack channel name (#alerts or alerts) or channel ID.
          - `limit` integer — Number of recent channel messages to inspect.
          - `include_raw` boolean — Include extracted raw Slack text in each parsed alert.
          - `include_threads` boolean — Enable Slack thread metadata or full thread enrichment.
          - `thread_mode` 'none' | 'metadata' | 'full' — none returns alert messages only; metadata returns thread counts/users; full fetches replies and analysis.
          - `max_thread_replies` integer — Maximum thread replies to fetch when thread_mode=full.
          - `include_system_messages` boolean — Include Slack channel join/leave and other system messages.
          - `deduplicate` boolean — Group repeated notifications for the same alert fingerprint and return first_seen, last_seen, and occurrences.
          - `workspace_id` string — Workspace scope for platform Slack mode. Optional when INCIDENTFLOW_WORKSPACE_ID is configured.

## Response `200`

JSON-RPC success or error payload

- union
  - JsonRpcSuccessResponse
    - `jsonrpc` '2.0', required
    - `id` union, required
      - integer
      - string
    - `result` object, required
  - JsonRpcErrorResponse
    - `jsonrpc` '2.0', required
    - `id` union, required
      - integer
      - string
    - `error` JsonRpcError, required
      - `code` integer, required
      - `message` string, required
      - `data` object

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `429` — Rate limited
- `500` — Unhandled exception

---

[API](https://skmtc.net/incidentflow-io/apis/incidentflow-mcp-api.md) · [All operations](https://skmtc.net/incidentflow-io/apis/incidentflow-mcp-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/incidentflow-io/incidentflow-mcp-api/revisions/d62dfc2871b0/schema)
