Mule Operations Analysis
Produce an evidence-backed operational assessment across the applications that participate in a
request, event, scheduler, or batch path. Treat application roles as discovered facts rather than
assuming every project uses a Process API and System API pair.
Privacy and reuse boundary
- Treat logs, audit records, configuration, payloads, correlation identifiers, application names,
organization details, user names, and endpoints as potentially sensitive.
- Use actual identifiers only when required to query the authorized environment. Do not copy them
into this reusable skill, examples, unrelated reports, or future project guidance.
- Never include secrets, tokens, raw payloads, personal data, tenant identifiers, private hostnames,
or deployer identity in a report. Paraphrase representative messages and redact identifiers.
- Generalize prior incident lessons into diagnostic checks. Never encode a prior client's topology,
volumes, schedules, retention periods, error counts, or system names as defaults.
Establish the analysis map
Before collecting telemetry, determine:
- Requested environment, time window, and reporting timezone.
- Entry application and all known participating Mule applications.
- Each application's role, such as entry API, orchestration service, system-facing API, worker,
scheduler, or event consumer.
- Expected dependency edges and correlation mechanism from repository or deployment evidence.
- Whether the user wants a single-app check, an end-to-end chain, or an environment-wide review.
Discover these facts from the current repository and authorized Anypoint metadata first. If scope is
still ambiguous, offer concise options and allow the user to skip unknown items. Do not invent a
companion application or an API-led layer.
Use neutral placeholders in examples:
| Placeholder |
Meaning |
<ENTRY_APP> |
Application where the observed path begins |
<DEPENDENCY_APP> |
Participating downstream or asynchronous Mule application |
<ENV> |
Authorized Anypoint environment |
<HOURS> |
Requested lookback window |
Evidence states
Classify material conclusions:
| State |
Meaning |
| Observed |
Directly present in telemetry or deployment metadata |
| Correlated |
Events align by correlation ID or timestamp with adequate coverage |
| Hypothesis |
Plausible explanation that still needs a discriminating check |
| Confirmed |
Hypothesis supported by the relevant application and dependency evidence |
| Unresolved |
Evidence is missing, contradictory, or outside retention |
Never label temporal overlap as causation by itself.
Workflow
0. Confirm Anypoint access
Runtime evidence comes from an authenticated connector, so establish access state before the first
collection call. Follow Anypoint access readiness: probe with
whoami and list_environments, classify the result, and when the state is not Ready offer the
user setup, supplied exports, or a repository-only scope with labeled gaps.
Do not use a collection tool as the probe, and do not treat a tool error mid-collection as an
environment finding. Record the resulting access state for the coverage ledger.
1. Collect broad signals
For every in-scope application, collect independent telemetry in parallel when the tools support it:
mcp_anypoint-connect_get_log_stats(appName: "<APP>", environment: "<ENV>", hoursBack: <HOURS>)
mcp_anypoint-connect_analyze_errors(appName: "<APP>", environment: "<ENV>", hoursBack: <HOURS>)
mcp_anypoint-connect_get_log_patterns(appName: "<APP>", environment: "<ENV>", hoursBack: <HOURS>)
mcp_anypoint-connect_get_app_status(appName: "<APP>", environment: "<ENV>")
Collect environment metrics once, then filter to the in-scope applications:
mcp_anypoint-connect_get_metrics(environment: "<ENV>", hoursBack: <HOURS>)
mcp_anypoint-connect_get_performance_metrics(environment: "<ENV>", hoursBack: <HOURS>)
mcp_anypoint-connect_get_memory_metrics(environment: "<ENV>", hoursBack: <HOURS>)
mcp_anypoint-connect_get_worker_metrics(environment: "<ENV>", hoursBack: <HOURS>)
Record for each source:
- requested window and actual earliest/latest timestamp
- entry count, unique correlations when available, and log-level distribution
- grouped errors with counts, first/last occurrence, flow, and representative correlation IDs
- request volume, average and percentile latency, outbound calls, memory, GC, and replica balance
- gaps, truncation, sampling, aggregation interval, and tool errors
Do not compare applications over unequal coverage without narrowing to their overlapping window.
2. Add deployment and change context
Query recent application audit activity and current status:
mcp_anypoint-connect_get_audit_log(hoursBack: <AUDIT_WINDOW>, objectTypes: ["Application"], limit: <LIMIT>)
Convert epoch timestamps explicitly and report the timezone. Compare deployments, restarts, replica
transitions, and configuration changes with error or latency windows. Treat audit snapshots as
historical state and query current application status before describing present health.
Read the current repository's changelog, commit history, deployment workflow, and version metadata
when available. Match the running artifact version before attributing a behavior to a code change.
3. Build a coverage ledger
Create a compact table before drawing conclusions:
| Source |
Requested window |
Actual coverage |
Gaps |
Safe comparison window |
| Anypoint access |
... |
Access state from step 0 |
Analysis paths it closed |
... |
| Entry logs |
... |
... |
... |
... |
| Dependency logs |
... |
... |
... |
... |
| Metrics |
... |
... |
... |
... |
| Audit events |
... |
... |
... |
... |
High-volume or verbose logging can shorten accessible history. Verify retention from timestamps;
never assume one application retains less data because of its architectural role.
4. Correlate the path
For each dominant or high-severity signature:
- Identify the earliest observed failing component and time.
- Trace the same correlation identifier across participating applications when propagation is
verified. If it is not propagated, correlate by a narrow timestamp, route, and operation while
lowering confidence.
- Separate the component that reports an error from the component that originates it.
- Check response status, connector error, retry wrapper, error-handler outcome, and final caller
result.
- Deduplicate multiple log entries from the same transaction before calculating incident counts.
- Verify whether logs cover the interval and whether relevant failures are logged at ERROR, WARN,
INFO, or only as structured response fields.
A caller-side 5xx with no dependency ERROR entry does not prove that an external system caused the
failure. Possible explanations include incomplete retention, different log levels, handled errors,
missing correlation propagation, proxy behavior, or an unobserved dependency. List the checks that
would distinguish them.
5. Investigate conditional signals
- Latency: Pull time series for the affected app and compare latency with traffic, outbound
duration, CPU, memory, GC, and replica balance.
- Error bursts: Compare the burst with schedulers, batch instances, queue depth, retries,
dependency limits, and deployments.
- Memory: Look for sustained baseline growth after GC, allocation spikes, full-GC pressure, or
a single replica diverging from peers. A sawtooth alone is normal and not proof of a leak.
- Back pressure or rate limits: Estimate effective concurrency from flow limits, source
consumers, batch-job concurrency, parallel scopes, replicas, and dependency quotas.
- Warnings: Sample by pattern and verify recovery or impact. Do not declare a reconnect,
recursive-flow warning, ignored body, or cache miss harmless without checking the actual outcome.
Use focused retrieval only after broad collection identifies a reason:
mcp_anypoint-connect_get_logs(appName: "<APP>", environment: "<ENV>", search: "<SAFE_TERM>", lines: <LIMIT>)
mcp_anypoint-connect_get_metrics_timeseries(environment: "<ENV>", appName: "<APP>", hoursBack: <HOURS>, granularity: "5m")
mcp_anypoint-connect_get_memory_timeseries(environment: "<ENV>", appName: "<APP>", hoursBack: <HOURS>, granularity: "5m")
Search with the least sensitive stable term that identifies the flow or operation. Do not expose
raw results when a count and sanitized pattern are sufficient.
6. Report the result
Return the analysis in the requested location or directly in the response. Do not create a durable
artifact unless the user asks for one.
Use this structure:
# Runtime health analysis
**Window:** <START> to <END> <TIMEZONE>
**Scope:** <ROLE-BASED APPLICATION LIST>
## Assessment
One paragraph with current health, impact, and confidence.
## Coverage
Actual telemetry coverage and material gaps.
## Health signals
Comparable log, error, latency, memory, GC, and replica observations.
## Correlated incidents
Signature, affected path, count of unique transactions, evidence state, and user impact.
## Deployment and change context
Verified overlaps and what remains unproven.
## Actions
Prioritized immediate checks, durable improvements, owner role, and verification signal.
## Unresolved questions
Only questions whose answers would change the assessment.
State denominators and windows for every rate. Present percentile latency with request count. Keep
expected business filters separate from technical failures, and preserve an Unresolved state when
coverage cannot support attribution.
Reusable diagnostic lessons
- Interpret recurring mechanisms through
mule-development Classes A–E and its mandatory
cross-cutting gates. Use source inspection or troubleshooting before turning an operational signal
into a code conclusion.
- A retry-exhaustion summary is often secondary evidence; locate the underlying connector or
business error with the same correlation ID.
- Structured logger and exception-listener entries can describe one failed transaction; deduplicate
by correlation ID, flow, signature, and time before counting.
- A deployment overlapping an error spike is a hypothesis until lifecycle messages, replica state,
version changes, or before/after behavior support it.
- Application status and replica state are point-in-time observations. Distinguish desired,
transitioning, current, and last-successful versions when the API exposes them.
- Percentiles are unstable at low request counts. Always report the sample size.
- Correlation propagation must be verified in source or telemetry. Mule can adopt an inbound
X-CORRELATION-ID, but outbound propagation depends on configuration.
- Default log level, custom error handling, and proxy behavior determine where a failure appears;
absence from an error-grouping tool is not evidence of absence.
- The same error signature repeating every scheduler or poll cycle may be a dependency outage, a
permanent/poison record without terminal disposition, or intentional indefinite retry of retryable
errors. Hand off to troubleshooting Class D checks before assuming a terminal state is missing.
- Logged application version that does not match the packaged artifact makes before/after and
deploy correlation unreliable—confirm version surfaces before attributing behavior to a release.
- High-volume cache-miss ERROR noise can mean Object Store miss handling treats expected misses as
exceptional; confirm miss policy before scaling infrastructure.
- Do not recommend concurrency or pool numbers without measured traffic, replica count, and
dependency capacity for this environment.
Completion checklist
- Confirm the access state and, when it was not
Ready, what the assessment could not establish.
- Confirm every in-scope source's actual coverage.
- Confirm counts represent unique transactions or clearly label raw log-entry counts.
- Separate observations, hypotheses, confirmed causes, and recommendations.
- Confirm current state after any deployment-window finding.
- Flag repeating identical errors for disposition investigation (permanent/poison vs intentional retry).
- Check applicable cross-cutting security/configuration, capacity/lifecycle, delivery/transaction,
privacy/observability, and validation evidence before recommending a durable change.
- Match logged app version to packaged artifact when version metadata exists.
- Remove secrets, payloads, identities, private endpoints, and raw correlation identifiers.
- State what was not checked and why.
1---2name: mule-ops3description: Analyze MuleSoft runtime health across one or more applications using Anypoint logs, metrics, deployment state, and cross-system correlation. Use for production or non-production health checks, incident windows, error spikes, latency or memory investigations, deployment-impact checks, and recurring operational reviews. Use the available Anypoint connector when configured, or apply the same evidence workflow to exported telemetry. Do not use for source-code changes unless the user also requests a fix.4---56# Mule Operations Analysis78Produce an evidence-backed operational assessment across the applications that participate in a9request, event, scheduler, or batch path. Treat application roles as discovered facts rather than10assuming every project uses a Process API and System API pair.1112## Privacy and reuse boundary1314- Treat logs, audit records, configuration, payloads, correlation identifiers, application names,15 organization details, user names, and endpoints as potentially sensitive.16- Use actual identifiers only when required to query the authorized environment. Do not copy them17 into this reusable skill, examples, unrelated reports, or future project guidance.18- Never include secrets, tokens, raw payloads, personal data, tenant identifiers, private hostnames,19 or deployer identity in a report. Paraphrase representative messages and redact identifiers.20- Generalize prior incident lessons into diagnostic checks. Never encode a prior client's topology,21 volumes, schedules, retention periods, error counts, or system names as defaults.2223## Establish the analysis map2425Before collecting telemetry, determine:26271. Requested environment, time window, and reporting timezone.282. Entry application and all known participating Mule applications.293. Each application's role, such as entry API, orchestration service, system-facing API, worker,30 scheduler, or event consumer.314. Expected dependency edges and correlation mechanism from repository or deployment evidence.325. Whether the user wants a single-app check, an end-to-end chain, or an environment-wide review.3334Discover these facts from the current repository and authorized Anypoint metadata first. If scope is35still ambiguous, offer concise options and allow the user to skip unknown items. Do not invent a36companion application or an API-led layer.3738Use neutral placeholders in examples:3940| Placeholder | Meaning |41| --- | --- |42| `<ENTRY_APP>` | Application where the observed path begins |43| `<DEPENDENCY_APP>` | Participating downstream or asynchronous Mule application |44| `<ENV>` | Authorized Anypoint environment |45| `<HOURS>` | Requested lookback window |4647## Evidence states4849Classify material conclusions:5051| State | Meaning |52| --- | --- |53| Observed | Directly present in telemetry or deployment metadata |54| Correlated | Events align by correlation ID or timestamp with adequate coverage |55| Hypothesis | Plausible explanation that still needs a discriminating check |56| Confirmed | Hypothesis supported by the relevant application and dependency evidence |57| Unresolved | Evidence is missing, contradictory, or outside retention |5859Never label temporal overlap as causation by itself.6061## Workflow6263### 0. Confirm Anypoint access6465Runtime evidence comes from an authenticated connector, so establish access state before the first66collection call. Follow [Anypoint access readiness](references/anypoint-readiness.md): probe with67`whoami` and `list_environments`, classify the result, and when the state is not `Ready` offer the68user setup, supplied exports, or a repository-only scope with labeled gaps.6970Do not use a collection tool as the probe, and do not treat a tool error mid-collection as an71environment finding. Record the resulting access state for the coverage ledger.7273### 1. Collect broad signals7475For every in-scope application, collect independent telemetry in parallel when the tools support it:7677```text78mcp_anypoint-connect_get_log_stats(appName: "<APP>", environment: "<ENV>", hoursBack: <HOURS>)79mcp_anypoint-connect_analyze_errors(appName: "<APP>", environment: "<ENV>", hoursBack: <HOURS>)80mcp_anypoint-connect_get_log_patterns(appName: "<APP>", environment: "<ENV>", hoursBack: <HOURS>)81mcp_anypoint-connect_get_app_status(appName: "<APP>", environment: "<ENV>")82```8384Collect environment metrics once, then filter to the in-scope applications:8586```text87mcp_anypoint-connect_get_metrics(environment: "<ENV>", hoursBack: <HOURS>)88mcp_anypoint-connect_get_performance_metrics(environment: "<ENV>", hoursBack: <HOURS>)89mcp_anypoint-connect_get_memory_metrics(environment: "<ENV>", hoursBack: <HOURS>)90mcp_anypoint-connect_get_worker_metrics(environment: "<ENV>", hoursBack: <HOURS>)91```9293Record for each source:9495- requested window and actual earliest/latest timestamp96- entry count, unique correlations when available, and log-level distribution97- grouped errors with counts, first/last occurrence, flow, and representative correlation IDs98- request volume, average and percentile latency, outbound calls, memory, GC, and replica balance99- gaps, truncation, sampling, aggregation interval, and tool errors100101Do not compare applications over unequal coverage without narrowing to their overlapping window.102103### 2. Add deployment and change context104105Query recent application audit activity and current status:106107```text108mcp_anypoint-connect_get_audit_log(hoursBack: <AUDIT_WINDOW>, objectTypes: ["Application"], limit: <LIMIT>)109```110111Convert epoch timestamps explicitly and report the timezone. Compare deployments, restarts, replica112transitions, and configuration changes with error or latency windows. Treat audit snapshots as113historical state and query current application status before describing present health.114115Read the current repository's changelog, commit history, deployment workflow, and version metadata116when available. Match the running artifact version before attributing a behavior to a code change.117118### 3. Build a coverage ledger119120Create a compact table before drawing conclusions:121122| Source | Requested window | Actual coverage | Gaps | Safe comparison window |123| --- | --- | --- | --- | --- |124| Anypoint access | ... | Access state from step 0 | Analysis paths it closed | ... |125| Entry logs | ... | ... | ... | ... |126| Dependency logs | ... | ... | ... | ... |127| Metrics | ... | ... | ... | ... |128| Audit events | ... | ... | ... | ... |129130High-volume or verbose logging can shorten accessible history. Verify retention from timestamps;131never assume one application retains less data because of its architectural role.132133### 4. Correlate the path134135For each dominant or high-severity signature:1361371. Identify the earliest observed failing component and time.1382. Trace the same correlation identifier across participating applications when propagation is139 verified. If it is not propagated, correlate by a narrow timestamp, route, and operation while140 lowering confidence.1413. Separate the component that reports an error from the component that originates it.1424. Check response status, connector error, retry wrapper, error-handler outcome, and final caller143 result.1445. Deduplicate multiple log entries from the same transaction before calculating incident counts.1456. Verify whether logs cover the interval and whether relevant failures are logged at ERROR, WARN,146 INFO, or only as structured response fields.147148A caller-side 5xx with no dependency ERROR entry does not prove that an external system caused the149failure. Possible explanations include incomplete retention, different log levels, handled errors,150missing correlation propagation, proxy behavior, or an unobserved dependency. List the checks that151would distinguish them.152153### 5. Investigate conditional signals154155- **Latency:** Pull time series for the affected app and compare latency with traffic, outbound156 duration, CPU, memory, GC, and replica balance.157- **Error bursts:** Compare the burst with schedulers, batch instances, queue depth, retries,158 dependency limits, and deployments.159- **Memory:** Look for sustained baseline growth after GC, allocation spikes, full-GC pressure, or160 a single replica diverging from peers. A sawtooth alone is normal and not proof of a leak.161- **Back pressure or rate limits:** Estimate effective concurrency from flow limits, source162 consumers, batch-job concurrency, parallel scopes, replicas, and dependency quotas.163- **Warnings:** Sample by pattern and verify recovery or impact. Do not declare a reconnect,164 recursive-flow warning, ignored body, or cache miss harmless without checking the actual outcome.165166Use focused retrieval only after broad collection identifies a reason:167168```text169mcp_anypoint-connect_get_logs(appName: "<APP>", environment: "<ENV>", search: "<SAFE_TERM>", lines: <LIMIT>)170mcp_anypoint-connect_get_metrics_timeseries(environment: "<ENV>", appName: "<APP>", hoursBack: <HOURS>, granularity: "5m")171mcp_anypoint-connect_get_memory_timeseries(environment: "<ENV>", appName: "<APP>", hoursBack: <HOURS>, granularity: "5m")172```173174Search with the least sensitive stable term that identifies the flow or operation. Do not expose175raw results when a count and sanitized pattern are sufficient.176177### 6. Report the result178179Return the analysis in the requested location or directly in the response. Do not create a durable180artifact unless the user asks for one.181182Use this structure:183184```markdown185# Runtime health analysis186187**Window:** <START> to <END> <TIMEZONE>188**Scope:** <ROLE-BASED APPLICATION LIST>189190## Assessment191One paragraph with current health, impact, and confidence.192193## Coverage194Actual telemetry coverage and material gaps.195196## Health signals197Comparable log, error, latency, memory, GC, and replica observations.198199## Correlated incidents200Signature, affected path, count of unique transactions, evidence state, and user impact.201202## Deployment and change context203Verified overlaps and what remains unproven.204205## Actions206Prioritized immediate checks, durable improvements, owner role, and verification signal.207208## Unresolved questions209Only questions whose answers would change the assessment.210```211212State denominators and windows for every rate. Present percentile latency with request count. Keep213expected business filters separate from technical failures, and preserve an `Unresolved` state when214coverage cannot support attribution.215216## Reusable diagnostic lessons217218- Interpret recurring mechanisms through `mule-development` Classes A–E and its mandatory219 cross-cutting gates. Use source inspection or troubleshooting before turning an operational signal220 into a code conclusion.221- A retry-exhaustion summary is often secondary evidence; locate the underlying connector or222 business error with the same correlation ID.223- Structured logger and exception-listener entries can describe one failed transaction; deduplicate224 by correlation ID, flow, signature, and time before counting.225- A deployment overlapping an error spike is a hypothesis until lifecycle messages, replica state,226 version changes, or before/after behavior support it.227- Application status and replica state are point-in-time observations. Distinguish desired,228 transitioning, current, and last-successful versions when the API exposes them.229- Percentiles are unstable at low request counts. Always report the sample size.230- Correlation propagation must be verified in source or telemetry. Mule can adopt an inbound231 `X-CORRELATION-ID`, but outbound propagation depends on configuration.232- Default log level, custom error handling, and proxy behavior determine where a failure appears;233 absence from an error-grouping tool is not evidence of absence.234- The same error signature repeating every scheduler or poll cycle may be a dependency outage, a235 permanent/poison record without terminal disposition, or intentional indefinite retry of retryable236 errors. Hand off to troubleshooting Class D checks before assuming a terminal state is missing.237- Logged application version that does not match the packaged artifact makes before/after and238 deploy correlation unreliable—confirm version surfaces before attributing behavior to a release.239- High-volume cache-miss ERROR noise can mean Object Store miss handling treats expected misses as240 exceptional; confirm miss policy before scaling infrastructure.241- Do not recommend concurrency or pool numbers without measured traffic, replica count, and242 dependency capacity for this environment.243244## Completion checklist245246- Confirm the access state and, when it was not `Ready`, what the assessment could not establish.247- Confirm every in-scope source's actual coverage.248- Confirm counts represent unique transactions or clearly label raw log-entry counts.249- Separate observations, hypotheses, confirmed causes, and recommendations.250- Confirm current state after any deployment-window finding.251- Flag repeating identical errors for disposition investigation (permanent/poison vs intentional retry).252- Check applicable cross-cutting security/configuration, capacity/lifecycle, delivery/transaction,253 privacy/observability, and validation evidence before recommending a durable change.254- Match logged app version to packaged artifact when version metadata exists.255- Remove secrets, payloads, identities, private endpoints, and raw correlation identifiers.256- State what was not checked and why.