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
- What is waiting on me:
needs_youlists every decision waiting on a person, most urgent first: incidents awaiting approval, escalated incidents, change approvals, merge proposals, risk requests, post-implementation reviews and routes a rollback or a deviated fix demoted, with a count pertype; passtypeto page through one kind.list_pending_approvalsholds only the tool-call approvals of paused analyses. - Ticket systems:
discover_ticket_systemchecks a Jira, ServiceNow or Azure DevOps connection without writing to it.send_test_ticketfiles a real ticket through the route and closes it again.retry_incident_ticketretries a failed filing or write-back, or writes back to a customer's own ticket that was left to a person. - Several connections into one account: an AWS or Azure read connection runs four jobs unless its
configswitches one off withfalse:harvest_inventory,platform_checks,sync_findingsandharvest_changes; an AWS one also runsservice_map, andbuiltin_detectionwhile the workspace has built-in detection on. Apatch_datasourceconfigreplaces the whole config: read the connection's currentconfigfromlist_datasources, change only the switch and send all of it back. A config holding only the switches drops every other key, such as the role ARN, region or subscription, and the jobs left on then fail. - Workspace toggles without their own tool: send them in
patch_tenantbody.settings, for exampleaiops_prompt_cacheandaiops_prompt_diet(true,false, ornullfor the platform default);get_tenantreads them back. The benchmark run tools takeprompt_dietthe same way to measure both arms on one build, andcompare_benchmarknames each run's arm. - Fix some resources now:
reinvestigate_incidentwithbody.defer= the open resources of a scanner incident (resource ARN, else the resource) to leave out of THIS analysis — a maintenance window, downtime. Not a decision: they stay open and nothing expires; the change request lists them as Not in this run and a certified runbook never releases that change on its own. - Retention:
preview_retention_sweepshows what the next sweep would remove and writes nothing;run_retention_sweepwithbody.dry_run=falseseals the affected months' usage statements and deletes the closed records past the window.
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.