Orca Account Health Skill
Answers the question: "Is every account connected, recently synced, and fully scanned — so we can trust the data we're about to act on?"
Blind spots in account coverage produce blind spots in every other skill: if prod-eu-west last synced 48 hours ago, the alerts you triage are stale. This skill audits the foundation.
Usage
/orca-account-health
/orca-account-health aws
/orca-account-health degraded
Or natural language:
- "are all accounts connected?"
- "is everything synced?"
- "coverage audit before the audit"
- "any blind spots?"
- "show me account health"
Processing Logic
Step 1: Determine Scope
Parse the input:
- No arg: full inventory across all clouds.
- Provider arg (
aws,gcp,azure,kubernetes,oci): filter to one cloud. - Status arg (
degraded,offline,healthy): filter by health.
Step 2: Pull integration configs (single call)
get_integration_configs_data:
This returns every configured integration / source: cloud accounts, log sources (CloudTrail, Azure Monitor, etc.), Kubernetes clusters, and their extraction settings. Parse out:
- Source type and provider
- Connection state
- Last successful run / sync timestamp
- Any error messages or degraded indicators
Step 3: Cross-check coverage with discovery (parallel)
In parallel with Step 2, run two discovery_search queries to spot-check that data is actually flowing — not just that the connection exists:
Query A: Asset freshness per account
discovery_search:
search_phrase: "assets grouped by cloud account"
limit: 50
Query B: Recent CDR event flow (confirms log ingestion, not just inventory)
discovery_search:
search_phrase: "cloud audit events in the last 24 hours grouped by account"
limit: 50
If an account appears in get_integration_configs_data but returns zero assets or zero recent CDR events, that's a covert blind spot even though the integration reports "connected."
Step 4: Compute per-account health
For each account, derive a health verdict:
| State | Definition |
|---|---|
| Healthy | Connected, synced in last 24h, scanner deployed, ≥1 recent CDR event |
| Sync Lag | Connected, last sync 24–72h ago, scanner deployed |
| Stale | Connected, last sync > 72h ago |
| Degraded | Connection error reported, OR scanner missing, OR no CDR events in 72h |
| Offline | Never synced, OR connection broken |
| Recently Added | Onboarded in the last 7 days (verify onboarding finished) |
Step 5: Detect specific blind-spot patterns
Flag these patterns explicitly — they're the ones that bite during audits or investigations:
- Account is connected but produces no assets → onboarding likely incomplete.
- Account is connected, has assets, but no CDR events in 24h → audit log integration broken (CloudTrail / Azure Monitor / GCP Audit Logs misrouted).
- Scanner deployed but stuck on a stale scan → SideScanning or workload scanner needs restart.
- New account added < 7 days ago, no successful sync yet → onboarding incomplete or failed silently.
- Provider drift — account listed in one cloud's console but missing from Orca.
Proactive Behavior
This skill is diagnostic, not remediation-heavy — but it should still surface the next step:
- Identify the worst blind spot and recommend a specific fix:
- "Reconnect
prod-eu-west— last sync 48h ago, no CDR events. Open Orca Console → Cloud Accounts → Reconnect."
- "Reconnect
- For onboarding failures, link to the docs:
/orca-account-healthshould referencedocumentation_searchfor "onboarding troubleshooting" if user asks "how do I fix it".
- Pre-audit framing: if the user said "before the audit", explicitly say whether they can proceed or need to wait for re-sync.
Output Format
Layer 1: Coverage Dashboard
═══════════════════════════════════════════════════════════════════
ACCOUNT HEALTH — Cloud Coverage Audit
<date> | <scope>
═══════════════════════════════════════════════════════════════════
VERDICT: <one-liner — "Full coverage, all green" / "1 offline, 2 sync lag, action needed">
┌─────────────────────────────────────────────────────────────────┐
│ TOTAL ACCOUNTS <N> │
│ HEALTHY <N> │
│ SYNC LAG <N> (24-72h since last sync) │
│ STALE <N> (> 72h since last sync) │
│ DEGRADED <N> (errors / scanner gap / no CDR) │
│ OFFLINE <N> (broken / never synced) │
│ RECENTLY ADDED <N> (onboarded < 7d, verify completion) │
│ BLIND SPOTS <N> (connected but no data flowing) │
└─────────────────────────────────────────────────────────────────┘
ACCOUNT STATUS:
Account Provider Last Sync Scanner CDR Status
────────────────────────────────────────────────────────────────────────
<account-1> AWS 2 min ago YES OK Healthy
<account-2> AWS 26 hours ago YES OK Sync Lag
<account-3> Azure Never NO — Offline
<account-4> GCP 2h ago YES NO Degraded
...
BLIND SPOTS (immediate attention):
[!] <account> — <specific issue>
Impact: <what's invisible because of this gap>
Fix: <specific action>
[!] <account> — ...
RECOMMENDED ACTION:
Reconnect <account> first — <reason>.
After reconnect, re-run any pending investigation or audit.
═══════════════════════════════════════════════════════════════════
Or drill down: degraded | offline | sync-lag | recently-added |
by-provider | full
═══════════════════════════════════════════════════════════════════
Layer 2: Drill-Downs
"degraded" — Accounts with active problems
───────────────────────────────────────────────────────────────────
DEGRADED ACCOUNTS — Active Issues
───────────────────────────────────────────────────────────────────
[!] <account> (<provider>)
Connection: <state>
Last sync: <time>
Scanner: <deployed / missing / stuck>
CDR ingestion: <events in 24h or "none">
Error: <reported error message>
Impact: <what's invisible — e.g. "any investigation in this
account is missing the last 6h of CDR data">
Fix: <specific action — link to documentation_search if needed>
[!] <account> — ...
───────────────────────────────────────────────────────────────────
"offline" — Broken or never-synced accounts
───────────────────────────────────────────────────────────────────
OFFLINE ACCOUNTS
───────────────────────────────────────────────────────────────────
These accounts are configured but Orca has no data:
[X] <account> (<provider>)
Last successful sync: <date or NEVER>
Connection error: <message>
Likely cause: <inferred — e.g. revoked role, deleted trust policy>
Fix path: <action>
───────────────────────────────────────────────────────────────────
"sync-lag" — Accounts behind on sync
───────────────────────────────────────────────────────────────────
SYNC LAG — 24-72h Behind
───────────────────────────────────────────────────────────────────
<account> (<provider>) — last sync <time> ago
Why it matters: <e.g. "alerts triaged here may be missing the
last day of activity">
...
If urgency is high (audit, investigation), force a re-sync:
Orca Console → Cloud Accounts → <account> → Sync Now
───────────────────────────────────────────────────────────────────
"recently-added" — New accounts (verify onboarding)
───────────────────────────────────────────────────────────────────
RECENTLY ADDED ACCOUNTS — Verify Onboarding
───────────────────────────────────────────────────────────────────
<account> (<provider>) — added <N> days ago
First sync: <success / pending / failed>
Assets discovered: <N>
Scanner deployed: <Y/N>
CDR ingestion: <active / pending>
Onboarding status: <complete / pending / failed>
───────────────────────────────────────────────────────────────────
"by-provider" — Coverage split by cloud
───────────────────────────────────────────────────────────────────
COVERAGE BY PROVIDER
───────────────────────────────────────────────────────────────────
Provider Connected Healthy Issues
───────────────────────────────────────────
AWS <N> <N> <N>
Azure <N> <N> <N>
GCP <N> <N> <N>
Kubernetes <N> <N> <N>
OCI <N> <N> <N>
───────────────────────────────────────────────────────────────────
"full"
Show all sections in order.
Edge Cases
No Accounts Configured
⚠ No cloud accounts configured in Orca.
To get started:
Orca Console → Cloud Accounts → Add Account
Choose: AWS / Azure / GCP / Kubernetes / OCI
After onboarding, re-run /orca-account-health to verify coverage.
All Accounts Healthy
✅ All <N> accounts healthy.
• All connections active
• All accounts synced within the last hour
• All scanners deployed
• CDR ingestion active across all accounts
You're clear to proceed with audit / investigation / review.
Coverage Mismatch (account in cloud console but not in Orca)
⚠ Provider-side accounts NOT in Orca:
This skill can only see what's configured in Orca. If your AWS Org has
30 accounts but Orca has 25, the other 5 are invisible here.
To verify completeness:
• Compare Orca account list against AWS Organizations / Azure Tenants /
GCP Organization root.
• Use /orca-account-health to confirm Orca's view; cross-check
externally for accounts that never made it to Orca.
"Connected but Empty"
⚠ <account> reports "connected" but Orca has zero assets and zero events.
This is the worst kind of blind spot — the integration looks healthy in
the dashboard but no data is actually flowing.
Likely causes:
• IAM role attached but policy missing read permissions
• Cross-account trust set up but external ID mismatch
• Newly added account, scan not yet started
• Region scope of the integration excludes the account's resources
Fix path:
Orca Console → Cloud Accounts → <account> → Verify Permissions
MCP Tools Used
Primary Tools
| Tool | Purpose | Parameter |
|---|---|---|
get_integration_configs_data |
All connected sources, state, last sync | (none) |
discovery_search |
Cross-check assets and CDR flow per account | search_phrase (NL), limit |
Secondary Tools
| Tool | Purpose | When |
|---|---|---|
get_cdr_events_grouped_by_event_name |
Deeper CDR ingestion check | When discovery_search says "no CDR events" — confirm |
documentation_search |
Onboarding/troubleshooting docs | When user asks "how do I fix it" |
get_business_units_data |
Map accounts to ownership for assignment | When user wants to route fixes to a team |
Parameter Notes
get_integration_configs_datatakes no parameters — it's a full dump of configured sources. Filter client-side.discovery_searchfor"cloud audit events in the last 24 hours grouped by account"is the best signal that audit log ingestion is actually working — connection state alone is insufficient.discovery_searchis capped at 50 results; for tenants with many accounts, narrow with"... in account <id>".
Implementation Notes
- Two-source verification is the differentiator.
get_integration_configs_dataalone says "connected"; the discovery cross-check says "data is actually flowing." A "connected but empty" account is the worst blind spot and only the cross-check catches it. - Categorize the freshness, don't dump timestamps. Users need "Healthy / Sync Lag / Stale / Degraded / Offline" buckets, not raw "last_sync_at" values.
- Always state the impact of each gap. Don't say "prod-eu-west has sync lag" — say "any alert triage in prod-eu-west is missing the last day's data". Connect the gap to the next action.
- Pre-audit / pre-investigation framing matters. If the user invoked this before another skill ("before /orca-investigate"), end with an explicit "you can proceed" or "wait for re-sync" verdict.
- External coverage drift (accounts in AWS Org but not in Orca) is out of scope for this skill — flag it in the edge case and recommend manual cross-check rather than pretend the MCP can detect it.
- Link to other skills: this skill is a prerequisite for trusting the output of
/orca-morning-briefing,/orca-investigate,/orca-compliance-gap, and/orca-cve-blast-radius. Mention this when appropriate.