Docs

Singapore Company Check

Overview

One question: is this Singapore entity real, active and safe to deal with? Give a UEN (Unique Entity Number) and get a verdict:

VerdictMeaning
failClosed, insolvent or sanctioned: struck off, dissolved, in liquidation, under a winding-up order or provisional liquidator, or listed on a sanctions list. Also returned for a UEN that isn't in the register.
reviewWarning signs a person should look at: a winding-up application, judicial management, a scheme of arrangement, a voluntary liquidation, a pending strike-off, or a possible sanctions name match.
passNone of the above found in any source.

Every verdict comes with the reasons behind it, and each reason links to its evidence. Sources: the ACRA register, Government Gazette notices, OFAC / UK / EU sanctions lists and GeBIZ awards. See Data & coverage for what each contains and how fresh it is.

Connect

The MCP server uses Streamable HTTP at:

https://company.cura8.ai/mcp

No account or key is needed during the beta.

Claude

In Claude (web or desktop), open Settings → Connectors → Add custom connector and paste the URL. For Claude Code:

claude mcp add --transport http cura8 https://company.cura8.ai/mcp

ChatGPT

With developer mode enabled, add a connector and paste the URL. Availability depends on your ChatGPT plan.

Cursor, VS Code and other clients

// Cursor: ~/.cursor/mcp.json
{ "mcpServers": { "cura8": { "url": "https://company.cura8.ai/mcp" } } }

// VS Code: .vscode/mcp.json
{ "servers": { "cura8": { "type": "http", "url": "https://company.cura8.ai/mcp" } } }

Clients that only launch local (stdio) servers can use the mcp-remote bridge:

{ "mcpServers": { "cura8": { "command": "npx", "args": ["-y", "mcp-remote", "https://company.cura8.ai/mcp"] } } }

MCP tools

search_companies

Find Singapore entities by name or UEN. Returns up to 10 candidates with UEN and register status, including closed entities and former names. Live entities rank first.

InputTypeNotes
querystring, 2–120 charsA company name (Crimsonlogic) or UEN (199806033K). Legal suffixes like "Pte Ltd" are optional.

Each result has uen, name, status, status_category, entity_type and match: uen, exact, former_name or fuzzy.

check_company

The full check for one entity. Returns the check response.

InputTypeNotes
uenstringA UEN, case-insensitive, e.g. 201730858K.

Both tools are read-only and declare output schemas, so clients can validate structuredContent.

HTTP API

Base URL https://company.cura8.ai. JSON responses, CORS enabled. Machine-readable spec: openapi.json (OpenAPI 3.1).

RequestReturns
GET /v1/sg/companies/search?q=Search results, as search_companies.
GET /v1/sg/companies/{uen}/checkThe check response, as check_company.
GET /healthDatabase reachability and each source's as_of date.
GET /openapi.jsonThe OpenAPI document.
curl https://company.cura8.ai/v1/sg/companies/201318724N/check
curl "https://company.cura8.ai/v1/sg/companies/search?q=wefic"

Errors

StatuserrorWhen
400invalid_queryq missing or shorter than 2 characters.
400invalid_uenThe path segment isn't a UEN.
502database_unavailableTemporary. Retry after a short wait.

A well-formed UEN that isn't in the register is not an error: it returns 200 with verdict fail and reason NOT_FOUND.

Response

FieldContents
verdictpass, review or fail: the most severe reason.
reasons[]Most severe first. Each has code, severity (fail / review / info), message and evidence (source, date, url).
companyRegister record: name, former names, entity and company type, raw status and normalised status_category, registration date, address, industry codes, officer count, annual return and accounts dates. null if the UEN isn't registered.
signals.gazette[]Company notices, newest first: notice_type, title, date, case number and the official notice url. uens_from_name: true marks a notice matched by company name because it printed no UEN.
signals.sanctions[]Matching list entries with the basis of the match: registration_number, exact_name or fuzzy_name.
signals.gebizGovernment contract summary: award count, total S$, first and last award, agencies. null if none.
sources[]The as_of date of every source used.
attribution[], disclaimerLicence attributions and the service disclaimer. Keep them with the data.

status_category

ACRA uses about 25 status strings. They are normalised to: live, distressed (receivership or judicial management), closing (e.g. gazetted to be struck off), in_liquidation, struck_off, dissolved, terminated, converted (amalgamated or transferred) and other.

Example

check_company("201318724N"), recorded 15 Sep 2026 (abridged: one of two notices shown, attribution shortened):

{
  "uen": "201318724N",
  "verdict": "review",
  "reasons": [
    {
      "code": "GAZETTE_JUDICIAL_MANAGEMENT",
      "severity": "review",
      "message": "Under judicial management.",
      "evidence": {
        "source": "eGazette",
        "url": "https://www.egazette.gov.sg/2026/government%20gazette/advertisements/26adv6812.pdf",
        "date": "2026-09-04"
      }
    },
    {
      "code": "ANNUAL_RETURN_OVERDUE",
      "severity": "info",
      "message": "Last annual return on 2018-11-29.",
      "evidence": { "source": "ACRA", "date": "2026-08-14" }
    }
  ],
  "company": {
    "uen": "201318724N",
    "name": "SINGAPORE WEFIC OCEAN TECHNOLOGIES PTE. LTD.",
    "former_names": ["KERUI OILFIELD SOLUTIONS (SINGAPORE)"],
    "entity_type": "Local Company",
    "status": "Live Company",
    "status_category": "live",
    "registered_on": "2013-07-10",
    "annual_return_date": "2018-11-29",
    …
  },
  "signals": {
    "gazette": [
      {
        "notice_type": "judicial_management",
        "title": "Notice of Appointment of Judicial Manager by Resolution of Company’s Creditors - Singapore Wefic Ocean Technologies Pte. Ltd.",
        "published_on": "2026-09-04",
        "uens": ["201318724N"],
        "case_no": null,
        "url": "https://www.egazette.gov.sg/2026/government%20gazette/advertisements/26adv6812.pdf"
      }
    ],
    "sanctions": [],
    "gebiz": null
  },
  "sources": [
    { "source": "acra", "as_of": "2026-08-14" },
    { "source": "gazette", "as_of": "2026-09-11" },
    { "source": "ofac_sdn", "as_of": "2026-09-14" },
    { "source": "uk", "as_of": "2026-09-11" },
    …
  ],
  "attribution": ["Contains information from ACRA Information on Corporate Entities …", …],
  "disclaimer": "Automated check from public sources, for information only. …",
  "checked_at": "2026-09-15T03:07:17.277Z"
}

Reason codes

CodeSeverityMeaning
NOT_FOUNDfailNo entity with this UEN in the register.
STATUS_STRUCK_OFF, STATUS_DISSOLVED, STATUS_TERMINATED, STATUS_IN_LIQUIDATIONfailThe register status shows the entity is closed or being wound up.
STATUS_DISTRESSED, STATUS_CLOSING, STATUS_CONVERTED, STATUS_OTHERreviewReceivership or judicial management; pending closure; amalgamated or converted; an unrecognised status.
GAZETTE_WINDING_UP_ORDERfailA court ordered the company wound up.
GAZETTE_PROVISIONAL_LIQUIDATORfailA provisional liquidator was appointed.
GAZETTE_STRUCK_OFFfailGazetted as struck off.
GAZETTE_WINDING_UP_APPLICATIONreviewSomeone applied to court to wind the company up.
GAZETTE_JUDICIAL_MANAGEMENTreviewA judicial manager (or interim one) runs the company.
GAZETTE_SCHEME_OF_ARRANGEMENTreviewA restructuring with creditors.
GAZETTE_CREDITORS_VOLUNTARY_LIQUIDATIONreviewAn insolvent company is winding itself up.
GAZETTE_MEMBERS_VOLUNTARY_LIQUIDATION, GAZETTE_LIQUIDATION_MEETING, GAZETTE_DIVIDEND_OR_PROOF_OF_DEBTreviewA liquidation is under way (solvent or not).
GAZETTE_STRIKE_OFF_INTENTreviewThe registrar intends to strike the company off.
GAZETTE_RESTOREDinfoRestored to the register. Adverse notices published before it are downgraded to info.
SANCTIONS_REGISTRATION_MATCHfailThe UEN appears in a sanctions list entry.
SANCTIONS_NAME_MATCHfail / reviewThe exact name is listed: fail with a Singapore address on the entry, review otherwise.
SANCTIONS_POSSIBLE_MATCHreviewA similar name is listed. Often a false positive.
RECENTLY_REGISTEREDinfoRegistered in the last 90 days.
ANNUAL_RETURN_OVERDUEinfoA live local company whose last annual return is over 18 months old.
GOVERNMENT_SUPPLIERinfoHas won GeBIZ contracts.

Gazette notices older than 24 months don't affect the verdict. New codes may be added; treat unknown codes by their severity.

Guidance for agents

cura8 is an automated check of public sources, for information only. It is not legal, credit or compliance advice, and it doesn't replace the official registers.

Limits & versions

Questions or wrong data: connect@navan.ai.