
Financial regulatory updates, deadlines and enforcement actions from regulators worldwide.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
The Reg Monitoring monthly briefing: an editor-written round-up of the most important financial services regulatory updates of one month, grouped by region (North America; UK and Europe; Asia-Pacific, Middle East and Africa), with a one-line overview per region and the deadlines in the 60 days after it was sent. Use for "what happened in regulation last month" or "catch me up", where a curated summary beats a raw search. Omit `month` for the latest issue. The response includes how to receive the briefing by email each month.
The month the issue covers, as YYYY-MM (e.g. "2026-10"). Omit for the latest issue. Each issue covers the previous calendar month.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http regulatory-updates https://mcp.regmonitoring.com/mcp
The Reg Monitoring monthly briefing: an editor-written round-up of the most important financial services regulatory updates of one month, grouped by region (North America; UK and Europe; Asia-Pacific, Middle East and Africa), with a one-line overview per region and the deadlines in the 60 days after it was sent. Use for "what happened in regulation last month" or "catch me up", where a curated summary beats a raw search. Omit `month` for the latest issue. The response includes how to receive the briefing by email each month.
| Argument | Type | Description |
|---|---|---|
| month | string | The month the issue covers, as YYYY-MM (e.g. "2026-10"). Omit for the latest issue. Each issue covers the previous calendar month. |
{
"type": "object",
"properties": {
"month": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$",
"description": "The month the issue covers, as YYYY-MM (e.g. \"2026-10\"). Omit for the latest issue. Each issue covers the previous calendar month."
}
},
"additionalProperties": false
}Coverage statistics for the regmonitoring.com regulatory corpus: how many updates are indexed, the date range they span, how many regulators and jurisdictions are represented, and how many records carry AI analysis, a deadline, a penalty amount or an urgency rating. Call this before making claims about what the corpus does or does not contain — most records have no penalty amount, so an empty enforcement result usually means the data is absent rather than that no enforcement occurred.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Every valid filter value with the number of records carrying it: jurisdiction and regulator codes with their full names, content types, topics, sectors, firm types, urgency levels and deadline types. CALL THIS FIRST if you are unsure of any filter value. Values are exact and case-sensitive — "uk" not "UK", "AML / Financial Crime" not "AML" — and a wrong value returns zero results rather than an error, which is indistinguishable from the data genuinely being empty.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Full detail for one regulatory update, by id or slug: the AI analysis (executive summary, what changed, who is affected, actions required, key dates, compliance impact, citations), any deadline, any enforcement penalty data, and related records. Call this after regmonitoring_search_updates when you need to judge what an update actually requires. Check the analysis `depth` field: "deep" means real structured analysis, "rationale" means only a short classification note. Set include_source_text to read the original document text.
| Argument | Type | Description |
|---|---|---|
| id | string | Record id, as returned by regmonitoring_search_updates. |
| slug | string | URL slug, the last path segment of a regmonitoring.com/updates/... link. Use this or id; id is faster. |
| include_source_text | boolean | Include the full scraped text of the source document. Off by default because it can run to tens of thousands of characters. Present on ~72% of records; ask for it when the analysis is not enough to judge impact. |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Record id, as returned by regmonitoring_search_updates."
},
"slug": {
"type": "string",
"description": "URL slug, the last path segment of a regmonitoring.com/updates/... link. Use this or id; id is faster."
},
"include_source_text": {
"type": "boolean",
"description": "Include the full scraped text of the source document. Off by default because it can run to tens of thousands of characters. Present on ~72% of records; ask for it when the analysis is not enough to judge impact."
}
},
"additionalProperties": false
}Regulatory deadlines with dates: consultation response dates, compliance deadlines, and rule effective dates, filterable by date range, status, firm type, jurisdiction and regulator. This is the tool for "what is coming up for my firm" and for building a compliance calendar. Status is derived at query time, never stored, so it is always current; buckets do not overlap (within_90 excludes anything already within 30 days). Set high_confidence_only when the answer will be planned against.
| Argument | Type | Description |
|---|---|---|
| to | string | Latest deadline date, YYYY-MM-DD, inclusive. |
| from | string | Earliest deadline date, YYYY-MM-DD, inclusive. |
| limit | integer | Default 50, max 100. |
| offset | integer | |
| status | array | Derived from the date at query time, never stored. "within_90" means within 90 days but not within 30 — the buckets do not overlap. Omit this and pass from/to for a plain date range. |
| firm_types | array | Records tagged "All Firms" are cross-cutting and match every firm-type filter. |
| regulators | array | Lowercase regulator codes. See regmonitoring_get_taxonomy. |
Enforcement actions across regulators and jurisdictions, with structured penalty data where it has been parsed: entity penalised, amount, currency, breach categories, and whether the penalty is final. Use for "what has this regulator fined firms for", "has this firm been penalised", or precedent research on a breach type. IMPORTANT: only about a quarter of enforcement records have a parsed penalty amount — extraction requires full source text, which many records lack. Do NOT answer "what are the largest fines" from sort=largest_penalty alone: it ranks only the parsed subset. Check the `note` field, which reports how many actions were excluded. Amounts are never converted between currencies.
| Argument | Type | Description |
|---|---|---|
| sort | string | Default "newest". "largest_penalty" excludes records with no amount. |
| limit | integer | Default 20, max 100. |
| entity | string | Case-insensitive substring of the penalised firm or individual name. |
| offset | integer | |
| currency | string | ISO code, e.g. "GBP", "USD", "EUR". |
| final_only | boolean | Only penalties recorded as final, excluding proposed or under appeal. |
| regulators |
Search regulatory updates from financial regulators across 20 jurisdictions — news, enforcement actions, consultations, policy statements, guidance, final rules, speeches and warnings, from 2011 to today. Filter by regulator, jurisdiction, topic, sector, firm type, content type, urgency, importance and date. Use published_after to answer "what changed recently"; use significance_min (4+) to cut routine noise. Returns compact records with a canonical regmonitoring.com URL for each — cite it. Call regmonitoring_get_update for the full text and analysis of any single result.
| Argument | Type | Description |
|---|---|---|
| sort | string | Default "newest". "relevance" ranks by query match and falls back to newest when no query is given. |
| limit | integer | Results to return, default 20, max 100. |
| query | string | Free-text search over title and summary. All words must appear (case-insensitive). Omit to browse by filters alone. |
| offset | integer | Skip this many results, for paging. |
| topics | array | Regulatory themes. Values are exact, e.g. "AML / Financial Crime". |
| sectors | array | Industry segments. |
| urgency | array |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 1, 2026.
| content_types | array | Kind of document the deadline came from. |
| jurisdictions | array | Lowercase jurisdiction codes. See regmonitoring_get_taxonomy. |
| deadline_types | array | response_due = consultation closes; compliance_deadline = firms must have complied; effective_date = rule takes effect. |
| high_confidence_only | boolean | Only deadlines extracted with high confidence. Worth setting when the answer will be planned against — a wrong date is worse than no date. |
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "Latest deadline date, YYYY-MM-DD, inclusive."
},
"from": {
"type": "string",
"description": "Earliest deadline date, YYYY-MM-DD, inclusive."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Default 50, max 100."
},
"offset": {
"type": "integer",
"minimum": 0
},
"status": {
"type": "array",
"items": {
"enum": [
"within_30",
"within_90",
"future",
"passed"
],
"type": "string"
},
"description": "Derived from the date at query time, never stored. \"within_90\" means within 90 days but not within 30 — the buckets do not overlap. Omit this and pass from/to for a plain date range."
},
"firm_types": {
"type": "array",
"items": {
"enum": [
"Asset Manager",
"Broker Dealer",
"Wealth Manager",
"Hedge Fund",
"Bank",
"Fintech",
"Crypto Exchange",
"Insurance",
"Family Office",
"Payment Provider",
"Credit Union",
"All Firms"
],
"type": "string"
},
"description": "Records tagged \"All Firms\" are cross-cutting and match every firm-type filter."
},
"regulators": {
"type": "array",
"items": {
"type": "string"
},
"description": "Lowercase regulator codes. See regmonitoring_get_taxonomy."
},
"content_types": {
"type": "array",
"items": {
"enum": [
"news",
"policy_statement",
"consultation",
"enforcement",
"guidance",
"speech",
"warning",
"regulatory_notice",
"report",
"final_rule"
],
"type": "string"
},
"description": "Kind of document the deadline came from."
},
"jurisdictions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Lowercase jurisdiction codes. See regmonitoring_get_taxonomy."
},
"deadline_types": {
"type": "array",
"items": {
"enum": [
"response_due",
"compliance_deadline",
"effective_date",
"expiry",
"other"
],
"type": "string"
},
"description": "response_due = consultation closes; compliance_deadline = firms must have complied; effective_date = rule takes effect."
},
"high_confidence_only": {
"type": "boolean",
"description": "Only deadlines extracted with high confidence. Worth setting when the answer will be planned against — a wrong date is worse than no date."
}
},
"additionalProperties": false
}| array |
| Lowercase regulator codes. |
| min_penalty | number | Minimum penalty amount, in the currency of the record — amounts are NOT converted between currencies, so combine this with `currency` if you need comparable figures. |
| jurisdictions | array | Lowercase jurisdiction codes. |
| published_after | string | YYYY-MM-DD, inclusive. |
| published_before | string | YYYY-MM-DD, inclusive. |
| with_penalty_amount_only | boolean | Only records carrying a structured penalty amount. IMPORTANT: this is a small minority of enforcement records — most enforcement actions are indexed without a parsed figure. Leaving this false returns the full enforcement picture; setting it true returns only what is quantified. |
{
"type": "object",
"properties": {
"sort": {
"enum": [
"newest",
"oldest",
"largest_penalty"
],
"type": "string",
"description": "Default \"newest\". \"largest_penalty\" excludes records with no amount."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Default 20, max 100."
},
"entity": {
"type": "string",
"description": "Case-insensitive substring of the penalised firm or individual name."
},
"offset": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"description": "ISO code, e.g. \"GBP\", \"USD\", \"EUR\"."
},
"final_only": {
"type": "boolean",
"description": "Only penalties recorded as final, excluding proposed or under appeal."
},
"regulators": {
"type": "array",
"items": {
"type": "string"
},
"description": "Lowercase regulator codes."
},
"min_penalty": {
"type": "number",
"description": "Minimum penalty amount, in the currency of the record — amounts are NOT converted between currencies, so combine this with `currency` if you need comparable figures."
},
"jurisdictions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Lowercase jurisdiction codes."
},
"published_after": {
"type": "string",
"description": "YYYY-MM-DD, inclusive."
},
"published_before": {
"type": "string",
"description": "YYYY-MM-DD, inclusive."
},
"with_penalty_amount_only": {
"type": "boolean",
"description": "Only records carrying a structured penalty amount. IMPORTANT: this is a small minority of enforcement records — most enforcement actions are indexed without a parsed figure. Leaving this false returns the full enforcement picture; setting it true returns only what is quantified."
}
},
"additionalProperties": false
}| Urgency. NOTE: about 35% of records have no urgency set, and filtering on this excludes all of them. Prefer significance_min unless urgency is specifically what you want. |
| firm_types | array | Types of firm affected. Records tagged "All Firms" are cross-cutting and match every firm-type filter, so filtering by "Asset Manager" also returns updates that apply to everyone. |
| regulators | array | Lowercase regulator codes, e.g. ["fca","sec","esma"]. See regmonitoring_get_taxonomy. |
| has_analysis | boolean | Only records carrying AI analysis (about 89% of the corpus). |
| content_types | array | Kind of document. |
| jurisdictions | array | Lowercase jurisdiction codes, e.g. ["uk","us","eu"]. Call regmonitoring_get_taxonomy for the valid list — guessing "UK" or "United Kingdom" returns nothing. |
| published_after | string | ISO date (YYYY-MM-DD), inclusive. This is how you answer "what changed this week" — no separate tool is needed. |
| published_before | string | ISO date (YYYY-MM-DD), inclusive. |
| significance_min | integer | Minimum importance, 1 (routine) to 5 (major). Every record is scored, so this is the most reliable way to cut noise. 4+ is "worth a compliance officer's attention". |
{
"type": "object",
"properties": {
"sort": {
"enum": [
"newest",
"oldest",
"significance",
"relevance"
],
"type": "string",
"description": "Default \"newest\". \"relevance\" ranks by query match and falls back to newest when no query is given."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results to return, default 20, max 100."
},
"query": {
"type": "string",
"description": "Free-text search over title and summary. All words must appear (case-insensitive). Omit to browse by filters alone."
},
"offset": {
"type": "integer",
"minimum": 0,
"description": "Skip this many results, for paging."
},
"topics": {
"type": "array",
"items": {
"enum": [
"AML / Financial Crime",
"Consumer Protection / Conduct",
"Prudential / Capital Requirements",
"Operational Resilience / Outsourcing",
"ESG / Sustainability",
"Technology & Cyber",
"Market Abuse / Surveillance",
"Reporting & Disclosure",
"Authorisation & Licensing",
"Senior Managers / Governance",
"General"
],
"type": "string"
},
"description": "Regulatory themes. Values are exact, e.g. \"AML / Financial Crime\"."
},
"sectors": {
"type": "array",
"items": {
"enum": [
"Banking & Credit",
"Investment Management",
"Wealth & Private Banking",
"Insurance & Pensions",
"Capital Markets & Trading",
"Payments & E-Money",
"Crypto & Digital Assets",
"Consumer Credit",
"Mortgage & Lending",
"General"
],
"type": "string"
},
"description": "Industry segments."
},
"urgency": {
"type": "array",
"items": {
"enum": [
"critical",
"high",
"medium",
"low"
],
"type": "string"
},
"description": "Urgency. NOTE: about 35% of records have no urgency set, and filtering on this excludes all of them. Prefer significance_min unless urgency is specifically what you want."
},
"firm_types": {
"type": "array",
"items": {
"enum": [
"Asset Manager",
"Broker Dealer",
"Wealth Manager",
"Hedge Fund",
"Bank",
"Fintech",
"Crypto Exchange",
"Insurance",
"Family Office",
"Payment Provider",
"Credit Union",
"All Firms"
],
"type": "string"
},
"description": "Types of firm affected. Records tagged \"All Firms\" are cross-cutting and match every firm-type filter, so filtering by \"Asset Manager\" also returns updates that apply to everyone."
},
"regulators": {
"type": "array",
"items": {
"type": "string"
},
"description": "Lowercase regulator codes, e.g. [\"fca\",\"sec\",\"esma\"]. See regmonitoring_get_taxonomy."
},
"has_analysis": {
"type": "boolean",
"description": "Only records carrying AI analysis (about 89% of the corpus)."
},
"content_types": {
"type": "array",
"items": {
"enum": [
"news",
"policy_statement",
"consultation",
"enforcement",
"guidance",
"speech",
"warning",
"regulatory_notice",
"report",
"final_rule"
],
"type": "string"
},
"description": "Kind of document."
},
"jurisdictions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Lowercase jurisdiction codes, e.g. [\"uk\",\"us\",\"eu\"]. Call regmonitoring_get_taxonomy for the valid list — guessing \"UK\" or \"United Kingdom\" returns nothing."
},
"published_after": {
"type": "string",
"description": "ISO date (YYYY-MM-DD), inclusive. This is how you answer \"what changed this week\" — no separate tool is needed."
},
"published_before": {
"type": "string",
"description": "ISO date (YYYY-MM-DD), inclusive."
},
"significance_min": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Minimum importance, 1 (routine) to 5 (major). Every record is scored, so this is the most reliable way to cut noise. 4+ is \"worth a compliance officer's attention\"."
}
},
"additionalProperties": false
}