# C4C: Mortgage Industry Regulations (remote · mcp.claudeforcompliance.com)

Verbatim U.S. mortgage regulatory text with citations and effective dates. Read-only, no sign-in.

- Trust score: 67/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-29

## Components

- remote · `mcp.claudeforcompliance.com`: 67/100 (this document), [markdown](https://verifymcp.io/servers/com-claudeforcompliance-mortgage-regs/mcp.md), [page](https://verifymcp.io/servers/com-claudeforcompliance-mortgage-regs/mcp)

## Channel facts

- Endpoint: `https://mcp.claudeforcompliance.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.2`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-29.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 75/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3284 tokens (~328/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 10/100
  - Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 84/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 45% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the C4C: Mortgage Industry Regulations MCP server?

C4C: Mortgage Industry Regulations is a hosted endpoint at https://mcp.claudeforcompliance.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-claudeforcompliance-mortgage-regs 'https://mcp.claudeforcompliance.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-claudeforcompliance-mortgage-regs": {
      "url": "https://mcp.claudeforcompliance.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-claudeforcompliance-mortgage-regs": {
      "type": "http",
      "url": "https://mcp.claudeforcompliance.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-claudeforcompliance-mortgage-regs]
url = "https://mcp.claudeforcompliance.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-claudeforcompliance-mortgage-regs": {
      "type": "remote",
      "url": "https://mcp.claudeforcompliance.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-claudeforcompliance-mortgage-regs --url 'https://mcp.claudeforcompliance.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-claudeforcompliance-mortgage-regs:
    url: "https://mcp.claudeforcompliance.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-claudeforcompliance-mortgage-regs": {
      "Transport": "http",
      "Url": "https://mcp.claudeforcompliance.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-claudeforcompliance-mortgage-regs -t streamable-http -u 'https://mcp.claudeforcompliance.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-claudeforcompliance-mortgage-regs": {
      "type": "http",
      "url": "https://mcp.claudeforcompliance.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-29 (score 67, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “get_obligation” rewrote its description, which is the text the model reads
- [security] Tool “verify_quote” rewrote its description, which is the text the model reads

### 2026-09-27 (score 66, +1)

- [security] Tool “find_in_section” rewrote its description, which is the text the model reads
- [security] Tool “get_obligation” rewrote its description, which is the text the model reads
- [security] Tool “search_regs” rewrote its description, which is the text the model reads
- [security] Tool “verify_quote” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 327 → 367
- [functional improvement] Stability: unverified → 0.03
- [functional] Schema quality: excellent → good
- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-26 (score 65)

First indexed and scored.

## MCP tools (10)

### `get_obligation` (~434 tokens)

Get obligation

Returns one obligation's (section's) verbatim regulator text with provenance. Inputs: `obligation_id`; optional `offset`, `limit`, `compare_versions`. `verbatim` holds the text between <<<BEGIN VERBATIM>>> and <<<END VERBATIM>>>. `canonical_citation` is the section's citation in the regulator's style (e.g. "4000.1 II.A.5.d", "B3-3.3-07", "38 U.S.C. 3709(b)"), or null. Paging: at most 24,000 chars per response; `chars_offset` + `chars_returned` is the position within `chars_total`; `next_offset` is the offset of the next page, or null when the section ends in this response; `truncated` means more text follows; `started_mid_section` means text before `chars_offset` is not included; `paging` gives page N of M. `currency` is null or a version/status signal (dual-version, pending, revision-pending, superseded, expired...) with a one-line `headline`. An FHA 4000.1 section HUD's Update 18 revises has two obligations, the in-force text and the revision (`<id>::update-18`); `version` says which this is and `other_version` identifies the other. `compare_versions: true` adds `version_changes`, the sentences Update 18 deletes and adds. `figures` is a best-effort extraction of figures in the text; an empty or incomplete list is not evidence that the text states no figure. `canonical_id`, when set, is the register this one is a same-text copy of.

Input parameters:

- `compare_versions` (boolean): On an FHA section Update 18 revises: also return `version_changes`, the sentences Update 18 deletes and adds (verbatim units with offsets).
- `limit` (integer): Max chars to return from offset (200-24000; default 24000).
- `obligation_id` (string, required)
- `offset` (integer)

Output parameters:

- `alias_note` (string): Explains resolved_from_alias.
- `authority` (string): The document and section title as published.
- `canonical_citation` (string|null): The citation in the regulator's style (e.g. "4000.1 II.A.5.d", "B3-3.3-07"), or null.
- `canonical_id` (string): Set when this register is a same-text copy of that register.
- `chars_offset` (number): Where this response starts in the section's text.
- `chars_returned` (number): Characters of text in this response.
- `chars_total` (number): The section's total length.
- `content_hash` (string): Hash of the stored text.
- `coverage_tier` (string): How completely the corpus holds the document.
- `currency`: null, or a version/status signal {kind, headline, detail, effective_date, mandatory_date, expires_on, as_of, links}; kind e.g. dual-version, pending, revision-pending, superseded, superseded-in-part,…
- `editorial`: Reserved; summary is null (the text is not summarized).
- `effective_date` (string|null): Effective date, or null.
- `error` (string): Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.
- `fallback` (string): On daily_capacity_reached: where the full corpus can be downloaded.
- `fetched_at` (string): When the source was retrieved.
- `figures` (array): Best-effort extraction of figures in the text; an empty or incomplete list is not evidence that the text states no figure.
- `guidance` (string): On a refusal or empty search: the server's explanation.
- `hint` (string): On an error: the server's explanation.
- `next_offset` (number|null): The next page's offset, or null when the section ends here.
- `note` (string): A note on this result.
- `notice` (string): Terms notice: research use only, not legal advice.
- `obligation_id` (string): The obligation (section) id.
- `other_version`: On a dual-version section: the other version ({obligation_id, version, dates}).
- `paging` (object): Page N of M.
- `register_id` (string): The register (source document) id.
- `resets` (string): On daily_capacity_reached: when capacity resets (00:00 UTC).
- `resolved_from_alias` (string): The retired obligation id requested; its text is now at obligation_id.
- `section` (string): The section designation.
- `snapshot_id` (string): The stored source snapshot.
- `source_url` (string): The regulator's URL for the document.
- `started_mid_section` (boolean): Text before chars_offset is not in this response.
- `status` (string): E.g. current, superseded, unknown.
- `superseded_by` (string|null): The replacing register, or null.
- `truncated` (boolean): More text follows this response.
- `verbatim` (string): The regulator's exact text, between <<<BEGIN VERBATIM>>> and <<<END VERBATIM>>>.
- `version`: On a dual-version section: {label: in-force | update-18-optional, dates, note}.
- `version_changes`: With compare_versions: sentences Update 18 deletes and adds, or {error: "single_version"}.

### `get_reg` (~132 tokens)

Get regulation

Returns a manifest of one register (source document): its provenance, `currency` (null or a version/status signal: dual-version, pending revision, superseded, expired...) and its obligations (sections), each with `obligation_id`, section, `canonical_citation`, `chars_total` and `will_truncate` (true when the section exceeds one 24,000-char page). The manifest contains no regulator text. A dual-version section lists both obligations, each with `version` ("in-force" or "update-18-optional") and `other_version`.

Input parameters:

- `register_id` (string, required)

Output parameters:

- `also_at` (array): Same-text copies of this register.
- `authority` (string): The document title.
- `canonical_citation` (string|null): The citation in the regulator's style (e.g. "4000.1 II.A.5.d", "B3-3.3-07"), or null.
- `canonical_id` (string): Set when this register is a same-text copy of that register.
- `coverage_tier` (string): How completely the corpus holds the document.
- `currency`: null, or a version/status signal {kind, headline, detail, effective_date, mandatory_date, expires_on, as_of, links}; kind e.g. dual-version, pending, revision-pending, superseded, superseded-in-part,…
- `effective_date` (string|null): Effective date, or null.
- `error` (string): Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.
- `fallback` (string): On daily_capacity_reached: where the full corpus can be downloaded.
- `guidance` (string): On a refusal or empty search: the server's explanation.
- `hint` (string): On an error: the server's explanation.
- `note` (string): A note on this result.
- `notice` (string): Terms notice: research use only, not legal advice.
- `obligation_id` (string): Echoed on error.
- `obligations` (array): The register's obligations (a manifest, not regulator text).
- `register_id` (string): The register id.
- `resets` (string): On daily_capacity_reached: when capacity resets (00:00 UTC).
- `status` (string): E.g. current, superseded, unknown.
- `superseded_by` (string|null): The replacing register, or null.

### `lookup_citation` (~260 tokens)

Look up citation

Resolves a regulatory citation (e.g. '4000.1 II.A.8.d', 'B3-4.3-04', 'Freddie Mac Guide 5306.1', '38 U.S.C. 3737', 'M26-7 Chapter 4 Topic 9', 'SBA Notice 5000-872764', 'SOP 50 10 8 B.Ch1.A.2', 'HB-1-3555 11.3') to a `register_id`. Errors: `not_found` (the cite parses but is not in the corpus; `parsed` shows the parse), `ambiguous` (it could mean several registers, listed in `candidates`; no guess is made), `unparsed` (not recognizable as a citation). Near matches are not suggested. A handbook section resolves to the handbook's own register; documents that cite or amend it (e.g. Mortgagee Letters) are listed in `related` and are not the section's text. Identical copies of a section resolve to one register and are listed in `also_at`. A whole-handbook name returns `handbook`, an outline of its parts.

Input parameters:

- `citation` (string, required)

Output parameters:

- `also_at` (array): Identical copies of the section (other register ids).
- `also_at_note` (string): Explains also_at.
- `candidates` (array): On ambiguous: the registers the citation could mean.
- `canonical_id` (string): Set when the register is a same-text copy of that register.
- `citation` (string): The citation as given (on unparsed).
- `error` (string): Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.
- `fallback` (string): On daily_capacity_reached: where the full corpus can be downloaded.
- `guidance` (string): On a refusal or empty search: the server's explanation.
- `handbook`: When the citation names a whole handbook: its outline.
- `hint` (string): On an error: the server's explanation.
- `note` (string): A note on this result.
- `notice` (string): Terms notice: research use only, not legal advice.
- `parsed`: The parse of the citation ({kind, canonical, ...}).
- `register_id` (string): The register the citation resolves to.
- `related`: Documents that cite or amend the section ({register_id, relation}); not its text.
- `related_note` (string): Explains related.
- `renumbered_from` (string): The old register, when the section was renumbered.
- `resets` (string): On daily_capacity_reached: when capacity resets (00:00 UTC).
- `superseded_candidates` (array): Candidates dropped because a current register replaces them.
- `superseded_register_id` (string): The register holding the prior text of this section.
- `topics`: Topics under a structured citation.
- `truncated` (boolean): The candidate scan hit its limit.

### `search_regs` (~565 tokens)

Search regulations

Full-text search of US mortgage regulator text (Fannie Mae, Freddie Mac, FHA, VA, USDA, Ginnie Mae, SBA, CFPB). Inputs: `query`; optional `family` (one agency), `limit` (1-25), `currency_kind` (only sections carrying that currency signal; "any" = any signal). Common abbreviations (DTI, LTV, IRRRL, W-2, VOE, PITI, BK...) are expanded to the regulator's terms. Each result is one section: title, `obligation_id`, `canonical_citation` (the citation in the regulator's style, or null) and `excerpt`, a verbatim fragment near the match, not the whole rule. `match` is "all_terms" or "partial"; a partial result lists the query words it lacks in `missing_terms`. Order: `rank_score`, highest first = text score (title-weighted) x term coverage x title fit, with superseded, pending, incorporated or expired text x0.2 (never above its replacement), a special program's section (`special_program`: Home Possible, HomeReady, 203(k), HECM...) x0.5 unless the query names the program, and `obligation_type` "note" (statutory source-credit and editorial notes) or "index" (a chapter heading) x0.2 unless the query asks for them. `section_status` "deleted" marks a deleted-section stub, ranked last. A query that is a citation ("38 U.S.C. 3737", "ML 2026-08") returns the cited section first and sets `cited`; a bare handbook name ("HUD 4000.1") adds `handbook`, an outline of its parts. `currency` is null or a version/status signal whose kinds include dual-version, pending, revision-pending, superseded, superseded-in-part (a Mortgagee Letter replaced some provisions, named in `headline`), modified-by (a later issuance changes it, optional until its mandatory date) and expired. `version` "in-force" or "update-18-optional" marks the two texts of an FHA section HUD's Update 18 revises (`mandatory_date` for the revision); `other_version` is the other text's obligation_id. Empty results carry `reason` (empty_query, no_match, no_match_above_threshold) and may carry `guidance` naming shorthand in the que…

Input parameters:

- `currency_kind` (string): Restricts results to sections carrying this currency signal; "any" = any signal.
- `family` (string)
- `limit` (integer)
- `query` (string, required)

Output parameters:

- `cited`: When the query is a citation: {citation, register_ids}.
- `error` (string): Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.
- `fallback` (string): On daily_capacity_reached: where the full corpus can be downloaded.
- `guidance` (string): On a refusal or empty search: the server's explanation.
- `handbook`: When the query names a whole handbook: its outline.
- `hint` (string): On an error: the server's explanation.
- `note` (string): A note on this result.
- `notice` (string): Terms notice: research use only, not legal advice.
- `reason` (string): With empty results: empty_query, no_match or no_match_above_threshold.
- `resets` (string): On daily_capacity_reached: when capacity resets (00:00 UTC).
- `results` (array): Ranked sections, highest rank_score first (may be empty).

### `find_in_section` (~359 tokens)

Find in section

Returns only the verbatim paragraphs of one obligation (section) that contain the given terms. Inputs: `obligation_id`; `terms`, 1-6 short words or phrases ("cash-out", "credit score", "LTV"; abbreviations are expanded; numbers match as words or digits, so "five years" finds "five (5) years"); optional `max_passages`. Each passage has `verbatim` (the regulator's exact text), `offset` (its position in the section's text), `canonical_citation` (the pinpoint cite, where derivable) and `heading_path` (every heading above it, e.g. "vi. No Cash-Out Refinances > (A) Rate and Term > (i) Standard"). A match inside a table returns the whole table (`table: true`; `table_layout: "flattened"` when the source lost its layout and cells may not line up). A passage ending in a colon includes the list it introduces (`list_included: true`). `truncated` means more passages matched than were returned. No passages means no paragraph contains the terms as given; it is not a statement about the rule. `currency` is null or a version/status signal (dual-version, pending, revision-pending, superseded, expired...). On an FHA section HUD's Update 18 revises, `version` ("in-force" or "update-18-optional") says which text this is and `other_version` identifies the other.

Input parameters:

- `max_passages` (integer)
- `obligation_id` (string, required)
- `terms` (array, required): 1-6 short terms, e.g. ["cash-out", "credit score"]; not document text.

Output parameters:

- `alias_note` (string): Explains resolved_from_alias.
- `authority` (string): The document and section title as published.
- `canonical_citation` (string|null): The citation in the regulator's style (e.g. "4000.1 II.A.5.d", "B3-3.3-07"), or null.
- `canonical_id` (string): Set when this register is a same-text copy of that register.
- `chars_total` (number): The section's total length.
- `content_hash` (string): Hash of the stored text.
- `coverage_tier` (string): How completely the corpus holds the document.
- `currency`: null, or a version/status signal {kind, headline, detail, effective_date, mandatory_date, expires_on, as_of, links}; kind e.g. dual-version, pending, revision-pending, superseded, superseded-in-part,…
- `effective_date` (string|null): Effective date, or null.
- `error` (string): Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.
- `fallback` (string): On daily_capacity_reached: where the full corpus can be downloaded.
- `fetched_at` (string): When the source was retrieved.
- `guidance` (string): On a refusal or empty search: the server's explanation.
- `hint` (string): On an error: the server's explanation.
- `matches_note` (string): How total_matches became passages_available.
- `merged_into_lists` (number): Matching paragraphs merged into lists with their lead-in.
- `merged_into_tables` (number): Matching paragraphs merged into whole tables.
- `note` (string): A note on this result.
- `notice` (string): Terms notice: research use only, not legal advice.
- `obligation_id` (string): The obligation (section) id.
- `other_version`: On a dual-version section: the other version ({obligation_id, version, dates}).
- `passages` (array): Matching verbatim passages, in section order.
- `passages_available` (number): Passages the matches make (tables and lists merged).
- `passages_returned` (number): Passages in this response.
- `register_id` (string): The register (source document) id.
- `resets` (string): On daily_capacity_reached: when capacity resets (00:00 UTC).
- `resolved_from_alias` (string): The retired obligation id requested; its text is now at obligation_id.
- `section` (string): The section designation.
- `snapshot_id` (string): The stored source snapshot.
- `source_url` (string): The regulator's URL for the document.
- `status` (string): E.g. current, superseded, unknown.
- `superseded_by` (string|null): The replacing register, or null.
- `terms` (array): Per-term match counts.
- `toc_omitted` (boolean): The section's table-of-contents line was omitted.
- `total_matches` (number): Matching paragraphs.
- `truncated` (boolean): More passages matched than were returned.
- `version`: On a dual-version section: {label: in-force | update-18-optional, dates, note}.

### `verify_quote` (~449 tokens)

Verify quote

Checks whether a passage appears in a regulator's source document; accepts text from any source. Inputs: `text` (up to 5,000 words); optional `register_id` (without it, up to 3 candidate documents are located by search). `outcome` is one of: exact (contiguous in the source, quote marks and dashes as the source writes them; a line break counts as a space); normalized (matches after folding quote and dash typography, `typography_folded`; ignoring page footers or running heads, `furniture_ignored`; spacing where the stored source splits or joins words, `spacing_ignored`; or added list markers, `list_markers_ignored`); composed (every word is in the source, in source order, but from non-contiguous pieces, as with an overview or an ellipsis; `omissions` lists the short source phrases skipped between pieces); not_found (no source support; `unsupported` lists the unsupported spans, and on a near miss `differences` gives the closest source text, the source words the text lacks and the words it adds); not_checked (over 5,000 words). `coverage` is the share of words found. `checked_against` names the documents checked (document, edition, retrieval date; ids in `checked_snapshot_ids`); `matched_against` names the one matched, `matched_register_id` / `matched_obligation_id` the stored text containing the passage. `matched_version` is current; superseded (the text is a prior version of the rule; `superseded_by` is the current register); or update-18-optional (HUD's Update 18 revision of an FHA 4000.1 section, optional until `mandatory_date`; `in_force_obligation_id` is the text in force by default). `obligation_currency` lists currency signals on the obligation holding the text (e.g. superseded-in-part). `rescinded: true` (with `rescinded_by`) means the passage is text a later issuance removed or replaced.

Input parameters:

- `register_id` (string)
- `text` (string, required)

Output parameters:

- `also_in_obligation_id` (string): On a match in an amending issuance: the amended obligation that also carries the text.
- `checked_against`: Source documents checked (document, edition, retrieval date).
- `checked_snapshot_ids`: Snapshot ids checked.
- `coverage` (number): Share of the text's words found in the source (0 to 1).
- `differences`: On a near miss: {closest_source, missing_from_quote, extra_in_quote}.
- `elisions` (number): On composed: gaps (marked or not).
- `error` (string): Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.
- `fallback` (string): On daily_capacity_reached: where the full corpus can be downloaded.
- `furniture_ignored` (boolean): A page footer or running head was ignored.
- `guidance` (string): On a refusal or empty search: the server's explanation.
- `hint` (string): On an error: the server's explanation.
- `limit` (number): On not_checked: the word limit.
- `list_markers_ignored` (boolean): Added list markers were ignored.
- `mandatory_date` (string): On an Update 18 revision: when it becomes mandatory.
- `matched_against` (string): The checked document the text matched.
- `matched_obligation_id` (string): The obligation whose stored text contains the passage.
- `matched_register_id` (string): The register whose stored text contains the passage.
- `matched_version` (string): current, superseded (a prior version) or update-18-optional.
- `note` (string): A note on this result.
- `notice` (string): Terms notice: research use only, not legal advice.
- `omissions`: On composed: short source phrases skipped between pieces.
- `outcome` (string): exact: contiguous in the source; normalized: matches after typography, spacing, footer or list-marker folding; composed: all words in source order, non-contiguous; not_found: no source support; not_c…
- `reason` (string): On not_checked: too_long.
- `register_id` (string): Echoed on not_found.
- `resets` (string): On daily_capacity_reached: when capacity resets (00:00 UTC).
- `segments` (number): On composed: source pieces the text is assembled from.
- `spacing_ignored` (boolean): Only spacing differs.
- `superseded_by` (string|null): On superseded: the current register.
- `superseded_register_id` (string): On superseded: the register holding the prior text.
- `typography_folded` (boolean): Matched after folding quotes and dashes.
- `unsupported`: On not_found: spans with no source support.
- `words` (number): On not_checked: the word count.

### `list_playbooks` (~119 tokens)

List playbooks

Lists the guided compliance playbooks this server provides: the Fannie Mae AI lender letter (LL-2026-04) P&P review (AI inventory, AI governance policy, risk assessment, P&P updates, change log) and FHA, VA and USDA loan-file QC against the verbatim handbooks. Returns each playbook's id, what it does, when it applies and what the user provides. Playbook tools accept only ids and reference names, no document text; the user's P&Ps and loan files stay in their own chat.

Output parameters:

- `error` (string): Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.
- `fallback` (string): On daily_capacity_reached: where the full corpus can be downloaded.
- `guidance` (string): On a refusal or empty search: the server's explanation.
- `hint` (string): On an error: the server's explanation.
- `next` (string): The server's note on the next step.
- `note` (string): A note on this result.
- `notice` (string): Terms notice: research use only, not legal advice.
- `playbooks` (array): The available playbooks.
- `privacy`: How user material is handled.
- `resets` (string): On daily_capacity_reached: when capacity resets (00:00 UTC).

### `start_playbook` (~148 tokens)

Start playbook

Returns one playbook's full workflow instructions, its stages, the stage reference names and the rule-kit version: the Fannie Mae AI lender letter (LL-2026-04) P&P review, or FHA, VA or USDA loan-file QC. Input: the playbook `id`; an unknown id returns `unknown_playbook` with `valid_ids`. Playbook tools accept only ids and reference names, no document text; the user's P&Ps and loan files stay in their own chat.

Input parameters:

- `id` (string, required): Playbook id: one of fnma-ai-lender-letter, fha-underwriting-qc, va-loan-qc, usda-loan-qc.

Output parameters:

- `error` (string): Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.
- `fallback` (string): On daily_capacity_reached: where the full corpus can be downloaded.
- `guidance` (string): On a refusal or empty search: the server's explanation.
- `hint` (string): On an error: the server's explanation.
- `id` (string): The playbook id.
- `instructions`: The playbook's workflow instructions.
- `kit`: The rule kit ({kind, source, version, load_with}).
- `load_reference_with` (string|null): How a reference is loaded, or null when there are none.
- `note` (string): A note on this result.
- `notice` (string): Terms notice: research use only, not legal advice.
- `privacy`: How user material is handled.
- `references` (array): The playbook's reference names.
- `resets` (string): On daily_capacity_reached: when capacity resets (00:00 UTC).
- `stages`: The workflow's stages.
- `title` (string): The playbook's name.
- `user_provides`: What the user supplies.
- `valid_ids` (array): On unknown_playbook: the valid ids.
- `version`: The playbook's version.

### `get_playbook_reference` (~155 tokens)

Get playbook reference

Returns one stage reference document of a playbook (e.g. the FNMA playbook's DISCOVERY, RECONCILE, SYNTHESIS, PP-UPDATE, CHANGELOG or UPDATING stage). Inputs: `id`, `name` (one of the playbook's `references`). Playbook tools accept only ids and reference names, no document text; the user's P&Ps and loan files stay in their own chat.

Input parameters:

- `id` (string, required): Playbook id: one of fnma-ai-lender-letter, fha-underwriting-qc, va-loan-qc, usda-loan-qc.
- `name` (string, required): Reference name, one of the playbook's `references`.

Output parameters:

- `content`: The reference's content.
- `error` (string): Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.
- `fallback` (string): On daily_capacity_reached: where the full corpus can be downloaded.
- `guidance` (string): On a refusal or empty search: the server's explanation.
- `hint` (string): On an error: the server's explanation.
- `id` (string): The playbook id.
- `name` (string): The reference name.
- `note` (string): A note on this result.
- `notice` (string): Terms notice: research use only, not legal advice.
- `resets` (string): On daily_capacity_reached: when capacity resets (00:00 UTC).
- `valid_ids` (array): On unknown_playbook: the valid ids.
- `valid_names` (array): On unknown_reference: the valid names.

### `get_playbook_kit` (~190 tokens)

Get playbook kit

Returns a playbook's rule kit. FNMA AI lender letter: the verbatim LL-2026-04, InfoSec Supplement and ECOA/Reg B/FCRA/AVM rows with citations, paginated; `next_offset` is the next page's offset, or null when the kit is complete. FHA/VA/USDA QC: the corpus registers each check area is grounded in. The kit block's fingerprint and dates identify its version. Playbook tools accept only ids and reference names, no document text; the user's P&Ps and loan files stay in their own chat.

Input parameters:

- `id` (string, required): Playbook id: one of fnma-ai-lender-letter, fha-underwriting-qc, va-loan-qc, usda-loan-qc.
- `offset` (integer): Row offset for the next page (the previous page's next_offset).

Output parameters:

- `areas`: For a corpus-register kit: its areas and registers.
- `error` (string): Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.
- `fallback` (string): On daily_capacity_reached: where the full corpus can be downloaded.
- `guidance` (string): On a refusal or empty search: the server's explanation.
- `hint` (string): On an error: the server's explanation.
- `how_to_read` (string): For a corpus-register kit: the server's reading note.
- `id` (string): The playbook id.
- `kit`: The kit's kind, source and version.
- `next_offset` (number|null): The next page's offset, or null when the kit is complete.
- `note` (string): A note on this result.
- `notice` (string): Terms notice: research use only, not legal advice.
- `offset` (number): Where this page starts.
- `resets` (string): On daily_capacity_reached: when capacity resets (00:00 UTC).
- `rows`: Kit rows: verbatim rule text with citations.
- `rows_returned` (number): Rows in this page.
- `rows_total` (number): Rows in the kit.
- `search_family`: For a corpus-register kit: its search family.
- `valid_ids` (array): On unknown_playbook: the valid ids.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-claudeforcompliance-mortgage-regs/mcp#diagnostics

## Score history

- 2026-09-29: 67
- 2026-09-28: 66
- 2026-09-27: 66
- 2026-09-26: 65

## Common questions

### What is the C4C: Mortgage Industry Regulations MCP server?

C4C: Mortgage Industry Regulations is an MCP server listed in the public MCP registry as com.claudeforcompliance/mortgage-regs. Verbatim U.S. mortgage regulatory text with citations and effective dates. Read-only, no sign-in. This page covers its hosted endpoint (https://mcp.claudeforcompliance.com/mcp).

### Is the C4C: Mortgage Industry Regulations MCP server safe to use?

C4C: Mortgage Industry Regulations scores 67 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the C4C: Mortgage Industry Regulations MCP server expose?

C4C: Mortgage Industry Regulations exposes 10 tools: get_obligation, get_reg, lookup_citation, search_regs, find_in_section, and 5 more. Their descriptions and schemas cost roughly 2,811 tokens of context every time the server is loaded.

### Does the C4C: Mortgage Industry Regulations MCP server require authentication?

No. We connected to C4C: Mortgage Industry Regulations without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the C4C: Mortgage Industry Regulations MCP server still maintained?

C4C: Mortgage Industry Regulations is still listed as active in the MCP registry. We last reached this channel on 29 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.claudeforcompliance.com/mcp
- Repository: https://github.com/earl-hash/c4c-mcp
- Website: https://claudeforcompliance.com/mcp/
- Changelog RSS feed: https://verifymcp.io/servers/com-claudeforcompliance-mortgage-regs/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-claudeforcompliance-mortgage-regs/mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-claudeforcompliance-mortgage-regs/mcp
