fdic-portfolio-surveillance-23fe28 — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited fdic-portfolio-surveillance-23fe28 (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Follow every phase in order. Do not skip phases. Do not produce output before completing Phase 3.
Activate when the user asks to:
Do not activate for single-institution deep dives — use the fdic-bank-deep-dive skill instead.
| Parameter | Required | Default | Description |
|---|---|---|---|
| Universe definition | Yes | — | State (two-letter code), asset range (asset_min / asset_max in $thousands), or explicit CERT list |
repdte | No | Most recent quarter with published data | Report date in YYYYMMDD format |
start_repdte | No | Same quarter one year prior to repdte | Comparison start date for trend analysis |
| Ranking emphasis | No | Most concerning overall | Focus area: capital, earnings, funding, growth, or overall |
| Limit | No | 25 | Maximum institutions to return in the ranked watchlist |
| Tool | Tier | Purpose | On Failure |
|---|---|---|---|
fdic_search_institutions | Hard | Build the screening universe roster | Hard-stop. Cannot determine cohort. |
fdic_detect_risk_signals | Hard | Surface critical and warning-level signals per institution | Hard-stop. Cannot rank by risk. |
fdic_compare_peer_health | Hard | Rank institutions by proxy composite and component scores | Hard-stop. Cannot produce peer-relative health context. |
fdic_compare_bank_snapshots | Hard | Confirm trends via two-point financial comparison | Hard-stop. Cannot validate trend persistence. |
fdic_analyze_bank_health | Soft | Detailed CAMELS-proxy assessment for escalated institutions | Note "detailed assessment unavailable" for that institution; preserve watchlist placement. |
fdic_analyze_funding_profile | Context | Funding composition for escalated institutions flagged with funding-domain signals | Note "funding follow-up unavailable"; preserve triage result. |
fdic_analyze_credit_concentration | Context | Credit concentration for escalated institutions flagged with credit-domain signals | Note "credit concentration follow-up unavailable"; preserve triage result. |
fdic_ubpr_analysis | Context | UBPR-equivalent ratios for escalated institutions needing earnings or efficiency context | Note "UBPR analysis unavailable"; preserve triage result. |
fdic_regional_context | Soft | Macro/regional economic backdrop for the universe | Omit the Regional Context section or replace with a brief note; do not affect bank-level rankings. |
Call fdic_search_institutions with the user's universe definition.
filters: "STALP:<XX> AND ACTIVE:1", fields: "CERT,NAME,ASSET,DEP,STALP,BKCLASS,ACTIVE", sort_by: "ASSET", sort_order: "DESC", limit: 500filters: "ACTIVE:1 AND ASSET:[<min> TO <max>]", same fields and sortfilters: "CERT:(<cert1> OR <cert2> OR ...)", same fieldsRecord the total count and the list of CERTs. This is the screening universe.
If the tool returns zero results or errors, hard-stop and report the failure to the user.
If the user did not provide repdte, omit it from downstream calls (tools default to the most recent published quarter). If the user did not provide start_repdte, omit it (snapshot comparison defaults to one year prior).
Record the effective repdte and start_repdte from the first tool response that returns them. These are the date basis for the report and must be stated in the output header.
Run the following three calls. They may be executed in parallel since they are independent.
Call fdic_detect_risk_signals with the universe parameters.
state: "<XX>"asset_min, asset_maxcerts: [<cert1>, <cert2>, ...]Set limit to at least the universe size (up to 100) so all flagged institutions are captured. Set min_severity: "warning".
Record for each flagged institution: CERT, name, critical count, warning count, signal codes, and the proxy summary band.
Call fdic_compare_peer_health with matching parameters.
state: "<XX>"asset_min, asset_maxcerts: [<cert1>, <cert2>, ...]Set limit to at least the universe size (up to 100). Default sort_by: "composite".
Record for each institution: CERT, name, proxy score, proxy band, composite rating, component ratings (C/A/E/L/S), and flags.
Call fdic_compare_bank_snapshots with matching parameters.
state: "<state name>" (full name, not abbreviation)asset_min / asset_max directly. Use the CERT list collected from Step 1 instead: certs: [<cert1>, <cert2>, ...]. If the CERT list exceeds 100, truncate to the top 100 by asset size and note the truncation in the report.certs: [<cert1>, <cert2>, ...]start_repdte and end_repdte if the user specified them.Use sort_by matching the user's ranking emphasis:
overall or unspecified → asset_growth_pct (DESC)capital → roe_change (ASC, to surface capital erosion)earnings → roa_change (ASC)funding → deposits_to_assets_change (ASC)growth → asset_growth_pct (DESC)Set limit to at least the universe size (up to 100).
Record for each institution: asset growth %, deposit growth %, ROA change, ROE change, and insight tags.
Merge the results from Steps 3–5 by CERT. Classify each institution into one of three tiers:
Escalate — Any institution meeting one or more of:
high_risk or weakMonitor — Any institution meeting one or more of:
satisfactory with any component rated 3+No Immediate Concern — Institutions with:
strongWithin each tier, rank institutions by severity:
Apply the user's limit to bound the total output. If the limit is smaller than the Escalate + Monitor population, prioritize Escalate institutions first.
For each institution in the Escalate and Monitor tiers, write a short driver text (1–2 sentences) summarizing the primary reason(s) for placement. Use explicit reason codes, not opaque scores:
Limit follow-through calls to the top 3 most material Escalate-tier institutions by default, or fewer if the Escalate tier is smaller. The user may override this limit.
For each targeted institution, call fdic_analyze_bank_health with cert: <cert> and repdte: <repdte> (using the effective report date established in Step 2). If the user did not specify a repdte, omit it to let the tool default — but all follow-through calls must use the same date basis as the screening workflow.
If the call fails, note "Detailed assessment data unavailable for [name] (CERT <cert>)" and preserve the institution's watchlist placement.
Call domain-specific tools only when the institution's risk signals implicate that domain. Pass cert and repdte (the same effective report date) to each call:
fdic_analyze_funding_profile with cert, repdtefdic_analyze_credit_concentration with cert, repdtefdic_ubpr_analysis with cert, repdteIf a domain tool fails, note "[domain] follow-up could not be completed for [name]" and preserve the triage result.
Call fdic_regional_context once for the universe (using state or the first institution's CERT), passing repdte if established.
If unavailable, omit the Regional Context section or write: "Regional economic context unavailable; macro conditions were not factored into institution-level rankings."
Produce the report in the following fixed section order:
State the screening universe parameters, institution count, and effective date basis.
Universe: [state / asset range / CERT list description]
Institutions screened: [N]
Financial data as of: [REPDTE in YYYY-MM-DD format]
Comparison period: [start_repdte] to [end_repdte]If the report mixes data from different date bases (e.g., quarterly financials and annual SOD data), state each basis explicitly.
Provide a brief quantitative overview:
Present the watchlist as a structured table or grouped list:
Escalate
| Rank | Institution | CERT | Assets ($K) | Proxy Band | Critical | Warning | Primary Drivers |
|---|---|---|---|---|---|---|---|
| 1 | Name | CERT | Amount | band | count | count | Driver text |
Monitor
Same structure.
No Immediate Concern (include only if the user requests full population coverage or the limit allows)
Same structure, abbreviated.
For each institution that received follow-through analysis in Phase 4, provide a concise summary:
If follow-through was limited to a subset, state: "Follow-through analysis was performed for the top [N] escalated institutions. Remaining escalated institutions retain their watchlist classification pending further review."
Always include:
public_camels_proxy_v1 analytical engine using public FDIC data. These are not official CAMELS ratings and do not reflect confidential supervisory information."| Condition | Action |
|---|---|
| Hard-dependency tool fails | Hard-stop. Report the error. Do not produce partial output. |
| Soft-dependency tool fails | Omit the section. Note the omission explicitly in the report. |
| Context-dependency tool fails | Silently omit or note briefly. Preserve all triage results. |
| Universe returns zero institutions | Report "No institutions matched the screening criteria" and stop. |
| Peer set < 10 institutions | Produce the report but add a caveat that peer comparisons are limited. |
| Report date > 120 days stale | Add a staleness warning in Caveats. |
| Mixed date bases | State each date basis explicitly in Universe Definition and Caveats. |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.