C4C: Mortgage Industry Regulations
Ce que fait ce MCP
Searches and quotes verbatim U.S. mortgage regulations, resolves citations, verifies quotations, and provides compliance playbook references.
Outils
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['obligation_id', 'terms'], 'properties': {'terms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 60, 'minLength': 1}, 'maxItems': 6, 'minItems': 1, 'description': '1-6 short terms, e.g. ["cash-out", "credit score"]; not document text.'}, 'max_passages': {'type': 'integer', 'maximum': 20, 'minimum': 1}, 'obligation_id': {'type': 'string', 'maxLength': 300, 'minLength': 1}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'hint': {'type': 'string', 'description': "On an error: the server's explanation."}, 'note': {'type': 'string', 'description': 'A note on this result.'}, 'error': {'type': 'string', 'description': 'Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.'}, 'terms': {'type': 'array', 'items': {'type': 'object', 'properties': {'term': {'type': 'string', 'description': 'The term as given.'}, 'paragraphs': {'type': 'number', 'description': 'Paragraphs containing it.'}, 'expanded_to': {'description': 'Spellings and abbreviations it expanded to.'}}, 'additionalProperties': {}}, 'description': 'Per-term match counts.'}, 'notice': {'type': 'string', 'description': 'Terms notice: research use only, not legal advice.'}, 'resets': {'type': 'string', 'description': 'On daily_capacity_reached: when capacity resets (00:00 UTC).'}, 'status': {'type': 'string', 'description': 'E.g. current, superseded, unknown.'}, 'section': {'type': 'string', 'description': 'The section designation.'}, 'version': {'description': 'On a dual-version section: {label: in-force | update-18-optional, dates, note}.'}, 'currency': {'description': '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, modified-by, expired.'}, 'fallback': {'type': 'string', 'description': 'On daily_capacity_reached: where the full corpus can be downloaded.'}, 'guidance': {'type': 'string', 'description': "On a refusal or empty search: the server's explanation."}, 'passages': {'type': 'array', 'items': {'type': 'object', 'properties': {'chars': {'type': 'number', 'description': "The passage's length."}, 'table': {'type': 'boolean', 'description': 'The passage is a whole table.'}, 'offset': {'type': 'number', 'description': "Where the passage starts in the section's text."}, 'heading': {'type': ['string', 'null'], 'description': 'The nearest heading above (verbatim), or null.'}, 'verbatim': {'type': 'string', 'description': "The regulator's exact text."}, 'continues_at': {'type': 'number', 'description': 'Offset where the table continues, when table_complete is false.'}, 'heading_path': {'type': ['string', 'null'], 'description': 'Every heading above, joined by " > ", or null.'}, 'table_layout': {'type': 'string', 'description': '"flattened": the source lost its table layout; cells may not line up.'}, 'list_included': {'type': 'boolean', 'description': 'The passage ends in a colon and includes the list it introduces.'}, 'matched_terms': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The terms this passage matched.'}, 'table_complete': {'type': 'boolean', 'description': 'false when the table may continue past the passage.'}, 'canonical_citation': {'type': ['string', 'null'], 'description': 'The citation in the regulator\'s style (e.g. "4000.1 II.A.5.d", "B3-3.3-07"), or null.'}}, 'additionalProperties': {}}, 'description': 'Matching verbatim passages, in section order.'}, 'authority': {'type': 'string', 'description': 'The document and section title as published.'}, 'truncated': {'type': 'boolean', 'description': 'More passages matched than were returned.'}, 'alias_note': {'type': 'string', 'description': 'Explains resolved_from_alias.'}, 'fetched_at': {'type': 'string', 'description': 'When the source was retrieved.'}, 'source_url': {'type': 'string', 'description': "The regulator's URL for the document."}, 'chars_total': {'type': 'number', 'description': "The section's total length."}, 'register_id': {'type': 'string', 'description': 'The register (source document) id.'}, 'snapshot_id': {'type': 'string', 'description': 'The stored source snapshot.'}, 'toc_omitted': {'type': 'boolean', 'description': "The section's table-of-contents line was omitted."}, 'canonical_id': {'type': 'string', 'description': 'Set when this register is a same-text copy of that register.'}, 'content_hash': {'type': 'string', 'description': 'Hash of the stored text.'}, 'matches_note': {'type': 'string', 'description': 'How total_matches became passages_available.'}, 'coverage_tier': {'type': 'string', 'description': 'How completely the corpus holds the document.'}, 'obligation_id': {'type': 'string', 'description': 'The obligation (section) id.'}, 'other_version': {'description': 'On a dual-version section: the other version ({obligation_id, version, dates}).'}, 'superseded_by': {'type': ['string', 'null'], 'description': 'The replacing register, or null.'}, 'total_matches': {'type': 'number', 'description': 'Matching paragraphs.'}, 'effective_date': {'type': ['string', 'null'], 'description': 'Effective date, or null.'}, 'merged_into_lists': {'type': 'number', 'description': 'Matching paragraphs merged into lists with their lead-in.'}, 'passages_returned': {'type': 'number', 'description': 'Passages in this response.'}, 'canonical_citation': {'type': ['string', 'null'], 'description': 'The citation in the regulator\'s style (e.g. "4000.1 II.A.5.d", "B3-3.3-07"), or null.'}, 'merged_into_tables': {'type': 'number', 'description': 'Matching paragraphs merged into whole tables.'}, 'passages_available': {'type': 'number', 'description': 'Passages the matches make (tables and lists merged).'}, 'resolved_from_alias': {'type': 'string', 'description': 'The retired obligation id requested; its text is now at obligation_id.'}}, 'description': 'find_in_section result.', 'additionalProperties': {}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['obligation_id'], 'properties': {'limit': {'type': 'integer', 'maximum': 24000, 'minimum': 1, 'description': 'Max chars to return from offset (200-24000; default 24000).'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'obligation_id': {'type': 'string', 'minLength': 1}, 'compare_versions': {'type': 'boolean', 'description': 'On an FHA section Update 18 revises: also return `version_changes`, the sentences Update 18 deletes and adds (verbatim units with offsets).'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'hint': {'type': 'string', 'description': "On an error: the server's explanation."}, 'note': {'type': 'string', 'description': 'A note on this result.'}, 'error': {'type': 'string', 'description': 'Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.'}, 'notice': {'type': 'string', 'description': 'Terms notice: research use only, not legal advice.'}, 'paging': {'type': 'object', 'properties': {'how': {'type': 'string', 'description': "The server's paging note."}, 'page': {'type': ['number', 'null'], 'description': "This page's number, or null past the end."}, 'pages': {'type': 'number', 'description': 'Total pages at this page size.'}, 'next_offset': {'type': ['number', 'null'], 'description': "The next page's offset, or null at the end."}}, 'description': 'Page N of M.', 'additionalProperties': {}}, 'resets': {'type': 'string', 'description': 'On daily_capacity_reached: when capacity resets (00:00 UTC).'}, 'status': {'type': 'string', 'description': 'E.g. current, superseded, unknown.'}, 'figures': {'type': 'array', 'items': {'type': 'object', 'properties': {'unit': {'type': 'string', 'description': 'percent, percentage_point, currency, duration, ratio, fraction, age, day_of_period, time, count, number or temperature.'}, 'value': {'type': 'string', 'description': 'The figure as a number string, e.g. "43", "50/50".'}, 'offset': {'type': 'number', 'description': "Position in this response's text."}, 'as_written': {'type': 'string', 'description': 'The figure as written, when it differs.'}}, 'additionalProperties': {}}, 'description': 'Best-effort extraction of figures in the text; an empty or incomplete list is not evidence that the text states no figure.'}, 'section': {'type': 'string', 'description': 'The section designation.'}, 'version': {'description': 'On a dual-version section: {label: in-force | update-18-optional, dates, note}.'}, 'currency': {'description': '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, modified-by, expired.'}, 'fallback': {'type': 'string', 'description': 'On daily_capacity_reached: where the full corpus can be downloaded.'}, 'guidance': {'type': 'string', 'description': "On a refusal or empty search: the server's explanation."}, 'verbatim': {'type': 'string', 'description': "The regulator's exact text, between <<<BEGIN VERBATIM>>> and <<<END VERBATIM>>>."}, 'authority': {'type': 'string', 'description': 'The document and section title as published.'}, 'editorial': {'description': 'Reserved; summary is null (the text is not summarized).'}, 'truncated': {'type': 'boolean', 'description': 'More text follows this response.'}, 'alias_note': {'type': 'string', 'description': 'Explains resolved_from_alias.'}, 'fetched_at': {'type': 'string', 'description': 'When the source was retrieved.'}, 'source_url': {'type': 'string', 'description': "The regulator's URL for the document."}, 'chars_total': {'type': 'number', 'description': "The section's total length."}, 'next_offset': {'type': ['number', 'null'], 'description': "The next page's offset, or null when the section ends here."}, 'register_id': {'type': 'string', 'description': 'The register (source document) id.'}, 'snapshot_id': {'type': 'string', 'description': 'The stored source snapshot.'}, 'canonical_id': {'type': 'string', 'description': 'Set when this register is a same-text copy of that register.'}, 'chars_offset': {'type': 'number', 'description': "Where this response starts in the section's text."}, 'content_hash': {'type': 'string', 'description': 'Hash of the stored text.'}, 'coverage_tier': {'type': 'string', 'description': 'How completely the corpus holds the document.'}, 'obligation_id': {'type': 'string', 'description': 'The obligation (section) id.'}, 'other_version': {'description': 'On a dual-version section: the other version ({obligation_id, version, dates}).'}, 'superseded_by': {'type': ['string', 'null'], 'description': 'The replacing register, or null.'}, 'chars_returned': {'type': 'number', 'description': 'Characters of text in this response.'}, 'effective_date': {'type': ['string', 'null'], 'description': 'Effective date, or null.'}, 'version_changes': {'description': 'With compare_versions: sentences Update 18 deletes and adds, or {error: "single_version"}.'}, 'canonical_citation': {'type': ['string', 'null'], 'description': 'The citation in the regulator\'s style (e.g. "4000.1 II.A.5.d", "B3-3.3-07"), or null.'}, 'resolved_from_alias': {'type': 'string', 'description': 'The retired obligation id requested; its text is now at obligation_id.'}, 'started_mid_section': {'type': 'boolean', 'description': 'Text before chars_offset is not in this response.'}}, 'description': 'get_obligation result.', 'additionalProperties': {}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id'], 'properties': {'id': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 64, 'description': 'Playbook id: one of fnma-ai-lender-letter, fha-underwriting-qc, va-loan-qc, usda-loan-qc.'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': "Row offset for the next page (the previous page's next_offset)."}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'id': {'type': 'string', 'description': 'The playbook id.'}, 'kit': {'description': "The kit's kind, source and version."}, 'hint': {'type': 'string', 'description': "On an error: the server's explanation."}, 'note': {'type': 'string', 'description': 'A note on this result.'}, 'rows': {'description': 'Kit rows: verbatim rule text with citations.'}, 'areas': {'description': 'For a corpus-register kit: its areas and registers.'}, 'error': {'type': 'string', 'description': 'Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.'}, 'notice': {'type': 'string', 'description': 'Terms notice: research use only, not legal advice.'}, 'offset': {'type': 'number', 'description': 'Where this page starts.'}, 'resets': {'type': 'string', 'description': 'On daily_capacity_reached: when capacity resets (00:00 UTC).'}, 'fallback': {'type': 'string', 'description': 'On daily_capacity_reached: where the full corpus can be downloaded.'}, 'guidance': {'type': 'string', 'description': "On a refusal or empty search: the server's explanation."}, 'valid_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'On unknown_playbook: the valid ids.'}, 'rows_total': {'type': 'number', 'description': 'Rows in the kit.'}, 'how_to_read': {'type': 'string', 'description': "For a corpus-register kit: the server's reading note."}, 'next_offset': {'type': ['number', 'null'], 'description': "The next page's offset, or null when the kit is complete."}, 'rows_returned': {'type': 'number', 'description': 'Rows in this page.'}, 'search_family': {'description': 'For a corpus-register kit: its search family.'}}, 'description': 'get_playbook_kit result.', 'additionalProperties': {}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 64, 'description': 'Playbook id: one of fnma-ai-lender-letter, fha-underwriting-qc, va-loan-qc, usda-loan-qc.'}, 'name': {'type': 'string', 'pattern': '^[A-Za-z0-9-]+$', 'maxLength': 64, 'description': "Reference name, one of the playbook's `references`."}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'id': {'type': 'string', 'description': 'The playbook id.'}, 'hint': {'type': 'string', 'description': "On an error: the server's explanation."}, 'name': {'type': 'string', 'description': 'The reference name.'}, 'note': {'type': 'string', 'description': 'A note on this result.'}, 'error': {'type': 'string', 'description': 'Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.'}, 'notice': {'type': 'string', 'description': 'Terms notice: research use only, not legal advice.'}, 'resets': {'type': 'string', 'description': 'On daily_capacity_reached: when capacity resets (00:00 UTC).'}, 'content': {'description': "The reference's content."}, 'fallback': {'type': 'string', 'description': 'On daily_capacity_reached: where the full corpus can be downloaded.'}, 'guidance': {'type': 'string', 'description': "On a refusal or empty search: the server's explanation."}, 'valid_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'On unknown_playbook: the valid ids.'}, 'valid_names': {'type': 'array', 'items': {'type': 'string'}, 'description': 'On unknown_reference: the valid names.'}}, 'description': 'get_playbook_reference result.', 'additionalProperties': {}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['register_id'], 'properties': {'register_id': {'type': 'string', 'minLength': 1}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'hint': {'type': 'string', 'description': "On an error: the server's explanation."}, 'note': {'type': 'string', 'description': 'A note on this result.'}, 'error': {'type': 'string', 'description': 'Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.'}, 'notice': {'type': 'string', 'description': 'Terms notice: research use only, not legal advice.'}, 'resets': {'type': 'string', 'description': 'On daily_capacity_reached: when capacity resets (00:00 UTC).'}, 'status': {'type': 'string', 'description': 'E.g. current, superseded, unknown.'}, 'also_at': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Same-text copies of this register.'}, 'currency': {'description': '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, modified-by, expired.'}, 'fallback': {'type': 'string', 'description': 'On daily_capacity_reached: where the full corpus can be downloaded.'}, 'guidance': {'type': 'string', 'description': "On a refusal or empty search: the server's explanation."}, 'authority': {'type': 'string', 'description': 'The document title.'}, 'obligations': {'type': 'array', 'items': {'type': 'object', 'properties': {'section': {'type': 'string', 'description': 'The section designation or title.'}, 'version': {'type': 'string', 'description': 'On a dual-version FHA section: "in-force" or "update-18-optional".'}, 'currency': {'description': '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, modified-by, expired.'}, 'chars_total': {'type': 'number', 'description': "Length of the section's text in characters."}, 'obligation_id': {'type': 'string', 'description': 'The obligation (section) id.'}, 'other_version': {'type': 'string', 'description': "On a dual-version section: the other version's obligation_id."}, 'will_truncate': {'type': 'boolean', 'description': 'The section exceeds one 24,000-char page.'}, 'mandatory_date': {'type': 'string', 'description': 'On an Update 18 revision: when it becomes mandatory.'}, 'canonical_citation': {'type': ['string', 'null'], 'description': 'The citation in the regulator\'s style (e.g. "4000.1 II.A.5.d", "B3-3.3-07"), or null.'}}, 'additionalProperties': {}}, 'description': "The register's obligations (a manifest, not regulator text)."}, 'register_id': {'type': 'string', 'description': 'The register id.'}, 'canonical_id': {'type': 'string', 'description': 'Set when this register is a same-text copy of that register.'}, 'coverage_tier': {'type': 'string', 'description': 'How completely the corpus holds the document.'}, 'obligation_id': {'type': 'string', 'description': 'Echoed on error.'}, 'superseded_by': {'type': ['string', 'null'], 'description': 'The replacing register, or null.'}, 'effective_date': {'type': ['string', 'null'], 'description': 'Effective date, or null.'}, 'canonical_citation': {'type': ['string', 'null'], 'description': 'The citation in the regulator\'s style (e.g. "4000.1 II.A.5.d", "B3-3.3-07"), or null.'}}, 'description': 'get_reg result.', 'additionalProperties': {}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'hint': {'type': 'string', 'description': "On an error: the server's explanation."}, 'next': {'type': 'string', 'description': "The server's note on the next step."}, 'note': {'type': 'string', 'description': 'A note on this result.'}, 'error': {'type': 'string', 'description': 'Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.'}, 'notice': {'type': 'string', 'description': 'Terms notice: research use only, not legal advice.'}, 'resets': {'type': 'string', 'description': 'On daily_capacity_reached: when capacity resets (00:00 UTC).'}, 'privacy': {'description': 'How user material is handled.'}, 'fallback': {'type': 'string', 'description': 'On daily_capacity_reached: where the full corpus can be downloaded.'}, 'guidance': {'type': 'string', 'description': "On a refusal or empty search: the server's explanation."}, 'playbooks': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'The playbook id.'}, 'what': {'type': 'string', 'description': 'What it does.'}, 'when': {'type': 'string', 'description': 'When it applies.'}, 'title': {'type': 'string', 'description': "The playbook's name."}, 'prompt': {'type': 'string', 'description': 'The matching MCP prompt name.'}, 'version': {'description': "The playbook's version."}, 'user_provides': {'description': 'What the user supplies.'}}, 'additionalProperties': {}}, 'description': 'The available playbooks.'}}, 'description': 'list_playbooks result.', 'additionalProperties': {}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['citation'], 'properties': {'citation': {'type': 'string', 'minLength': 1}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'hint': {'type': 'string', 'description': "On an error: the server's explanation."}, 'note': {'type': 'string', 'description': 'A note on this result.'}, 'error': {'type': 'string', 'description': 'Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.'}, 'notice': {'type': 'string', 'description': 'Terms notice: research use only, not legal advice.'}, 'parsed': {'description': 'The parse of the citation ({kind, canonical, ...}).'}, 'resets': {'type': 'string', 'description': 'On daily_capacity_reached: when capacity resets (00:00 UTC).'}, 'topics': {'description': 'Topics under a structured citation.'}, 'also_at': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Identical copies of the section (other register ids).'}, 'related': {'description': 'Documents that cite or amend the section ({register_id, relation}); not its text.'}, 'citation': {'type': 'string', 'description': 'The citation as given (on unparsed).'}, 'fallback': {'type': 'string', 'description': 'On daily_capacity_reached: where the full corpus can be downloaded.'}, 'guidance': {'type': 'string', 'description': "On a refusal or empty search: the server's explanation."}, 'handbook': {'description': 'When the citation names a whole handbook: its outline.'}, 'truncated': {'type': 'boolean', 'description': 'The candidate scan hit its limit.'}, 'candidates': {'type': 'array', 'items': {'type': 'string'}, 'description': 'On ambiguous: the registers the citation could mean.'}, 'register_id': {'type': 'string', 'description': 'The register the citation resolves to.'}, 'also_at_note': {'type': 'string', 'description': 'Explains also_at.'}, 'canonical_id': {'type': 'string', 'description': 'Set when the register is a same-text copy of that register.'}, 'related_note': {'type': 'string', 'description': 'Explains related.'}, 'renumbered_from': {'type': 'string', 'description': 'The old register, when the section was renumbered.'}, 'superseded_candidates': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Candidates dropped because a current register replaces them.'}, 'superseded_register_id': {'type': 'string', 'description': 'The register holding the prior text of this section.'}}, 'description': 'lookup_citation result.', 'additionalProperties': {}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 25, 'minimum': 1}, 'query': {'type': 'string', 'minLength': 1}, 'family': {'enum': ['hud', 'va', 'fnma', 'fhlmc', 'gnma', 'usda', 'sba'], 'type': 'string'}, 'currency_kind': {'enum': ['any', 'dual-version', 'revision-pending', 'pending', 'expires', 'expired', 'superseded', 'predates-statute', 'incorporated', 'incorporated-update-18', 'revised', 'revised-this-update', 'source-relocated', 'proposed', 'directive-watch', 'vacated-watch', 'superseded-in-part', 'modified-by', 'deleted', 'optional-now', 'amends', 'time-limited', 'note'], 'type': 'string', 'description': 'Restricts results to sections carrying this currency signal; "any" = any signal.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'hint': {'type': 'string', 'description': "On an error: the server's explanation."}, 'note': {'type': 'string', 'description': 'A note on this result.'}, 'cited': {'description': 'When the query is a citation: {citation, register_ids}.'}, 'error': {'type': 'string', 'description': 'Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.'}, 'notice': {'type': 'string', 'description': 'Terms notice: research use only, not legal advice.'}, 'reason': {'type': 'string', 'description': 'With empty results: empty_query, no_match or no_match_above_threshold.'}, 'resets': {'type': 'string', 'description': 'On daily_capacity_reached: when capacity resets (00:00 UTC).'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'match': {'type': 'string', 'description': 'all_terms or partial.'}, 'also_at': {'description': 'Same-text copies dropped from the list.'}, 'excerpt': {'type': 'string', 'description': 'A verbatim fragment near the match; not the whole rule.'}, 'section': {'type': 'string', 'description': 'The section title.'}, 'version': {'type': 'string', 'description': 'On a dual-version FHA section: "in-force" or "update-18-optional".'}, 'currency': {'description': '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, modified-by, expired.'}, 'authority': {'type': 'string', 'description': 'The document and section title.'}, 'rank_score': {'type': 'number', 'description': 'The score results are ordered by.'}, 'register_id': {'type': 'string', 'description': 'The register id.'}, 'missing_terms': {'type': 'array', 'items': {'type': 'string'}, 'description': 'On partial: the query terms this section lacks.'}, 'obligation_id': {'type': 'string', 'description': 'The obligation (section) id.'}, 'other_version': {'type': 'string', 'description': "On a dual-version section: the other version's obligation_id."}, 'mandatory_date': {'type': 'string', 'description': 'On an Update 18 revision: when it becomes mandatory.'}, 'section_status': {'type': 'string', 'description': '"deleted": a deleted-section stub.'}, 'obligation_type': {'type': 'string', 'description': 'note or index: not rule text.'}, 'special_program': {'type': 'string', 'description': 'The special program this section belongs to (ranked x0.5).'}, 'canonical_citation': {'type': ['string', 'null'], 'description': 'The citation in the regulator\'s style (e.g. "4000.1 II.A.5.d", "B3-3.3-07"), or null.'}, 'section_status_date': {'type': 'string', 'description': 'Date of section_status.'}}, 'additionalProperties': {}}, 'description': 'Ranked sections, highest rank_score first (may be empty).'}, 'fallback': {'type': 'string', 'description': 'On daily_capacity_reached: where the full corpus can be downloaded.'}, 'guidance': {'type': 'string', 'description': "On a refusal or empty search: the server's explanation."}, 'handbook': {'description': 'When the query names a whole handbook: its outline.'}}, 'description': 'search_regs result.', 'additionalProperties': {}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id'], 'properties': {'id': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 64, 'description': 'Playbook id: one of fnma-ai-lender-letter, fha-underwriting-qc, va-loan-qc, usda-loan-qc.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'id': {'type': 'string', 'description': 'The playbook id.'}, 'kit': {'description': 'The rule kit ({kind, source, version, load_with}).'}, 'hint': {'type': 'string', 'description': "On an error: the server's explanation."}, 'note': {'type': 'string', 'description': 'A note on this result.'}, 'error': {'type': 'string', 'description': 'Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.'}, 'title': {'type': 'string', 'description': "The playbook's name."}, 'notice': {'type': 'string', 'description': 'Terms notice: research use only, not legal advice.'}, 'resets': {'type': 'string', 'description': 'On daily_capacity_reached: when capacity resets (00:00 UTC).'}, 'stages': {'description': "The workflow's stages."}, 'privacy': {'description': 'How user material is handled.'}, 'version': {'description': "The playbook's version."}, 'fallback': {'type': 'string', 'description': 'On daily_capacity_reached: where the full corpus can be downloaded.'}, 'guidance': {'type': 'string', 'description': "On a refusal or empty search: the server's explanation."}, 'valid_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'On unknown_playbook: the valid ids.'}, 'references': {'type': 'array', 'items': {'type': 'string'}, 'description': "The playbook's reference names."}, 'instructions': {'description': "The playbook's workflow instructions."}, 'user_provides': {'description': 'What the user supplies.'}, 'load_reference_with': {'type': ['string', 'null'], 'description': 'How a reference is loaded, or null when there are none.'}}, 'description': 'start_playbook result.', 'additionalProperties': {}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['text'], 'properties': {'text': {'type': 'string', 'minLength': 1}, 'register_id': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'hint': {'type': 'string', 'description': "On an error: the server's explanation."}, 'note': {'type': 'string', 'description': 'A note on this result.'}, 'error': {'type': 'string', 'description': 'Present only on an error or refusal: not_found, ambiguous, unparsed, empty_terms, unknown_playbook, unknown_reference, offset_out_of_range, daily_capacity_reached.'}, 'limit': {'type': 'number', 'description': 'On not_checked: the word limit.'}, 'words': {'type': 'number', 'description': 'On not_checked: the word count.'}, 'notice': {'type': 'string', 'description': 'Terms notice: research use only, not legal advice.'}, 'reason': {'type': 'string', 'description': 'On not_checked: too_long.'}, 'resets': {'type': 'string', 'description': 'On daily_capacity_reached: when capacity resets (00:00 UTC).'}, 'outcome': {'enum': ['exact', 'normalized', 'composed', 'not_found', 'not_checked'], 'type': 'string', 'description': '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_checked: over 5,000 words.'}, 'coverage': {'type': 'number', 'description': "Share of the text's words found in the source (0 to 1)."}, 'elisions': {'type': 'number', 'description': 'On composed: gaps (marked or not).'}, 'fallback': {'type': 'string', 'description': 'On daily_capacity_reached: where the full corpus can be downloaded.'}, 'guidance': {'type': 'string', 'description': "On a refusal or empty search: the server's explanation."}, 'segments': {'type': 'number', 'description': 'On composed: source pieces the text is assembled from.'}, 'omissions': {'description': 'On composed: short source phrases skipped between pieces.'}, 'differences': {'description': 'On a near miss: {closest_source, missing_from_quote, extra_in_quote}.'}, 'register_id': {'type': 'string', 'description': 'Echoed on not_found.'}, 'unsupported': {'description': 'On not_found: spans with no source support.'}, 'superseded_by': {'type': ['string', 'null'], 'description': 'On superseded: the current register.'}, 'mandatory_date': {'type': 'string', 'description': 'On an Update 18 revision: when it becomes mandatory.'}, 'checked_against': {'description': 'Source documents checked (document, edition, retrieval date).'}, 'matched_against': {'type': 'string', 'description': 'The checked document the text matched.'}, 'matched_version': {'type': 'string', 'description': 'current, superseded (a prior version) or update-18-optional.'}, 'spacing_ignored': {'type': 'boolean', 'description': 'Only spacing differs.'}, 'furniture_ignored': {'type': 'boolean', 'description': 'A page footer or running head was ignored.'}, 'typography_folded': {'type': 'boolean', 'description': 'Matched after folding quotes and dashes.'}, 'matched_register_id': {'type': 'string', 'description': 'The register whose stored text contains the passage.'}, 'checked_snapshot_ids': {'description': 'Snapshot ids checked.'}, 'list_markers_ignored': {'type': 'boolean', 'description': 'Added list markers were ignored.'}, 'also_in_obligation_id': {'type': 'string', 'description': 'On a match in an amending issuance: the amended obligation that also carries the text.'}, 'matched_obligation_id': {'type': 'string', 'description': 'The obligation whose stored text contains the passage.'}, 'superseded_register_id': {'type': 'string', 'description': 'On superseded: the register holding the prior text.'}}, 'description': 'verify_quote result.', 'additionalProperties': {}}
Modifications récentes des outils
Serveurs MCP similaires
BNM Data Shop
Sells access to cached official reports, enforcement orders, regulatory documents, inspection records, and other public-source te…
OpenHelvetia Gateway
Provides sourced access to Swiss federal legislation and political data, including law metadata, versions, amendments, citations,…
Court Listener
Searches and retrieves US court opinions, case citations, federal docket filings, and related legal documents.
Gov Uk Content
Searches and retrieves GOV.UK content, government organisations, and HMRC manuals, sections, and revision histories.
Eur Lex
Searches and retrieves EU legislation and CJEU judgments with article-level text, metadata, CELEX identifiers, and citations.
Openparliament Ca
Provides searchable Canadian Parliament data on bills, politicians, committees, meetings, and recorded votes.
Govinfo
Searches and retrieves metadata and document content from US government publications, including bills, regulations, court materia…
Dailymed
Retrieves FDA DailyMed structured drug labels, label histories and diffs, drug classes, recent updates, and label references by d…