DEV Community

Cover image for How to give Claude a MAS licence-verification tool with the Apify MCP server
Michael
Michael

Posted on • Originally published at scrapers.lat

How to give Claude a MAS licence-verification tool with the Apify MCP server

AI agents are good at reasoning and terrible at facts. Ask Claude whether a Singapore payment firm is "licensed by MAS" and it will answer confidently from training data that may be a year stale, or simply wrong. It might tell you a company is regulated when its licence was surrendered, or miss that the entity on your contract is a holding company that cannot legally take deposits. For anything AML or counterparty-related, "probably correct" is not good enough.

In this guide we fix that. We connect Claude to the official Apify MCP server, expose a single Actor that reads the Monetary Authority of Singapore (MAS) Financial Institutions Directory, and turn "is this firm regulated?" from a guess into a live lookup against the register of record. By the end you will have a working licence-verification tool that Claude, Cursor, or any MCP client can call mid-conversation, and you will know exactly where in the run the tool fires and what it returns.

Everything below is a real setup with real output. No mocked responses.

What is the Apify MCP server?

Model Context Protocol (MCP) is an open standard that lets AI clients call external tools. The Apify MCP server (https://mcp.apify.com) implements that standard on top of the Apify platform, which means every one of the thousands of Actors in the Apify Store becomes a tool an agent can invoke.

Why route an Actor through MCP instead of hard-coding an API call?

  • The agent decides when to fetch. Claude reads the conversation, notices it needs a fact it does not have, and calls the tool on its own. You do not write glue code for every question.
  • Structured input and output. The MCP server hands Claude the Actor's input schema, so the model fills in the parameters correctly, and returns a clean dataset it can reason over.
  • One connection, many tools. The same MCP endpoint exposes search-actors, fetch-actor-details, and call-actor, so an agent can discover and run any Actor without new configuration.
  • No infrastructure. The server is hosted. You add a few lines to a config file and you are done.

The Actor we will use

We will expose the Singapore MAS Financial Institutions Directory Scraper. It searches the MAS Financial Institutions Directory and returns the full register record for a regulated entity: legal name, every licence type it holds, the regulated activities each licence permits, named Chairman and CEO, website, phone, registered address, the MAS record's last-updated date, and the direct link back to the MAS detail page.

That field set is exactly what a KYB or AML check on a Singapore financial counterparty needs. MAS is the single regulator for banking, insurance, capital markets, and payments in Singapore, and its directory is public and authoritative, with no login wall.

The Singapore MAS Financial Institutions Directory Scraper on the Apify Store

Step 1: Get your Apify API token

Sign in to the Apify Console, open Settings → Integrations, and copy your personal API token. The MCP server uses it to authenticate and to bill Actor runs to your account.

📌 Note: the token is a secret. Keep it in the client config only, never in a prompt or a committed file.

Step 2: Point Claude Desktop at the Apify MCP server

Open Claude Desktop's config file (Settings → Developer → Edit Config, or ~/Library/Application Support/Claude/claude_desktop_config.json on macOS) and add the Apify server. The tools query parameter is the important part: it tells the server which Actor to expose, so Claude gets one focused tool instead of the entire Store.

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=scrapers_lat/singapore-mas-financial-institutions-scraper",
      "headers": {
        "Authorization": "Bearer YOUR_APIFY_TOKEN"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Cursor uses the same JSON in .cursor/mcp.json. If you prefer to run it locally over stdio instead of the hosted endpoint:

{
  "mcpServers": {
    "apify": {
      "command": "npx",
      "args": ["-y", "@apify/actors-mcp-server", "--tools", "scrapers_lat/singapore-mas-financial-institutions-scraper"],
      "env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Restart Claude Desktop so it picks up the new server.

Step 3: Confirm the tool is loaded

After the restart, the Actor shows up as a callable tool. If you list the tools the Apify server exposes, you will see the storage helpers plus the Actor itself, named after its Store handle:

get-actor-run, get-dataset-items, get-key-value-store-record,
abort-actor-run, scrapers_lat--singapore-mas-financial-institutions-scraper
Enter fullscreen mode Exit fullscreen mode

That last entry, scrapers_lat--singapore-mas-financial-institutions-scraper, is our licence-verification tool. Claude now knows it exists, what it does (from the Actor's README), and what inputs it takes (from the input schema the server passes along).

Step 4: Ask Claude to verify a financial institution

Now the payoff. In a normal chat, ask a question that requires ground truth:

"Is DBS Bank actually licensed by the Monetary Authority of Singapore? What can it legally do, and who runs it?"

Claude recognizes it cannot answer this reliably from memory, selects the MAS tool, and fills in the input from your question. Under the hood the client sends a tools/call with the Actor's parameters:

{
  "name": "scrapers_lat--singapore-mas-financial-institutions-scraper",
  "arguments": {
    "searchQuery": "DBS",
    "withDetails": true,
    "maxInstitutions": 5
  }
}
Enter fullscreen mode Exit fullscreen mode

The Apify MCP server starts the Actor, waits for it to finish, and returns the dataset. Here is the real run metadata it produced:

{
  "runId": "DgwHqYgNPziLgsgGG",
  "actorName": "scrapers_lat/singapore-mas-financial-institutions-scraper",
  "status": "SUCCEEDED",
  "startedAt": "2026-07-30T17:47:18.080Z",
  "finishedAt": "2026-07-30T17:47:24.658Z",
  "stats": { "runTimeSecs": 6.5 }
}
Enter fullscreen mode Exit fullscreen mode

Under seven seconds, live against the MAS directory.

Step 5: Read the real output

The dataset the tool returns is structured register data. This is an actual record from the run (trimmed to the fields that matter for a licence check):

{
  "name": "DBS BANK LTD.",
  "licenceTypes": [
    { "type": "Local Bank", "activities": [] },
    { "type": "SGS Primary Dealer", "activities": [] },
    { "type": "Exempt Capital Markets Services Entity",
      "activities": ["Fund Management", "Dealing In Capital Markets Products",
        "Providing Custodial Services", "Advising on Corporate Finance"] },
    { "type": "Exempt Financial Adviser",
      "activities": ["Advising on Investment Products"] }
  ],
  "chairman": "Peter Seah Lim Huat",
  "ceo": "TAN SU SHAN CARRIE",
  "website": "http://www.dbs.com",
  "phone": "+65 68788888",
  "address": "12 MARINA BOULEVARD, MARINA BAY FINANCIAL CENTRE TOWER 3 018982",
  "lastUpdated": "09 Jul 2026",
  "detailUrl": "https://eservices.mas.gov.sg/fid/institution/detail/166-DBS-BANK-LTD",
  "source": "MAS Financial Institutions Directory (Singapore)"
}
Enter fullscreen mode Exit fullscreen mode

Claude reads that and answers in plain language: yes, DBS Bank Ltd. is on the MAS register as a Local Bank, so it is regulated by MAS; its licences and exemptions let it carry out fund management, dealing in capital markets products, custody, and financial advisory; its Chairman is Peter Seah Lim Huat and its CEO is Tan Su Shan; and the MAS record was last updated on 09 Jul 2026. Every one of those facts is traceable to an official register entry, not the model's memory, and the detailUrl gives a human a one-click way to confirm it.

Claude calling the MAS tool and answering with live register data

The distinction the tool surfaces is just as important as the yes/no. The same search returns DBS Group Holdings Ltd as a Financial Holding Company (Banking) and DBS Digital Exchange Pte. Ltd. as a Recognised Market Operator. Three "DBS" entities, three completely different licences and permitted activities. An agent doing AML onboarding needs to match the exact legal entity on the contract, not just the brand. The tool makes that difference visible; the model alone would blur it.

A real use case: an AML counterparty-onboarding agent

Put this in context. A compliance analyst at a fintech is onboarding a new Singapore counterparty and needs to confirm, before going live, that:

  1. the entity is actually on the MAS register and not just claiming to be regulated,
  2. the licence it holds actually permits the activity you are transacting (a payments licence does not authorize fund management), and
  3. the named directors on the contract match the Chairman and CEO MAS has on file.

Without a tool, the analyst opens the MAS directory, types the name, clicks into the record, and copies licence types and officers into an onboarding form, once per counterparty. With the tool wired into Claude, the analyst pastes the counterparty list into the chat and asks the agent to verify each one. Claude calls the Actor per firm, checks that the required regulated activity appears under licenceTypes, compares the signer against chairman and ceo, and produces a short go/no-go note with the detailUrl as evidence. The manual lookup disappears; the judgment stays with the human.

This is the shape of every good agent tool: it removes the mechanical fetch, not the decision.

Going further: chain a second tool

Licence verification rarely stops at the regulator. A MAS licence tells you the entity is regulated, but not when it was incorporated, its registered UEN, its share capital, or its corporate officers. For that you check the ACRA company register. The same MCP connection can expose both Actors by extending the tools parameter:

https://mcp.apify.com?tools=scrapers_lat/singapore-mas-financial-institutions-scraper,scrapers_lat/singapore-acra-entities-scraper
Enter fullscreen mode Exit fullscreen mode

Now the agent can confirm the firm is licensed by MAS and pull its ACRA corporate record (UEN, incorporation date, entity status, registered address) in the same conversation, then combine both into one counterparty profile. Because each Actor is a separate tool, the agent picks the right one for each step on its own: MAS for "what is it allowed to do," ACRA for "who and what is the legal entity."

🏹 Troubleshooting: if the tool does not appear in Claude, the two usual causes are a missing or misspelled Actor handle in the tools parameter (it must be the exact username/actor-name from the Store URL) and a config that was edited while Claude was running. Fix the handle, save, and fully restart the client.

📌 Note: each tool call is a real Actor run billed to your Apify account (this Actor is pay-per-result). For one-off verification the cost is a fraction of a cent; if you plan to screen thousands of institutions on a schedule, run the Actor directly through the Apify API or a scheduled task instead of one call per chat message. Keep withDetails on when you need licences and officers, and turn it off for a fast name-and-category sweep.

Wrapping up

You now have an AI agent that can verify a Singapore financial institution against the official MAS register, on demand, mid-conversation, with the licence-type and regulated-activity detail an AML or KYB check actually needs. The pattern is reusable: pick an Actor that returns authoritative structured data, expose it through the Apify MCP server with the tools parameter, and let the agent decide when to call it.

To take it further:

  • Swap in a different jurisdiction or dataset by changing the Actor handle. The setup is identical.
  • Add the ACRA company register, sanctions, or ownership Actors to build a multi-step KYB and AML agent.
  • Read the Apify MCP server docs for OAuth setup, resource reads, and the search-actors / call-actor tools that let an agent discover Actors it was not preconfigured with.

The Actor used in this guide: Singapore MAS Financial Institutions Directory Scraper.

Top comments (0)