India Company Diligence

io.github.amit043Published by GitHub account amit043v0.2.0Updated Nov 3, 2026

India company data for agents: 3.74M-company MCA mirror, CIN/GSTIN tools, provenance on every field

VerifiedSTDIODesktop onlyDatabasesFinanceBusiness & Commerce

Overview

AI-generated overview

Offline MCP server over a local mirror of India's MCA company registry, letting an assistant look up companies by CIN or name and decode CINs and validate…

What you can do
  • Look up a single company's full registry row by its 21-character CIN, with per-field provenance
  • Search company names case-insensitively, returning up to 50 ranked rows
  • Decode a CIN offline into listing status, state, incorporation year and company type
  • Validate a GSTIN offline for structure, state code and mod-36 check digit
  • Report what is missing or stale alongside every answer instead of guessing
When to use it
Useful for due-diligence style questions about Indian companies — verifying a vendor, checking registration status or paid-up capital, or confirming a CIN on an invoice — when you want answers from a local dataset without live API calls.
Requirements
Runs locally over stdio with uv/uvx. A one-time download of the prebuilt mirror (about 530 MB download, roughly 1.4 GB on disk) via the icd-fetch command; the ICD_MIRROR_DB environment variable points to the DuckDB file. Rebuilding the mirror yourself needs a free data.gov.in API key in OGD_API_KEY. Desktop client only.
Before you install
The mirror is a snapshot (as of 2026-10-25) and can be stale; directors, charges and financials are not included and are reported as missing. GSTIN validation is structural only — legal name and registration status are not verified. Rebuilding the mirror requires the OGD_API_KEY secret and a paced, long-running download. Data comes from the MCA via data.gov.in under the GODL license and should be attributed.

Installation

In SourceWeft

  1. Open India Company Diligence in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

india-company-diligence

An open-source MCP server that makes India's public company data agent-legible: a full local mirror of the MCA company master data (~3.74M companies), offline CIN decoding and GSTIN validation, and provenance on every field.

v0.2.0 · mirror as_of 2026-10-25 · upstream dataset updated 2026-10-13 · MIT license · github.com/amit043/india-company-diligence

[Glama — tool definitions rated A] [mcprush — security A]

Independently evaluated: Glama — tool definitions rated A, maintenance A, one-click deploy · mcprush — security A, low access · Also listed on Agensi skills and the official MCP registry.

60-second demo

You: A vendor called "Hella Infra Market" wants a ₹2 crore credit line. Check them out.

Claude (calls company_search, then company_lookup): HELLA INFRA MARKET LIMITED (CIN U46632MH2016PLC283737) is Active, a public unlisted company registered with ROC Mumbai, incorporated 2016-07-15, paid-up capital ₹285.8 crore. Note: HELLA INFRACON PRIVATE LIMITED — a similarly named entity — is Strike Off, so confirm the exact CIN on the invoice. Missing: directors, charges, and financials require the live MCA layer (roadmap). Source: mca-master-data, as_of 2026-10-25.

Every answer carries where each field came from, what is missing, and what is stale. Missing is stated, never fabricated.

Install & run (Claude Desktop)

Requires uv.

bash
# 1. one-time: download the prebuilt mirror (~530 MB download, ~1.4 GB on disk)uvx --from india-company-diligence icd-fetch

Add to claude_desktop_config.json:

json
{  "mcpServers": {    "india-company-diligence": {      "command": "uvx",      "args": ["india-company-diligence"],      "env": { "ICD_MIRROR_DB": "C:\\full\\path\\to\\mca_mirror.duckdb" }    }  }}

Restart Claude Desktop. Ask: "Look up CIN L17110MH1973PLC019786".

Tools

ToolWhat it doesNetwork
company_lookup(cin)Full registry row for one CIN, per-field provenancemirror only
company_search(name, limit)Case-insensitive name search, ≤50 rows, rankedmirror only
cin_decode(cin)Offline structural decode: listing status, state, year, company typenone
gstin_validate(gstin)Offline GSTIN structure + mod-36 checksum validationnone

The provenance contract

Every tool returns data plus provenance, and states what is missing or stale — never fabricated, never an error page:

json
{  "data": { "...": "..." },  "provenance": [{"field": "CompanyStatus", "source": "mca-master-data", "as_of": "2026-10-25"}],  "missing": ["director_network (live layer unavailable)"],  "stale": []}

Data & attribution

Company Master Data (RoC-wise), published by the Ministry of Corporate Affairs via data.gov.in, licensed under the Government Open Data License – India (GODL). 3,738,721 companies; upstream dataset updated 2026-10-13; this mirror built 2026-10-25.

gstin_validate is offline-only by design: no keyless public GST API exists, so legal name / registration status are stated as missing rather than guessed.

Roadmap

  • L1 live layer — MCA directors & charges via browser automation (week 2)
  • LLP decode — cin_decode currently handles company CINs; LLP IDs (e.g. ABA-1729) next
  • Refresh cadence: monthly mirror rebuilds as upstream updates

Bugs and data gaps: open an issue.

Sync the mirror yourself (alternative to icd-fetch)

Get a free API key on data.gov.in, then:

bash
export OGD_API_KEY=your-key        # or put it in a .env file at the repo rootuv run icd-sync                    # paginated pull, checkpointed, safe to interruptuv run icd-import                  # CSV -> data/mca_mirror.duckdb, source/as_of baked in

The pull is paced (5s between pages by default; override with OGD_DELAY_SECONDS or uv run icd-sync --delay 3). Completion matters, not speed.

Pausing & resuming

  • stop: uv run icd-watch stop (or just close the terminal)
  • status: uv run icd-watch status
  • resume: uv run icd-watch start — continues from data/mca_master.checkpoint
  • when the checkpoint reaches the dataset total, run uv run icd-import

Development

bash
uv syncuv run pytestuv run ruff check .

Prefer plain pip? requirements.txt / requirements-dev.txt mirror the deps.

License

MIT. Data under GODL-India; attribution as above.

Source: README.md at commit a27481e

Tools

4

company_lookup

Company Lookup

Look up one company by its 21-character Corporate Identity Number.

Parameterscinrequired

cin_decode

Cin Decode

Decode a Corporate Identity Number without using the mirror or network.

Parameterscinrequired

gstin_validate

Gstin Validate

Validate a GSTIN offline: structure, state code, and mod-36 check digit. Pure offline — no network, no keys. Live fields (legal name, trade name, registration status, filing history) require an authenticated GST API and are stated as missing, never fabricated.

Parametersgstinrequired

Version history

2
  1. v0.2.0LatestOct 31, 2026
  2. v0.1.1Oct 25, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts