npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@intellicompli/mcp-server

v0.2.1

Published

Official MCP server for IntelliCompli — AML/CTF compliance platform for Australian reporting entities. Connects Claude Desktop and other MCP clients to IntelliCompli's compliance APIs for KYC, sanctions screening, transaction monitoring, and AUSTRAC repor

Readme

IntelliCompli MCP Server

This package exposes IntelliCompli's AML/CTF compliance platform — customer records, sanctions and PEP screening, transaction monitoring, alerts, investigations, and AUSTRAC reporting — as tools an MCP (Model Context Protocol) client such as Claude can call directly. It runs no AI itself; it is a typed wrapper over IntelliCompli's REST API, via @intellicompli/sdk.

Two ways to connect

1. Hosted connector (recommended)

IntelliCompli runs an MCP server at https://api.intellicompli.com.au/v1/mcp. There is nothing to install, and authentication is OAuth 2.0 with PKCE, handled by the MCP client — no API key to create or store.

  • In the dashboard: Integrations → Claude AI (/dashboard/integrations/claude) shows the URL and in-app setup steps.
  • Public walkthrough: /guides/claude-ai-integration.
  • In Claude: Settings → Integrations → Add MCP Server, paste the URL, click Connect.

The hosted connector is a separate implementation (apps/api/src/lib/mcp/server.ts in the main repo), maintained by hand alongside this package rather than built from it. It currently exposes 23 tools — marked "hosted" in the table below.

2. npm package (local, stdio)

Install: @intellicompli/mcp-server. Authentication is an IntelliCompli API key (COMPLI_API_KEY), created in the dashboard. This surface exposes all 29 tools in the table below — the 23 hosted tools plus 6 npm-only ones.

The package's bin entry is named intellicompli-mcp, not mcp-server, so a bare npx @intellicompli/mcp-server will not find it — pass the package explicitly:

{
  "mcpServers": {
    "intellicompli": {
      "command": "npx",
      "args": ["--package=@intellicompli/mcp-server", "intellicompli-mcp"],
      "env": {
        "COMPLI_API_KEY": "sk_live_..."
      }
    }
  }
}

This is the format for both Claude Code's .mcp.json and Claude Desktop's claude_desktop_config.json.

If you're developing inside this monorepo instead, build the package first (pnpm build --filter=mcp-server from the repo root, or pnpm build from this directory) and point at the compiled CLI directly:

{
  "mcpServers": {
    "intellicompli": {
      "command": "node",
      "args": ["packages/mcp-server/dist/cli.js"],
      "env": {
        "COMPLI_API_KEY": "sk_live_..."
      }
    }
  }
}

The server runs entirely over stdio: it opens no listening network port of its own, and its only outbound traffic is HTTPS calls to the IntelliCompli API. Requires Node.js 18 or later (the tsup build target); this isn't enforced via an engines field in package.json.

Available tools

Tool names, parameters, and one-line summaries below are taken from the server.tool(...) registrations in src/tools/*.ts. Hosted tool descriptions in apps/api/src/lib/mcp/server.ts are worded slightly differently in places since the two surfaces are maintained independently, but the same 23 tool names and behaviour are shared.

The dashboard UI calls this domain "alerts" and "investigations," not "cases" — the heading below keeps the API/tool name because list_cases, get_case, etc. are literal tool names that can't be renamed here.

Customers

| Tool | Description | Availability | |---|---|---| | list_customers | Search and list customers by email, risk level, status, or type. Paginated. | hosted, npm | | get_customer | Full customer profile: personal details, risk level, verification status, screening history. | hosted, npm | | create_customer | Create a new customer record (individual or business). Write. | hosted, npm |

Screening

| Tool | Description | Availability | |---|---|---| | screen_sanctions | Real-time sanctions screening against DFAT, UN, and other watchlists. Write (creates a screening record). | hosted, npm | | screen_pep | Politically Exposed Person (PEP) screening, including close associates and family. Write. | hosted, npm |

Alerts

| Tool | Description | Availability | |---|---|---| | list_alerts | List compliance alerts generated from monitoring, screening matches, and risk-threshold breaches. Filter by severity/status. | hosted, npm | | get_alert | An alert's full detail: triggering event, associated customer, resolution history. | hosted, npm | | resolve_alert | Update an alert's status, or resolve it with a disposition and notes. Write. | hosted, npm |

Cases (investigations)

| Tool | Description | Availability | |---|---|---| | list_cases | List investigation cases opened from high-risk alerts, screening matches, or EDD requirements. | hosted, npm | | get_case | A case's full detail: tasks, evidence, assigned investigator, timeline. | hosted, npm | | create_case | Open a new investigation case. Write. | hosted, npm | | update_case | Update a case's status, priority, findings, or resolution. Write. | hosted, npm |

Transactions

| Tool | Description | Availability | |---|---|---| | list_transactions | List transactions; auto risk-scored and flagged for TTR at ≥ $10,000 AUD. | hosted, npm | | get_transaction | A transaction's risk-score breakdown, TTR status, and review history. | hosted, npm | | create_transaction | Record a transaction. Auto risk-scored, checked against TTR thresholds and structuring patterns. Accepts vendor/buyer-side counterparty fields. Write. | hosted, npm |

Risk assessment

| Tool | Description | Availability | |---|---|---| | assess_customer_risk | Recalculate a customer's risk level from 11+ factors (PEP, sanctions, transaction patterns, geography, industry). May trigger EDD. Write. | hosted, npm |

Reports (AUSTRAC)

| Tool | Description | Availability | |---|---|---| | generate_ttr | Threshold Transaction Report for cash transactions ≥ $10,000 AUD, for a date range. | hosted, npm | | generate_ifti | International Funds Transfer Instruction report, for all international electronic transfers into/out of Australia. | hosted, npm |

No generate_smr or list_smr_reports tool exists on either surface — see Suspicious Matter Reports below.

Analytics

| Tool | Description | Availability | |---|---|---| | get_analytics | Aggregate compliance metrics for a date range: customer counts, transaction volumes, screening match rates, risk distribution, TTR/review stats. | hosted, npm |

Compliance & audit

| Tool | Description | Availability | |---|---|---| | list_audit_logs | The tenant's audit trail — customer changes, screening runs, case updates, report generation, API key usage. | hosted, npm | | list_edd_investigations | Enhanced Due Diligence (EDD) investigations, auto-triggered for high-risk customers. | hosted, npm | | get_edd_investigation | An EDD investigation's checklist, source-of-funds verification, and findings. | hosted, npm | | list_beneficial_owners | Beneficial owners (UBOs) of a business customer — anyone with 25%+ ownership or significant control. | hosted, npm |

Client groups (npm only)

A client group is a practice client's related entities (company + trust + individual), the parties to one property transaction (vendor, purchaser, agent), or a legal matter's parties (client, counterparty, payer), grouped under a groupType. These tools are read-only; linking a customer or transaction into a group happens via client_group_id on create_customer / create_transaction.

| Tool | Description | Availability | |---|---|---| | list_client_groups | List client groups by name, type (practice/property/matter), or member customer. | npm only | | get_client_group | A group's full detail, including every member's compliance snapshot and, for matter groups, the matter reference and status. | npm only |

Risk explanations (npm only)

| Tool | Description | Availability | |---|---|---| | explain_customer_risk | Plain-English narrative of why a customer is at its current risk level, for case notes or compliance review. | npm only | | explain_transaction_risk | Plain-English narrative of why a transaction is at its current risk level. | npm only |

Integrations / agentic workflows (npm only)

| Tool | Description | Availability | |---|---|---| | start_matter_cdd | Kick off Customer Due Diligence on a new matter or engagement: creates the customer record and runs sanctions + PEP screening in one call. Write. | npm only | | get_smr_context | Gather transaction, customer, and recent-alert context for a human compliance officer preparing an SMR. Does not draft or submit anything. | npm only |

Full parameter documentation (types, enums, optionality) is in the Zod schemas in src/tools/*.ts — the tables above are names and one-line summaries only.

Suspicious Matter Reports (SMR) and tipping-off

Flagged for legal review — see report to the team lead.

No generate_smr or list_smr_reports tool exists anywhere. Both were removed by design: under AML/CTF Act ss123–128, disclosing the existence of an SMR, or that one is being prepared, to a person outside a narrow set of permitted parties is a criminal offence, and every MCP response leaves the tenant boundary for a third-party model provider.

get_smr_context (npm package only, src/tools/integrations.ts) is not an SMR tool. Given a transaction ID, it bundles that transaction, its associated customer record, and up to 10 recent alerts on that customer into one JSON response, as background material for a human compliance officer filling in the SMR form. It never drafts, submits, or references any existing SMR, and its response includes a fixed reminder that submission under AML/CTF Act s41 requires the compliance officer's explicit action.

Separately, every list/get response on both surfaces is filtered before it reaches an MCP client: any record whose case type, resolution type, or audit action indicates SMR activity is replaced with a redacted placeholder rather than returned (src/sanitize.ts, mirrored in apps/api/src/lib/mcp/sanitize.ts).

SMR preparation and submission both happen only in the dashboard, at /dashboard/reports/smr, where the disclosure boundary is tenant ↔ IntelliCompli only.

Caching

The npm server keeps an in-memory TTL cache (src/cache.ts, LRU eviction, periodic expiry sweep) to cut down repeat API calls within a session. Not every tool uses it — write operations never cache their own result, and one TTL bucket is currently unused:

| Data | TTL | Used by | |---|---|---| | Customers | 60s | get_customer, list_customers, list_beneficial_owners, explain_customer_risk | | Alerts | 30s | list_alerts, get_alert | | Cases | 30s | list_cases, get_case | | Transactions | 30s | list_transactions, get_transaction, explain_transaction_risk, get_smr_context | | Analytics | 120s | get_analytics | | Audit logs | 30s | list_audit_logs | | EDD investigations | 30s | list_edd_investigations, get_edd_investigation | | Client groups | 60s | list_client_groups, get_client_group | | Reports | 60s | generate_ttr, generate_ifti | | Screening | defined, unused | none — screen_sanctions / screen_pep always run live |

Writes invalidate the read caches they affect: create_customer clears the customer cache, resolve_alert clears the alert cache, create_case / update_case clear the case cache, create_transaction clears the transaction cache, and start_matter_cdd clears customer and screening caches. assess_customer_risk has no cache to invalidate — risk.ts doesn't read from the cache at all.

Environment variables

Both read from process.env in src/server.ts (also mirrored in src/tools/explain.ts for its direct-fetch calls):

  • COMPLI_API_KEY (required) — your IntelliCompli API key. The server prints an error and exits if it's missing.
  • COMPLI_API_URL (optional) — overrides the API base URL. Defaults to https://api.intellicompli.com.au/v1.

Development

From packages/mcp-server/:

pnpm build   # tsup: compiles cli.ts (bundled, with the SDK inlined) and index.ts/server.ts (library build with .d.ts)
pnpm dev     # tsup --watch
pnpm clean   # rm -rf dist

The published CLI bundle inlines @intellicompli/sdk at build time (noExternal in tsup.config.ts), which is why @intellicompli/sdk is a devDependency here rather than a runtime dependency — the workspace package never needs to be resolvable at install time for someone running the published npm package.

Publishing to npm is via the "Publish MCP Server" GitHub Actions workflow (.github/workflows/publish-mcp.yml), which bumps the version, builds, and runs npm publish.

Architecture

  • cli.ts — stdio entry point; connects the MCP server to standard input/output.
  • server.ts — builds the SDK client and TTL cache from environment variables, then registers all 12 tool modules.
  • cache.ts — the TTL cache implementation (LRU eviction, periodic sweep).
  • response.ts — the one JSON-serialization path every tool should use; it routes through sanitize.ts before returning.
  • sanitize.ts — strips SMR-revealing fields and records before a response leaves the process.
  • tools/*.ts — 12 modules (alerts, analytics, cases, client-groups, compliance, customers, explain, integrations, reports, risk, screening, transactions), one per domain.
  • index.ts — exports createServer() for embedding this server in another Node process.

Example tool calls

MCP tools are called with named arguments matching their Zod schema, not CLI flags:

list_customers({ risk_level: "high", limit: 50 })
screen_sanctions({ first_name: "John", last_name: "Doe", customer_id: "cus_123" })
create_case({ title: "Suspicious transaction pattern", case_type: "transaction_review", priority: "high", customer_id: "cus_456" })
update_case({ case_id: "case_789", status: "resolved", resolution_type: "legitimate_activity", resolution_notes: "Pattern explained by seasonal business activity." })

Security

  • Every call is scoped to a tenant — by COMPLI_API_KEY (npm) or the OAuth session (hosted) — with Supabase row-level security enforcing isolation server-side either way.
  • Every call, read or write, is recorded in the tenant's audit trail (list_audit_logs), visible in the dashboard.
  • Whether a write tool (create_*, resolve_alert, update_case, assess_customer_risk, screen_*, start_matter_cdd) asks for confirmation before running depends on the MCP client's own permission settings, not on this server.

Version and licence

  • Package version: whatever package.json says; the publish workflow bumps it and commits the bump back. Note: the McpServer identifies itself internally as protocol version 0.1.1 (src/server.ts, and separately in the hosted implementation) — this hasn't been bumped to match the last few package releases.
  • Licence: MIT.