MCP operation reference

Named tools, request bodies, permissions and asynchronous results.

Reference · Updated 2026-10-27 · Describes release 0.1.164

Open Settings · Data in → Connect your agent and use the Use your own agent card. The generated configuration binds your client to the current workspace. Start with get_workspace_context; it returns the workspace, your role permissions, the current token scope, the setup guide link and the documentation links (the /help/llms.txt index and the three Quick start pages). Token scope can restrict what your account role normally allows.

A read token is enough for ordinary exploration and the permitted chat, lake-query and IdP-test operations. Tenant writes, connection tests and execution previews need write or admin scope and the relevant workspace permission. Personal, webhook and private-agent token management, and every change that gives another person a login to the workspace — member invites (an activation link is a new login), adding, re-roling or removing a member, the workspace identity provider and an organization administrator's workspace staffing — require admin scope. Every platform-admin tool requires admin scope and a superadmin account; tools backed by tenant routes also retain those routes' tenant permission checks. Approval, change-window, quorum and review requirements apply exactly as in the portal.

The MCP readOnlyHint is operation metadata, not a token-scope grant. Report exports that save an artifact (export_change_stats, export_benchmark_model_report, export_rca and the like) are POST operations and need write scope; some GET downloads available to a read PAT still record an audit row, so a read PAT does not guarantee that no record is persisted. Conversely, an execution preview can be read-only but still require write scope under the current REST policy.

Calling a tool

All known product features are included for enabled tenants and workspaces. Feature grants and terms acceptance are no longer required. The legacy grant, revoke and accept tools are deprecated compatibility no-ops: they do not change availability or create agreement records. Workspace membership, role permissions, token scope and actual connection/runtime setup still apply.

Connection role accepts read, write or read_write. New connections default to allow_approved_execution=false; set it explicitly for a write-capable connection intended for reviewed plans. Changing role clears consent unless explicitly renewed. read_write allows read tools to use the credential, but does not permit investigation tools to write. A plan still requires its exact review and approval.

Prepared incident and standalone Change plans use supported execution_steps with selected_connections when a connection choice is needed. No route creation is required. Route-management tools remain legacy compatibility operations. An invalid or empty structured plan never falls back to a legacy route; clients must follow the returned readiness reason and current review digest. A revert operation (aws.security_group.authorize_ingress, azure.nsg_rule.put or a restore_* operation) is never authored: the platform compiles it from the change ledger's recorded pre-state (Roll back, Draft revert), and a plan that names one is refused as unsupported.

Both servers speak only the Streamable HTTP transport, at the same URL, and accept every MCP revision from 2024-11-05 to 2026-07-28: a client on 2025-11-25 or earlier starts with initialize as before, and a 2026-07-28 client sends stateless requests (server/discover, no session). Every call is an HTTP POST answered with JSON. The older HTTP+SSE transport, where the client opens a GET stream and waits for an endpoint event, is not served: a client set to sse waits for that event until its connect timeout. Set the client's transport to Streamable HTTP (http), as the generated configuration does. serverInfo.version is the platform build.

The server advertises a separate named, typed tool for each operation below. Structured request bodies are normally nested under body; path and query arguments stay outside it. Follow each tool's advertised schema, including its upload argument names. For example:

{
  "name": "patch_datasource",
  "arguments": {
    "ds_id": "CONNECTION_ID",
    "body": {"description": "Production metrics"}
  }
}

A workspace-bound URL supplies tenant automatically. On an unbound connection, supply tenant with the workspace ID or slug when you have more than one workspace. As in the REST API, tenant also reaches the Test Lab workspace of a workspace you belong to and, on the organization (group_*) tools, every workspace of an organization you administer. The bound connection rejects another workspace. Organization-wide and some account-management operations, including password changes and token revocation, require an unbound connection.

Omit a PATCH field to keep it unchanged. null clears a value only where the API permits it. Older tool names listed as aliases use the current advertised schema, including the nested body.

Results contain the HTTP status, canonical result in data, and relevant pagination/download metadata in headers. Errors retain the API's status and explanation. A response with ok: false is also marked as an MCP error, even when its HTTP status is 200. A started job is not a completed job: use get_investigation, get_chat_session, get_xray_scan, get_benchmark or factory_run_detail to read durable progress. Live SSE streams remain on their REST endpoints.

For uploads, pass file: {"filename": "cases.json", "content_base64": "..."}. The transport accepts up to 16 MiB of decoded file content; individual API limits still apply, including the 5 MiB document/Discovery attachment limit. Local file paths are never accepted. Download operations return the saved content and content type.

For a remediation, call preview_remediation with a write or admin token, show the exact payload in data to the user, then pass data.digest as body.review_digest to remediate_incident. Typed incident plans select a scoped execution-capable connection with explicit approved-plan consent, without a pre-created route. Include the same body.selected_connections in preview and release when choosing among matching connections. Use body.request_only=true to request human approval without executing; that is all an operator (incidents.act without approvals.decide) can do. Releasing needs approvals.decide, which the builtin approver, executive and owner roles hold; an L3 release needs two different people. If the plan, target, connection or policy changes, review again. A second approval or closed change window still prevents execution; opening a GitOps pull request is not evidence that the fix has landed.

For a Change action, use preview_change_execution, then include data.digest as body.review_digest when approving or executing. Prepared incident changes and standalone Changes with structured execution_steps need no route ID. Include the same body.selected_connections in preview and release when making a per-step connection choice. Historical route-based API clients retain body.route_id; a conceptual approval cannot approve an action selected later. A changed action needs fresh approvals. If execution is uncertain, inspect the target and reconcile the recorded outcome; reconciliation never authorizes automatic replay or proves recovery.

To suppress resources a compliance control flagged (EST-01 to EST-06), call accept_control_exception (the operation keeps its risk-acceptance name) with body.resource_keys taken from the control's latest evidence (get_compliance_control or the incident's control), a body.risk_statement — the reason — of at least 10 characters and an optional body.expires_at (default 90 days, at most 365). A suppression is a request: each resource lands in the risk register as requested and nothing changes until an approver other than the requester calls approve_risk_decision with its decision id (the requester may approve only when nobody else in the workspace holds approvals.decide) or reject_risk_decision with a body.note. decide_finding sends a scanner finding's risk decision the same way. Suppressing fixes nothing on the resource and is never a pass. When other resources stay flagged after an approval, a non-empty exception.reanalysis_id in that approval's response is the fresh analysis it started so the fix plan leaves the suppressed resources out; a plan drafted before the suppression can no longer be released. Revoke an approved decision through revoke_decision. Removed in 0.1.95: suppress_finding (POST /api/aiops/{tenant_id}/incidents/{incident_id}/suppress-rule) — clients that called it must move to accept_control_exception. Existing muted entries stop muting 90 days after they were set.

Common tasks

Workspace operations

Tool REST operation Additional names
me GET /me —
change_my_password POST /me/password —
list_tokens GET /me/tokens —
create_token POST /me/tokens —
revoke_token DELETE /me/tokens/{token_id} —
list_datasource_types GET /api/aiops/datasource-types —
list_datasource_categories GET /api/aiops/datasource-categories —
console_me GET /api/aiops/me —
my_groups GET /api/aiops/groups/mine —
group_detail GET /api/aiops/groups/{group_id} —
group_billing GET /api/aiops/groups/{group_id}/billing —
group_billing_csv GET /api/aiops/groups/{group_id}/billing.csv —
group_set_workspace_scope PATCH /api/aiops/groups/{group_id}/tenants/{tenant_id}/scope —
create_group POST /api/aiops/groups —
group_create_workspace POST /api/aiops/groups/{group_id}/tenants —
group_rename_workspace PATCH /api/aiops/groups/{group_id}/tenants/{tenant_id} —
group_list_workspace_members GET /api/aiops/groups/{group_id}/tenants/{tenant_id}/members —
group_set_workspace_member PUT /api/aiops/groups/{group_id}/tenants/{tenant_id}/members —
group_remove_workspace_member DELETE /api/aiops/groups/{group_id}/tenants/{tenant_id}/members/{user_id} —
list_tenants GET /api/aiops —
get_tenant GET /api/aiops/{tenant_id} —
patch_tenant PATCH /api/aiops/{tenant_id} patch_tenant_settings
get_guardrails GET /api/aiops/{tenant_id}/guardrails —
patch_guardrails PATCH /api/aiops/{tenant_id}/guardrails —
preview_retention_sweep GET /api/aiops/{tenant_id}/retention/preview —
run_retention_sweep POST /api/aiops/{tenant_id}/retention/sweep —
list_archived_records GET /api/aiops/{tenant_id}/archive —
list_archive_batches GET /api/aiops/{tenant_id}/archive/batches —
get_archived_record GET /api/aiops/{tenant_id}/archive/{kind}/{record_id} —
export_training_data GET /api/aiops/{tenant_id}/archive/batches/{batch_id}/training.jsonl.gz —
archive_backtest_cases POST /api/aiops/{tenant_id}/archive/batches/{batch_id}/cases —
get_builtin_detection GET /api/aiops/{tenant_id}/detection —
patch_builtin_detection PATCH /api/aiops/{tenant_id}/detection —
list_monitors GET /api/aiops/{tenant_id}/monitors —
create_monitor POST /api/aiops/{tenant_id}/monitors —
update_monitor PATCH /api/aiops/{tenant_id}/monitors/{check_id} —
delete_monitor DELETE /api/aiops/{tenant_id}/monitors/{check_id} —
run_monitor POST /api/aiops/{tenant_id}/monitors/{check_id}/run —
derive_monitors POST /api/aiops/{tenant_id}/monitors/derive —
get_web_allowlist GET /api/aiops/{tenant_id}/web-allowlist —
put_web_allowlist PUT /api/aiops/{tenant_id}/web-allowlist set_web_allowlist
get_model_tiers GET /api/aiops/{tenant_id}/model-tiers —
patch_model_tiers PATCH /api/aiops/{tenant_id}/model-tiers —
get_llm_endpoint GET /api/aiops/{tenant_id}/llm-endpoint —
put_llm_endpoint PUT /api/aiops/{tenant_id}/llm-endpoint —
delete_llm_endpoint DELETE /api/aiops/{tenant_id}/llm-endpoint —
suggest_model_tiers GET /api/aiops/{tenant_id}/model-tiers/suggest —
list_gateway_models GET /api/aiops/{tenant_id}/models —
list_members GET /api/aiops/{tenant_id}/members —
add_member POST /api/aiops/{tenant_id}/members —
set_member_role PATCH /api/aiops/{tenant_id}/members/{member_user_id} —
remove_member DELETE /api/aiops/{tenant_id}/members/{member_user_id} —
invite_member POST /api/aiops/{tenant_id}/invites —
reissue_invite POST /api/aiops/{tenant_id}/invites/{user_id}/reissue —
revoke_invite DELETE /api/aiops/{tenant_id}/invites/{user_id} —
list_roles GET /api/aiops/{tenant_id}/roles —
create_role POST /api/aiops/{tenant_id}/roles —
patch_role PATCH /api/aiops/{tenant_id}/roles/{role_id} —
delete_role DELETE /api/aiops/{tenant_id}/roles/{role_id} —
get_tenant_idp GET /api/aiops/{tenant_id}/idp —
put_tenant_idp PUT /api/aiops/{tenant_id}/idp set_idp
delete_tenant_idp DELETE /api/aiops/{tenant_id}/idp delete_idp
test_tenant_idp POST /api/aiops/{tenant_id}/idp/test test_idp
revoke_support_access DELETE /api/aiops/{tenant_id}/support-access/{member_user_id} —
mint_webhook_token POST /api/aiops/{tenant_id}/webhook-token admin: mint_webhook_token
mint_itsm_webhook_token POST /api/aiops/{tenant_id}/itsm-webhook-token —
mint_k8s_audit_token POST /api/aiops/{tenant_id}/k8s-audit-token/{cluster} —
list_features GET /api/aiops/{tenant_id}/features —
accept_feature_terms POST /api/aiops/{tenant_id}/features/{feature}/accept —
lake_overview GET /api/aiops/{tenant_id}/lake lake_stats
list_lake_specs GET /api/aiops/{tenant_id}/lake/specs —
create_lake_spec POST /api/aiops/{tenant_id}/lake/specs —
patch_lake_spec PATCH /api/aiops/{tenant_id}/lake/specs/{spec_id} —
delete_lake_spec DELETE /api/aiops/{tenant_id}/lake/specs/{spec_id} —
seed_lake_specs POST /api/aiops/{tenant_id}/lake/specs/seed-defaults —
query_lake POST /api/aiops/{tenant_id}/lake/query lake_query
erase_lake POST /api/aiops/{tenant_id}/lake/erase —
drop_lake DELETE /api/aiops/{tenant_id}/lake —
upload_text_file POST /api/aiops/{tenant_id}/uploads/text —
upload_xray_attachment POST /api/aiops/{tenant_id}/xray/attachments —
delete_xray_attachment DELETE /api/aiops/{tenant_id}/xray/attachments/{attachment_id} —
launch_xray POST /api/aiops/{tenant_id}/xray —
harvest_estate POST /api/aiops/{tenant_id}/xray/harvest —
list_xray_scans GET /api/aiops/{tenant_id}/xray —
get_xray_scan GET /api/aiops/{tenant_id}/xray/{scan_id} —
export_xray_ontology GET /api/aiops/{tenant_id}/xray/{scan_id}/ontology.ttl —
adopt_xray_context POST /api/aiops/{tenant_id}/xray/{scan_id}/adopt-context —
apply_xray_recommendation POST /api/aiops/{tenant_id}/xray/{scan_id}/apply apply_xray
delete_xray_scan DELETE /api/aiops/{tenant_id}/xray/{scan_id} delete_xray
cancel_xray_scan POST /api/aiops/{tenant_id}/xray/{scan_id}/cancel cancel_xray
list_pillars GET /api/aiops/{tenant_id}/pillars —
patch_pillar PATCH /api/aiops/{tenant_id}/pillars/{pillar} —
list_datasources GET /api/aiops/{tenant_id}/datasources —
create_datasource POST /api/aiops/{tenant_id}/datasources add_datasource
patch_datasource PATCH /api/aiops/{tenant_id}/datasources/{ds_id} —
delete_datasource DELETE /api/aiops/{tenant_id}/datasources/{ds_id} —
test_datasource POST /api/aiops/{tenant_id}/datasources/{ds_id}/test —
audit_datasource_permissions POST /api/aiops/{tenant_id}/datasources/{ds_id}/audit-permissions —
discover_ticket_system POST /api/aiops/{tenant_id}/datasources/{ds_id}/ticket-discovery —
discover_datasource_operations POST /api/aiops/{tenant_id}/datasources/{ds_id}/discover-operations —
adopt_read_paths POST /api/aiops/{tenant_id}/datasources/{ds_id}/adopt-read-paths —
list_routes GET /api/aiops/{tenant_id}/routes —
create_route POST /api/aiops/{tenant_id}/routes —
patch_route PATCH /api/aiops/{tenant_id}/routes/{route_id} —
certify_route POST /api/aiops/{tenant_id}/routes/{route_id}/certification —
preview_runbook POST /api/aiops/{tenant_id}/routes/runbook-preview —
list_runbook_templates GET /api/aiops/{tenant_id}/runbook-templates —
check_route_permissions POST /api/aiops/{tenant_id}/routes/{route_id}/permissions-check —
send_test_ticket POST /api/aiops/{tenant_id}/routes/{route_id}/test-ticket —
delete_route DELETE /api/aiops/{tenant_id}/routes/{route_id} —
export_knowledge GET /api/aiops/{tenant_id}/knowledge/export —
preview_knowledge_import POST /api/aiops/{tenant_id}/knowledge/import/preview —
import_knowledge POST /api/aiops/{tenant_id}/knowledge/import —
list_knowledge GET /api/aiops/{tenant_id}/knowledge —
create_knowledge POST /api/aiops/{tenant_id}/knowledge upsert_knowledge
activate_knowledge POST /api/aiops/{tenant_id}/knowledge/{item_id}/activate —
deactivate_knowledge POST /api/aiops/{tenant_id}/knowledge/{item_id}/deactivate —
delete_knowledge DELETE /api/aiops/{tenant_id}/knowledge/{item_id} —
list_skills GET /api/aiops/{tenant_id}/skills —
get_skill_default GET /api/aiops/{tenant_id}/skills/{name}/default —
restore_skill_default POST /api/aiops/{tenant_id}/skills/{name}/restore-default —
list_alerts GET /api/aiops/{tenant_id}/alerts —
list_incidents GET /api/aiops/{tenant_id}/incidents —
incident_summary GET /api/aiops/{tenant_id}/incidents/summary —
list_muted_findings GET /api/aiops/{tenant_id}/incidents/muted-rules —
unmute_finding POST /api/aiops/{tenant_id}/incidents/muted-rules/unmute —
get_incident GET /api/aiops/{tenant_id}/incidents/{incident_id} —
incident_last_known_good GET /api/aiops/{tenant_id}/incidents/{incident_id}/lkg —
draft_revert_plan POST /api/aiops/{tenant_id}/incidents/{incident_id}/lkg/draft —
keep_unauthorized_change POST /api/aiops/{tenant_id}/incidents/{incident_id}/keep-change —
verify_incident POST /api/aiops/{tenant_id}/incidents/{incident_id}/verify —
escalate_incident POST /api/aiops/{tenant_id}/incidents/{incident_id}/escalate —
reinvestigate_incident POST /api/aiops/{tenant_id}/incidents/{incident_id}/reinvestigate trigger_investigation
map_incident_source POST /api/aiops/{tenant_id}/incidents/{incident_id}/map-source —
bulk_resolve_incidents POST /api/aiops/{tenant_id}/incidents/bulk-resolve —
resolve_incident POST /api/aiops/{tenant_id}/incidents/{incident_id}/resolve —
retry_incident_ticket POST /api/aiops/{tenant_id}/incidents/{incident_id}/ticket/retry —
raise_concern POST /api/aiops/{tenant_id}/concerns —
preview_remediation POST /api/aiops/{tenant_id}/incidents/{incident_id}/remediation-preview —
remediate_incident POST /api/aiops/{tenant_id}/incidents/{incident_id}/remediate —
preapprove_incident_fix POST /api/aiops/{tenant_id}/incidents/{incident_id}/preapprove —
list_merge_proposals GET /api/aiops/{tenant_id}/merge-proposals —
decide_merge_proposal POST /api/aiops/{tenant_id}/merge-proposals/{proposal_id}/decide —
grant_incident_budget POST /api/aiops/{tenant_id}/incidents/{incident_id}/budget-grant —
export_rca POST /api/aiops/{tenant_id}/incidents/{incident_id}/rca-export —
needs_you GET /api/aiops/{tenant_id}/needs-you —
list_changes GET /api/aiops/{tenant_id}/changes —
change_summary GET /api/aiops/{tenant_id}/changes/summary —
change_stats GET /api/aiops/{tenant_id}/changes/stats —
export_change_stats POST /api/aiops/{tenant_id}/changes/stats —
list_harvest_reports GET /api/aiops/{tenant_id}/changes/harvest —
watched_repositories GET /api/aiops/{tenant_id}/changes/watched-repos —
get_change GET /api/aiops/{tenant_id}/changes/{change_id} —
get_change_request_document GET /api/aiops/{tenant_id}/changes/{change_id}/document —
draft_change_request_document POST /api/aiops/{tenant_id}/changes/{change_id}/document/draft —
create_change POST /api/aiops/{tenant_id}/changes —
plan_change POST /api/aiops/{tenant_id}/changes/{change_id}/plan —
approve_change POST /api/aiops/{tenant_id}/changes/{change_id}/approve —
reject_change POST /api/aiops/{tenant_id}/changes/{change_id}/reject —
close_change_without_verdict POST /api/aiops/{tenant_id}/changes/{change_id}/close-without-verdict —
reclassify_change POST /api/aiops/{tenant_id}/changes/{change_id}/class —
execute_change POST /api/aiops/{tenant_id}/changes/{change_id}/execute —
schedule_change POST /api/aiops/{tenant_id}/changes/{change_id}/schedule —
cancel_change_schedule POST /api/aiops/{tenant_id}/changes/{change_id}/schedule/cancel —
verify_change POST /api/aiops/{tenant_id}/changes/{change_id}/verify —
record_external_execution POST /api/aiops/{tenant_id}/changes/{change_id}/external-executions —
rollback_change POST /api/aiops/{tenant_id}/changes/{change_id}/rollback —
close_change_review POST /api/aiops/{tenant_id}/changes/{change_id}/pir/close —
request_change_window_exception POST /api/aiops/{tenant_id}/changes/{change_id}/window-exception —
decide_change_window_exception POST /api/aiops/{tenant_id}/changes/{change_id}/window-exception/decide —
harvest_changes POST /api/aiops/{tenant_id}/changes/harvest —
list_problems GET /api/aiops/{tenant_id}/problems —
get_problem GET /api/aiops/{tenant_id}/problems/{problem_id} —
confirm_problem POST /api/aiops/{tenant_id}/problems/{problem_id}/confirm —
close_problem POST /api/aiops/{tenant_id}/problems/{problem_id}/close —
compliance_posture GET /api/aiops/{tenant_id}/compliance/posture —
compliance_reports_view GET /api/aiops/{tenant_id}/compliance/reports —
refresh_compliance_reports POST /api/aiops/{tenant_id}/compliance/reports/refresh —
compliance_catalog_view GET /api/aiops/{tenant_id}/compliance/catalog —
compliance_discovery_findings GET /api/aiops/{tenant_id}/compliance/discovery-findings —
start_compliance_scan POST /api/aiops/{tenant_id}/compliance/scan —
list_compliance_scans GET /api/aiops/{tenant_id}/compliance/scans —
get_compliance_scan GET /api/aiops/{tenant_id}/compliance/scans/{scan_id} —
get_compliance_control GET /api/aiops/{tenant_id}/compliance/controls/{control_id} —
override_compliance_control PATCH /api/aiops/{tenant_id}/compliance/controls/{control_id} —
attest_requirement POST /api/aiops/{tenant_id}/compliance/requirements/{ref}/attest —
request_compliance_change POST /api/aiops/{tenant_id}/compliance/controls/{control_id}/request-change —
accept_control_exception POST /api/aiops/{tenant_id}/compliance/controls/{control_id}/exceptions —
request_discovery_change POST /api/aiops/{tenant_id}/compliance/discovery-findings/{index}/request-change —
export_interpretation_sheet POST /api/aiops/{tenant_id}/compliance/interpretation-export —
compliance_agreed_table GET /api/aiops/{tenant_id}/compliance/agreed-table —
accept_compliance_table POST /api/aiops/{tenant_id}/compliance/agreed-table/accept —
put_custom_requirement PUT /api/aiops/{tenant_id}/compliance/custom-requirements/{ref} —
delete_custom_requirement DELETE /api/aiops/{tenant_id}/compliance/custom-requirements/{ref} —
list_findings GET /api/aiops/{tenant_id}/findings —
list_finding_accounts GET /api/aiops/{tenant_id}/findings/accounts —
findings_score GET /api/aiops/{tenant_id}/findings/score —
findings_coverage GET /api/aiops/{tenant_id}/findings/coverage —
list_scanner_sync_reports GET /api/aiops/{tenant_id}/findings/sync —
sync_scanner_findings POST /api/aiops/{tenant_id}/findings/sync —
export_posture_period POST /api/aiops/{tenant_id}/findings/posture-export —
get_finding GET /api/aiops/{tenant_id}/findings/{finding_id} —
decide_finding POST /api/aiops/{tenant_id}/findings/{finding_id}/decision —
approve_risk_decision POST /api/aiops/{tenant_id}/risk-decisions/{decision_id}/approve —
reject_risk_decision POST /api/aiops/{tenant_id}/risk-decisions/{decision_id}/reject —
revoke_decision POST /api/aiops/{tenant_id}/risk-decisions/{decision_id}/revoke —
risk_register GET /api/aiops/{tenant_id}/risk-register —
export_risk_register POST /api/aiops/{tenant_id}/risk-register/export —
list_artifacts GET /api/aiops/{tenant_id}/artifacts —
get_artifact GET /api/aiops/{tenant_id}/artifacts/{artifact_id} —
spend_rollup GET /api/aiops/{tenant_id}/spend —
get_billing GET /api/aiops/{tenant_id}/billing —
get_billing_csv GET /api/aiops/{tenant_id}/billing.csv —
list_investigations GET /api/aiops/{tenant_id}/investigations —
get_investigation GET /api/aiops/{tenant_id}/investigations/{inv_id} —
decide_approvals POST /api/aiops/{tenant_id}/investigations/{inv_id}/decisions decide_approval
cancel_investigation POST /api/aiops/{tenant_id}/investigations/{inv_id}/cancel —
chat_ask POST /api/aiops/{tenant_id}/chat —
list_chat_sessions GET /api/aiops/{tenant_id}/chat —
get_chat_session GET /api/aiops/{tenant_id}/chat/{sid} —
cancel_chat_turn POST /api/aiops/{tenant_id}/chat/{sid}/turns/{turn_id}/cancel —
delete_chat_session DELETE /api/aiops/{tenant_id}/chat/{sid} —
get_proposal GET /api/aiops/{tenant_id}/proposals/{proposal_id} —
edit_proposal PATCH /api/aiops/{tenant_id}/proposals/{proposal_id} —
draft_incident_runbook POST /api/aiops/{tenant_id}/incidents/{incident_id}/runbook-draft —
create_feedback POST /api/aiops/{tenant_id}/investigations/{inv_id}/feedback —
list_feedback GET /api/aiops/{tenant_id}/feedback —
list_proposals GET /api/aiops/{tenant_id}/proposals —
approve_proposal POST /api/aiops/{tenant_id}/proposals/{proposal_id}/approve —
reject_proposal POST /api/aiops/{tenant_id}/proposals/{proposal_id}/reject —
retire_proposal POST /api/aiops/{tenant_id}/proposals/{proposal_id}/retire —
list_benchmarks GET /api/aiops/{tenant_id}/benchmarks get_benchmark_summary
list_datasets GET /api/aiops/{tenant_id}/benchmarks/datasets —
upload_dataset POST /api/aiops/{tenant_id}/benchmarks/datasets —
upload_dataset_version POST /api/aiops/{tenant_id}/benchmarks/datasets/{dataset_id}/versions —
get_dataset GET /api/aiops/{tenant_id}/benchmarks/datasets/{dataset_id} —
export_dataset GET /api/aiops/{tenant_id}/benchmarks/datasets/{dataset_id}/export —
run_dataset POST /api/aiops/{tenant_id}/benchmarks/datasets/{dataset_id}/run —
patch_dataset PATCH /api/aiops/{tenant_id}/benchmarks/datasets/{dataset_id} —
trash_dataset DELETE /api/aiops/{tenant_id}/benchmarks/datasets/{dataset_id} —
restore_dataset POST /api/aiops/{tenant_id}/benchmarks/datasets/{dataset_id}/restore —
export_history_golden_set GET /api/aiops/{tenant_id}/benchmarks/history-export —
benchmark_model_report GET /api/aiops/{tenant_id}/benchmarks/model-report —
export_benchmark_model_report POST /api/aiops/{tenant_id}/benchmarks/model-report —
get_benchmark GET /api/aiops/{tenant_id}/benchmarks/{run_id} —
run_builtin_benchmark POST /api/aiops/{tenant_id}/benchmarks/builtin run_benchmark_builtin
upload_golden_set POST /api/aiops/{tenant_id}/benchmarks/golden run_benchmark_golden
rerun_benchmark POST /api/aiops/{tenant_id}/benchmarks/{run_id}/rerun —
resume_benchmark POST /api/aiops/{tenant_id}/benchmarks/{run_id}/resume —
compare_benchmark GET /api/aiops/{tenant_id}/benchmarks/{run_id}/compare —
override_benchmark_result PATCH /api/aiops/{tenant_id}/benchmarks/{run_id}/results/{scenario_id} —
run_history_backtest POST /api/aiops/{tenant_id}/benchmarks/from-history —
harvest_factory_run POST /api/aiops/{tenant_id}/test-factory/runs/{run_id}/harvest —
delete_benchmark_run DELETE /api/aiops/{tenant_id}/benchmarks/{run_id} —
export_benchmark_report POST /api/aiops/{tenant_id}/benchmarks/{run_id}/report —
certify_benchmark POST /api/aiops/{tenant_id}/benchmarks/{run_id}/certify —
certification_bundle GET /api/aiops/{tenant_id}/benchmarks/{run_id}/certification.json —
import_benchmark POST /api/aiops/{tenant_id}/benchmarks/import —
factory_status GET /api/aiops/{tenant_id}/test-factory —
factory_trend GET /api/aiops/{tenant_id}/test-factory/trend —
factory_validate POST /api/aiops/{tenant_id}/test-factory/validate —
factory_provision POST /api/aiops/{tenant_id}/test-factory/provision —
factory_run_catalogue POST /api/aiops/{tenant_id}/test-factory/runs —
factory_set_guards PATCH /api/aiops/{tenant_id}/test-factory/guards —
factory_run_dashboard GET /api/aiops/{tenant_id}/test-factory/runs/{run_id}/dashboard —
factory_run_detail GET /api/aiops/{tenant_id}/test-factory/runs/{run_id} —
factory_run_cancel POST /api/aiops/{tenant_id}/test-factory/runs/{run_id}/cancel —
factory_teardown POST /api/aiops/{tenant_id}/test-factory/teardown —
factory_reset_incidents POST /api/aiops/{tenant_id}/test-factory/reset-incidents —
tenant_audit GET /api/aiops/{tenant_id}/audit —
tenant_audit_actions GET /api/aiops/{tenant_id}/audit/actions —
tenant_audit_verify GET /api/aiops/{tenant_id}/audit/verify —
tenant_audit_export GET /api/aiops/{tenant_id}/audit/export —
create_lab_workspace POST /api/aiops/{tenant_id}/lab —
provision_plan GET /api/aiops/{tenant_id}/test-factory/provision-plan —
alert_coverage GET /api/aiops/{tenant_id}/alert-coverage —
platform_identity GET /api/aiops/{tenant_id}/platform-identity —
preview_cloud_setup POST /api/aiops/{tenant_id}/cloud-setup/preview —
mint_agent_token POST /api/aiops/{tenant_id}/agent-tokens —
list_agent_tokens GET /api/aiops/{tenant_id}/agent-tokens —
revoke_agent_token DELETE /api/aiops/{tenant_id}/agent-tokens/{token_id} —
onboarding_status GET /api/aiops/{tenant_id}/onboarding-status —
create_validation POST /api/aiops/{tenant_id}/intake/validations —
list_validations GET /api/aiops/{tenant_id}/intake/validations —
get_validation GET /api/aiops/{tenant_id}/intake/validations/{vid} —
mcp_status GET /api/aiops/{tenant_id}/mcp/status —
get_workspace_context GET /api/aiops/{tenant_id}/mcp/context —
list_topology GET /api/aiops/{tenant_id}/topology —
add_topology_edges POST /api/aiops/{tenant_id}/topology —
delete_topology_edge DELETE /api/aiops/{tenant_id}/topology/{edge_id} —
infer_topology POST /api/aiops/{tenant_id}/topology/infer —
sync_trace_topology POST /api/aiops/{tenant_id}/topology/sync-traces —
get_estate_graph GET /api/aiops/{tenant_id}/estate/graph —
list_estate_history GET /api/aiops/{tenant_id}/estate/history —
get_service_group GET /api/aiops/{tenant_id}/estate/service-group —
acknowledge_no_firewall POST /api/aiops/{tenant_id}/estate/no-firewall —
list_pending_approvals GET /api/aiops/{tenant_id}/pending-approvals —
get_exec_report GET /api/aiops/{tenant_id}/executive-report —
test_llm_endpoint POST /api/aiops/{tenant_id}/llm-endpoint/test —
reconcile_execution POST /api/aiops/{tenant_id}/incidents/{incident_id}/reconcile-execution —
preview_change_execution POST /api/aiops/{tenant_id}/changes/{change_id}/execution-preview —
reconcile_change_execution POST /api/aiops/{tenant_id}/changes/{change_id}/reconcile-execution —
record_change_deployment POST /api/aiops/{tenant_id}/changes/{change_id}/application —
verify_change_restoration POST /api/aiops/{tenant_id}/changes/{change_id}/rollback-verify —
dashboard_summary GET /api/aiops/{tenant_id}/dashboard/summary —

Platform operations

These tools are available at /mcp/admin and require a superadmin with an admin-scope PAT or SSO identity.

Tool REST operation Additional names
list_users GET /users —
create_user POST /users —
patch_user PATCH /users/{user_id} —
send_user_reset_link POST /users/{user_id}/reset-link —
delete_user DELETE /users/{user_id} —
create_datasource_type POST /api/aiops/datasource-types —
patch_datasource_type PATCH /api/aiops/datasource-types/{key} —
delete_datasource_type DELETE /api/aiops/datasource-types/{key} —
admin_gateway_models GET /api/aiops/admin/models —
get_platform_model_tiers GET /api/aiops/admin/model-tiers-default —
patch_platform_model_tiers PATCH /api/aiops/admin/model-tiers-default —
get_auto_investigate_defaults GET /api/aiops/admin/auto-investigate-defaults —
patch_auto_investigate_defaults PATCH /api/aiops/admin/auto-investigate-defaults —
get_retention_defaults GET /api/aiops/admin/retention-defaults —
patch_retention_defaults PATCH /api/aiops/admin/retention-defaults —
get_builtin_detection_platform GET /api/aiops/admin/builtin-detection —
patch_builtin_detection_platform PATCH /api/aiops/admin/builtin-detection —
get_platform_model_prices GET /api/aiops/admin/model-prices —
put_platform_model_prices PUT /api/aiops/admin/model-prices —
record_model_mappings POST /api/aiops/admin/model-prices/mappings —
sync_platform_model_prices POST /api/aiops/admin/model-prices/sync —
get_platform_smtp GET /api/aiops/admin/smtp —
put_platform_smtp PUT /api/aiops/admin/smtp —
admin_audit GET /api/aiops/admin/audit audit_query
admin_audit_verify GET /api/aiops/admin/audit/verify —
admin_audit_export GET /api/aiops/admin/audit/export —
admin_overview_stats GET /api/aiops/admin/overview list_tenants
admin_runner_status GET /api/aiops/admin/runners —
admin_billing GET /api/aiops/admin/billing —
admin_billing_csv GET /api/aiops/admin/billing.csv —
admin_rebook_costs POST /api/aiops/admin/rebook-costs —
admin_patch_tenant PATCH /api/aiops/admin/tenants/{tenant_id} —
admin_tenant_config GET /api/aiops/admin/tenants/{tenant_id} get_tenant
admin_patch_pillar PATCH /api/aiops/admin/tenants/{tenant_id}/pillars/{pillar} set_pillar
admin_create_group POST /api/aiops/admin/groups —
admin_list_groups GET /api/aiops/admin/groups —
admin_group_detail GET /api/aiops/admin/groups/{group_id} —
admin_group_assign PUT /api/aiops/admin/groups/{group_id}/tenants/{tenant_id} —
admin_group_set_member PUT /api/aiops/admin/groups/{group_id}/members/{user_id} —
admin_group_remove_member DELETE /api/aiops/admin/groups/{group_id}/members/{user_id} —
admin_group_unassign DELETE /api/aiops/admin/groups/{group_id}/tenants/{tenant_id} —
create_tenant POST /api/aiops —
provision_keycloak_sso POST /api/aiops/{tenant_id}/idp/provision-keycloak provision_keycloak, tenant: provision_keycloak
grant_support_access POST /api/aiops/{tenant_id}/support-access —
grant_feature POST /api/aiops/{tenant_id}/features/{feature} —
revoke_feature DELETE /api/aiops/{tenant_id}/features/{feature} —
create_lab POST /api/aiops/admin/tenants/{tenant_id}/lab —
get_connection_setup GET /api/aiops/admin/connection-setup —
put_connection_setup PUT /api/aiops/admin/connection-setup —
get_cloud_runtime GET /api/aiops/admin/tenants/{tenant_id}/cloud-runtime —
put_cloud_runtime PUT /api/aiops/admin/tenants/{tenant_id}/cloud-runtime —
mint_runner_token POST /api/aiops/admin/tenants/{tenant_id}/runner-tokens —
list_runner_tokens GET /api/aiops/admin/tenants/{tenant_id}/runner-tokens —
revoke_runner_token DELETE /api/aiops/admin/tenants/{tenant_id}/runner-tokens/{token_id} —

Separate protocols

Browser login/OIDC redirects, incoming webhooks, internal private-agent claims/checkpoints/secrets, the OpenAI-compatible agent facade, and live SSE streams keep their own protocols. They are not generic MCP tools. MCP cannot choose an arbitrary URL, HTTP method or Authorization header for an operation.

The source catalogue is app/mcp_operations.json. Regenerate both copies of this reference with python scripts/render-mcp-reference.py from the repository root. A coverage check fails if a new management route has no reviewed binding or an existing binding loses its REST route.

Next steps