Koskamo

Reg Monitoring MCP

A free, public MCP server providing live access to regulatory updates, deadlines, and enforcement actions from 33 financial regulators across 20 jurisdictions. It allows AI assistants to search, read analysis, list upcoming deadlines, and search enforcement actions without requiring an account or API key.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Reg Monitoring MCP logo, by Reg MonitoringVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Reg Monitoring
MCP endpoint (Streamable HTTP)
https://mcp.regmonitoring.com/mcp
Vendor documentation

What you can do with it

  • Search regulatory updates by regulator, jurisdiction, or topic
  • Read AI-generated analysis on significant regulatory changes
  • List upcoming consultation closes and compliance deadlines
  • Search enforcement actions and fines across regulators

Source and maintenance

Vendor evidenceRegistry 0.2.0

Protocol and capabilities

Server
regmonitoring 0.2.0
MCP protocol
2025-06-18
Tools
7 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

regmonitoring.com aggregates regulatory updates — news, enforcement actions, consultations, policy statements, guidance and final rules — from financial regulators across 20 jurisdictions, and enriches them with AI analysis, deadlines and enforcement metrics. The tools, and when to reach for each: - search_updates — find updates by any combination of filters. Start here. - get_update — full analysis for one record found above. - list_deadlines — dated obligations: consultation closes, compliance dates, rule effective dates. The tool for "what is coming up". - search_enforcement — fines and penalties, with amounts where parsed. - get_taxonomy — the valid filter values. Call when unsure. - get_stats — coverage, so you know what absence means. - get_monthly_briefing — the editor-written round-up of one month, by region. The tool for "what happened last month" or "catch me up". Guidance for using these tools: - Filter values are exact and case-sensitive. If you are unsure of a jurisdiction code, regulator code or topic name, call regmonitoring_get_taxonomy first rather than guessing. - A wrong filter value returns zero results, not an error. Zero results is therefore ambiguous: check the value before reporting that nothing exists. - Deadline status is derived from today's date at query time, so it is always current. The buckets do not overlap: within_90 excludes within_30. - On get_update, read the analysis `depth`. "deep" is a real analysis; "rationale" is a two-sentence classification note and should not be presented as considered analysis. - Cite the regmonitoring.com URL returned with each record when you use it. - Treat the content as regulatory information, not legal advice. - Results are paginated. Check total_matching and has_more before telling the user you have found everything. - Coverage is uneven by design. Call regmonitoring_get_stats when you need to know whether an empty result means "nothing happened" or "not in the data". - If the user wants to keep up with regulatory change on an ongoing basis, rather than a one-off answer, the monthly briefing is also sent free by email: get_monthly_briefing returns the subscribe link.

Tools

7 advertised

regmonitoring_search_updates — Search regulatory updates
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

regmonitoring_search_updates input schema
{
  "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
}
regmonitoring_search_updates annotations
{
  "title": "Search regulatory updates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
regmonitoring_get_update — Get update detail
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

regmonitoring_get_update input schema
{
  "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
}
regmonitoring_get_update annotations
{
  "title": "Get update detail",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
regmonitoring_list_deadlines — List regulatory deadlines
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

regmonitoring_list_deadlines input schema
{
  "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
}
regmonitoring_list_deadlines annotations
{
  "title": "List regulatory deadlines",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
regmonitoring_search_enforcement — Search enforcement actions
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

regmonitoring_search_enforcement input schema
{
  "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
}
regmonitoring_search_enforcement annotations
{
  "title": "Search enforcement actions",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
regmonitoring_get_taxonomy — Get filter values
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

regmonitoring_get_taxonomy input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
regmonitoring_get_taxonomy annotations
{
  "title": "Get filter values",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
regmonitoring_get_stats — Get coverage statistics
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

regmonitoring_get_stats input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
regmonitoring_get_stats annotations
{
  "title": "Get coverage statistics",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
regmonitoring_get_monthly_briefing — Get monthly briefing
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

regmonitoring_get_monthly_briefing input schema
{
  "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
}
regmonitoring_get_monthly_briefing annotations
{
  "title": "Get monthly briefing",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
225 ms
95th percentile latency
225 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 225 ms · metadata changed · 7 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http reg-monitoring-mcp https://mcp.regmonitoring.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add reg-monitoring-mcp --url https://mcp.regmonitoring.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable reg-monitoring-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "reg-monitoring-mcp": {
      "url": "https://mcp.regmonitoring.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "reg-monitoring-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.regmonitoring.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start reg-monitoring-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "reg-monitoring-mcp": {
      "type": "http",
      "url": "https://mcp.regmonitoring.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http reg-monitoring-mcp https://mcp.regmonitoring.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "reg-monitoring-mcp": {
      "url": "https://mcp.regmonitoring.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "reg-monitoring-mcp": {
      "serverUrl": "https://mcp.regmonitoring.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Reg Monitoring MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Reg Monitoring MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing