# Fac [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/pipeworx-io/mcp-fac  
**GitHub Stars:** 0  
**npm Downloads (last month):** 1020  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/fac

## Description
Federal Audit Clearinghouse (FAC) MCP — US single-audit data.

## Tools
Capabilities this server exposes over MCP:

- **fac_search_audits** — Search US single audits (Uniform Guidance / former OMB A-133) filed with the Federal Audit Clearinghouse — "the FAC" — by auditee name, UEI, EIN, state, ZIP code, audit year, or minimum federal dollars expended. Covers every kind of non-federal recipient: cities, towns, counties, school districts, fire and water districts, housing authorities, universities, tribes, hospitals and nonprofits. Returns the report_id, summary_url (the official FAC dissemination summary page for that submission), the organization name, city, state and ZIP on file, total federal awards expended for the year, the cognizant/oversight agency, and the date FAC accepted the submission. Puerto Rico municipalities are found under either their Spanish or English legal name. Answered without a live api.data.gov key or its rate limit. Answers "does this grant recipient file a single audit and how much federal money does it run", and "what is the FAC report ID / summary URL for this entity".
- **fac_get_audit** — Fetch one single audit by its FAC report_id (e.g. "2025-09-GSAFAC-0000422512"), including its summary_url — the official Federal Audit Clearinghouse dissemination summary page for that report — enriched with the full federal program detail: every Assistance Listing (CFDA) number the entity expended money under, the program name, dollars expended per program, whether it was audited as a major program, and the opinion type. Also returns the auditor firm and audit findings when FAC recorded any. Does NOT return named-individual contact details (auditee/auditor contact name, email, phone) — those are not carried here; see the report's summary_url on fac.gov for that. Answers "what did this specific audit cover and what did it conclude".
- **fac_audit_findings** — Audit findings recorded against single audits — the compliance exceptions, material weaknesses, significant deficiencies, questioned costs and repeat findings that auditors reported. Query by report_id, or by recipient name/UEI to sweep every audit that recipient filed. Answers "has this grant recipient had audit findings, and were they material or repeated".
- **fac_federal_awards_by_program** — List the organizations that expended money under a given federal Assistance Listing / CFDA number (e.g. "93.224" community health centers, "84.010" Title I, "20.205" highway planning), ranked by dollars expended, with the recipient name, state, audit year and whether it was a major program. Answers "who spends the money in this federal grant program and how much does each one run".
- **fac_recipient_audit_history** — Year-by-year single-audit history for one grant recipient, identified by UEI or by name. Returns each audit year with total federal awards expended, the report_id, the oversight agency and the FAC acceptance date, plus a growth read on the spend trend. Answers "how has this organization's federal funding moved over time and which years were audited".
- **fac_findings_search** — Full-text search over audit finding NARRATIVES — the actual prose auditors wrote describing a compliance exception ("failed to submit the Federal Single Audit report within the timeframe prescribed", "total available cash was less than total advances from grantors"). This is not possible against the live FAC API, which exposes no cross-table join; it is what searching the underlying text directly unlocks. Optionally narrow by state, audit year, CFDA agency prefix, or material-weakness-only. Narrative text is only on file for more recent filings — audits migrated from the pre-2022 Census-run FAC often have none, and rows without text are simply not returned rather than shown blank. Answers "which audits mention X in their findings", e.g. "data security", "cash management", "timesheet".
- **fac_cross_table_screen** — Screen single audits across state, federal program (CFDA), and finding type / material weakness in ONE call — a join FAC's own live API cannot express (its PostgREST has no foreign key between /general, /federal_awards and /findings). Answers compound diligence questions like "material weaknesses in Texas under CFDA 93.224" or "questioned-cost findings on highway funding (20.205) over $1M". Every filter is optional; pass at least one to keep the result meaningful. Returns one row per matching (audit, award, finding) combination, ranked by award dollar amount.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "fac": {
    "command": "npx",
    "args": ["-y","@pipeworx/mcp-fac"]
  }
}
```

## Documentation

## What Fac does

Fac provides MCP access to public US Federal Audit Clearinghouse records collected under 2 CFR 200 Subpart F. The dataset covers organizations receiving federal funds, their audit filings, Assistance Listing programs, amounts expended, auditor information, and findings recorded by FAC.

Queries can locate audits by auditee name, UEI, EIN, state, ZIP prefix, audit year, or federal spending amount. A report lookup returns program rows from the Schedule of Expenditures of Federal Awards, including program identifiers, names, expenditures, major-program status, and opinion type. Recipient history queries organize audits by year and include total federal awards expended and a percentage-change trend.

## How it works

Rather than calling the FAC API for each request, Fac reads a local database populated from FAC's public bulk CSV extracts. A scheduled process refreshes the data weekly using the `general`, `federal_awards`, `findings`, `findings_text`, and `corrective_action_plans` tables. The response metadata includes `data_as_of`, which identifies the last successful refresh.

The local structure supports queries that are difficult or unavailable through the live API. Full-text finding searches use a PostgreSQL text-search function over an indexed text column. Cross-table screening joins general audit records, federal award rows, and findings so callers can combine filters such as state, Assistance Listing number, finding type, material weakness status, amount, and audit year.

## Tools and capabilities

The MCP tool surface includes:

- `include_text` for attaching narrative finding text to applicable results.
- `websearch_to_tsquery` for PostgreSQL web-style text query parsing.
- `fac_findings_search` for searching finding narratives, including phrases about submission deadlines or questioned costs.
- `fac_cross_table_screen` for screening audits across recipient location, federal program, and finding attributes.
- `fac_general` for general audit and recipient records.
- `fac_federal_awards` for federal award and program expenditure data.
- `fac_findings` for findings associated with audits.

Friendly aliases support common inputs such as `query`, `q`, or `name` for auditee names, and several ZIP field names. Assistance Listing values can use dotted, dashed, undelimited, or agency-prefix forms. Unsupported arguments are returned in `ignored_arguments` with a warning instead of being silently discarded.

## Limitations and notes

The copy excludes named individual contact fields, email addresses, and phone numbers. Organizational details such as auditee names, auditor firms, addresses, and EINs remain available. Results can be affected by the weekly refresh schedule and by the historical values recorded in FAC.

ZIP filtering uses a five-digit prefix because FAC stores some ZIP values as five digits and others as ZIP+4 without a separator. An entity's ZIP may also differ between filing years. If a ZIP filter removes an otherwise matching entity, the response can identify the ZIP values FAC holds for that entity.

The loaded tables do not include `notes_to_sefa`, `passthrough`, `additional_ueis`, `additional_eins`, or `secondary_auditors`. Before the first successful refresh, `data_as_of` is null and the response reports the coverage status rather than presenting an empty result as proof that no audits exist.

_Full upstream README: https://allmcps.com/mcp/fac/readme_

