Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 23 additions & 1 deletion backend/modules/mcp/catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -458,7 +458,29 @@
{"name": "store.search_sql", "status": "implemented", "module": "store", "title": "SQL search", "description": "Run a read-only ClickHouse SQL query. The FROM clause must reference the logs / alerts CTEs (already tenant-scoped).", "permission": "loganalyzer.read", "annotations": {"readOnlyHint": true}, "input": {"type": "object", "properties": {"query": {"type": "string"}, "page": {"type": "integer"}, "size": {"type": "integer"}}, "required": ["query"]}, "output": "{ hits: object[], total: int64 }", "maps_to": "eventstore.Store.Conn.Query"},
{"name": "store.search_csv", "status": "implemented", "module": "store", "title": "Search and project rows to columns", "permission": "loganalyzer.read", "annotations": {"readOnlyHint": true}, "input": {"type": "object", "properties": {"dataset": {"type": "string"}, "data_type": {"type": "string"}, "filters": {"type": "array"}, "columns": {"type": "array", "items": {"type": "string"}}, "top": {"type": "integer"}}, "required": ["dataset", "columns"]}, "output": "object[] — rows projected to the requested columns", "maps_to": "eventstore.Store.FetchPage"},
{"name": "store.datasets", "status": "implemented", "module": "store", "title": "List datasets", "permission": "loganalyzer.read", "annotations": {"readOnlyHint": true}, "input": {"type": "object", "properties": {}}, "output": "string[]", "maps_to": "static: logs | alerts | statistics"},
{"name": "store.dataset.fields", "status": "implemented", "module": "store", "title": "List fields for a dataset", "description": "Describe the queryable fields of a dataset (name, type, filterable, searchable).", "permission": "loganalyzer.read", "annotations": {"readOnlyHint": true}, "input": {"type": "object", "properties": {"dataset": {"type": "string"}}, "required": ["dataset"]}, "output": "[{name, type, filterable, searchable}]", "maps_to": "eventstore.Store.DescribeFields"}
{"name": "store.dataset.fields", "status": "implemented", "module": "store", "title": "List fields for a dataset", "description": "Describe the queryable fields of a dataset (name, type, filterable, searchable).", "permission": "loganalyzer.read", "annotations": {"readOnlyHint": true}, "input": {"type": "object", "properties": {"dataset": {"type": "string"}}, "required": ["dataset"]}, "output": "[{name, type, filterable, searchable}]", "maps_to": "eventstore.Store.DescribeFields"},

{"name": "platform.pipeline.bulk_create", "status": "implemented", "module": "eventprocessing", "title": "Bulk create pipeline across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Installs the same pipeline (relPath + YAML content) in every selected tenant. Partial success is normal: system-owned pipelines refuse per tenant and are recorded in `failed`.", "permission": "eventprocessing.write", "platform": true, "annotations": {"destructiveHint": true}, "input": {"type": "object", "properties": {"selector": {"type": "object", "properties": {"tenant_ids": {"type": "array", "items": {"type": "string"}}, "all_tenants": {"type": "boolean"}}}, "rel_path": {"type": "string"}, "content": {"type": "string"}}, "required": ["selector", "rel_path", "content"]}, "output": "{ succeeded: string[], failed: [{tenantId, error}] }", "maps_to": "eventprocessing.PipelineUsecase.Create × N"},
{"name": "platform.pipeline.bulk_update", "status": "implemented", "module": "eventprocessing", "title": "Bulk update pipeline across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Rewrites the pipeline with matching relPath across selected tenants. System-owned pipelines refuse per tenant.", "permission": "eventprocessing.write", "platform": true, "annotations": {"idempotentHint": true}, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "rel_path": {"type": "string"}, "content": {"type": "string"}}, "required": ["selector", "rel_path", "content"]}, "output": "{ succeeded, failed }", "maps_to": "eventprocessing.PipelineUsecase.Update × N"},
{"name": "platform.pipeline.bulk_delete", "status": "implemented", "module": "eventprocessing", "title": "Bulk delete pipeline across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Deletes the pipeline with matching relPath across selected tenants. System-owned pipelines refuse per tenant.", "permission": "eventprocessing.write", "platform": true, "annotations": {"destructiveHint": true}, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "rel_path": {"type": "string"}}, "required": ["selector", "rel_path"]}, "output": "{ succeeded, failed }", "maps_to": "eventprocessing.PipelineUsecase.Delete × N"},
{"name": "platform.pipeline.bulk_set_active", "status": "implemented", "module": "eventprocessing", "title": "Bulk activate/deactivate pipeline across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Enables or disables the pipeline per tenant.", "permission": "eventprocessing.write", "platform": true, "annotations": {"idempotentHint": true}, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "rel_path": {"type": "string"}, "active": {"type": "boolean"}}, "required": ["selector", "rel_path", "active"]}, "output": "{ succeeded, failed }", "maps_to": "eventprocessing.PipelineUsecase.SetActive × N"},

{"name": "platform.correlation_rule.bulk_create", "status": "implemented", "module": "eventprocessing", "title": "Bulk create correlation rule across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Installs the same correlation rule in every selected tenant. System-owned rules refuse per tenant.", "permission": "eventprocessing.write", "platform": true, "annotations": {"destructiveHint": true}, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "rule": {"type": "object"}}, "required": ["selector", "rule"]}, "output": "{ succeeded, failed }", "maps_to": "eventprocessing.CorrelationRuleUsecase.Create × N"},
{"name": "platform.correlation_rule.bulk_update", "status": "implemented", "module": "eventprocessing", "title": "Bulk update correlation rule across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Updates the correlation rule with matching relPath across tenants. System-owned rules refuse per tenant.", "permission": "eventprocessing.write", "platform": true, "annotations": {"idempotentHint": true}, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "rule": {"type": "object"}}, "required": ["selector", "rule"]}, "output": "{ succeeded, failed }", "maps_to": "eventprocessing.CorrelationRuleUsecase.Update × N"},
{"name": "platform.correlation_rule.bulk_delete", "status": "implemented", "module": "eventprocessing", "title": "Bulk delete correlation rule across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Deletes the correlation rule with matching relPath across tenants. System-owned rules refuse per tenant.", "permission": "eventprocessing.write", "platform": true, "annotations": {"destructiveHint": true}, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "rel_path": {"type": "string"}}, "required": ["selector", "rel_path"]}, "output": "{ succeeded, failed }", "maps_to": "eventprocessing.CorrelationRuleUsecase.Delete × N"},
{"name": "platform.correlation_rule.bulk_set_active", "status": "implemented", "module": "eventprocessing", "title": "Bulk activate/deactivate correlation rule across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Enables or disables the correlation rule per tenant.", "permission": "eventprocessing.write", "platform": true, "annotations": {"idempotentHint": true}, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "rel_path": {"type": "string"}, "active": {"type": "boolean"}}, "required": ["selector", "rel_path", "active"]}, "output": "{ succeeded, failed }", "maps_to": "eventprocessing.CorrelationRuleUsecase.SetActive × N"},

{"name": "platform.compliance.framework.bulk_create", "status": "implemented", "module": "compliance", "title": "Bulk create compliance framework across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Adds the same custom framework in every selected tenant.", "permission": "compliance.write", "platform": true, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "key": {"type": "string"}, "name": {"type": "string"}, "description": {"type": "string"}, "source": {"type": "string"}, "sections": {"type": "array"}}, "required": ["selector", "key", "name"]}, "output": "{ succeeded, failed }", "maps_to": "compliance.FrameworkUsecase.CreateFramework × N"},
{"name": "platform.compliance.framework.bulk_update", "status": "implemented", "module": "compliance", "title": "Bulk update compliance framework across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Updates the framework across tenants. Vendor/system frameworks refuse per tenant.", "permission": "compliance.write", "platform": true, "annotations": {"idempotentHint": true}, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "key": {"type": "string"}, "name": {"type": "string"}, "description": {"type": "string"}, "source": {"type": "string"}, "sections": {"type": "array"}}, "required": ["selector", "key", "name"]}, "output": "{ succeeded, failed }", "maps_to": "compliance.FrameworkUsecase.UpdateFramework × N"},
{"name": "platform.compliance.framework.bulk_delete", "status": "implemented", "module": "compliance", "title": "Bulk delete compliance framework across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Removes the framework overlay across tenants. System-shipped frameworks refuse per tenant.", "permission": "compliance.write", "platform": true, "annotations": {"destructiveHint": true}, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "key": {"type": "string"}}, "required": ["selector", "key"]}, "output": "{ succeeded, failed }", "maps_to": "compliance.FrameworkUsecase.DeleteFramework × N"},

{"name": "platform.compliance.control.bulk_create", "status": "implemented", "module": "compliance", "title": "Bulk create compliance control across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Adds the same custom control across selected tenants.", "permission": "compliance.write", "platform": true, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "id": {"type": "string"}, "family": {"type": "string"}, "family_name": {"type": "string"}, "name": {"type": "string"}, "scope": {"type": "string"}, "statement": {"type": "string"}, "remediation": {"type": "string"}, "strategy": {"type": "string"}, "checks": {"type": "array"}, "source": {"type": "string"}}, "required": ["selector", "id", "name"]}, "output": "{ succeeded, failed }", "maps_to": "compliance.FrameworkUsecase.CreateControl × N"},
{"name": "platform.compliance.control.bulk_update", "status": "implemented", "module": "compliance", "title": "Bulk update compliance control across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Updates the control across selected tenants. System controls refuse per tenant.", "permission": "compliance.write", "platform": true, "annotations": {"idempotentHint": true}, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "id": {"type": "string"}, "name": {"type": "string"}}, "required": ["selector", "id", "name"]}, "output": "{ succeeded, failed }", "maps_to": "compliance.FrameworkUsecase.UpdateControl × N"},
{"name": "platform.compliance.control.bulk_delete", "status": "implemented", "module": "compliance", "title": "Bulk delete compliance control across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Deletes the control overlay across selected tenants. System controls refuse per tenant.", "permission": "compliance.write", "platform": true, "annotations": {"destructiveHint": true}, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "id": {"type": "string"}}, "required": ["selector", "id"]}, "output": "{ succeeded, failed }", "maps_to": "compliance.FrameworkUsecase.DeleteControl × N"},

{"name": "platform.config.smtp.bulk_update", "status": "implemented", "module": "appconfig", "title": "Bulk update SMTP config across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Upserts one or more utmstack.mail.* fields (host, port, username, password, from, etc.) across selected tenants. When all_tenants=true the platform default tenant is filtered out to prevent silent overwrite.", "permission": "config.write", "platform": true, "annotations": {"idempotentHint": true}, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "fields": {"type": "array", "items": {"type": "object", "properties": {"key": {"type": "string"}, "value": {"type": "string"}}}}}, "required": ["selector", "fields"]}, "output": "{ succeeded, failed }", "maps_to": "appconfig.ConfigUsecase.Update × N × fields"},

{"name": "platform.branding.bulk_update", "status": "implemented", "module": "appconfig", "title": "Bulk update branding across tenants (super admin only)", "description": "SUPER ADMIN ONLY. Applies the same branding (product name, colors, logo URLs, enabled flag) across selected tenants. Requires an Enterprise license per tenant. all_tenants=true skips the platform default tenant.", "permission": "config.write", "platform": true, "annotations": {"idempotentHint": true}, "input": {"type": "object", "properties": {"selector": {"type": "object"}, "enabled": {"type": "boolean"}, "product_name": {"type": "string"}, "logo_url": {"type": "string"}, "logo_dark_url": {"type": "string"}, "favicon_url": {"type": "string"}, "report_logo_url": {"type": "string"}, "report_cover_url": {"type": "string"}, "accent_color": {"type": "string"}}, "required": ["selector"]}, "output": "{ succeeded, failed }", "maps_to": "appconfig.BrandingUsecase.Update × N"}
],

"resources": [
Expand Down
1 change: 1 addition & 0 deletions backend/modules/mcp/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ func (m *Module) buildServer() *mcp.Server {
registerBilling(m)
registerSOCAI(m)
registerTenants(m)
registerPlatformBulk(m)

registerResources(m)

Expand Down
Loading
Loading