Skip to main content

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.1.0 · mirror as_of 2026-10-25 · upstream dataset updated 2026-10-13 · MIT license · github.com/amit043/india-company-diligence

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.

# 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:

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

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

Tools

Tool What it does Network
company_lookup(cin) Full registry row for one CIN, per-field provenance mirror only
company_search(name, limit) Case-insensitive name search, ≤50 rows, ranked mirror only
cin_decode(cin) Offline structural decode: listing status, state, year, company type none
gstin_validate(gstin) Offline GSTIN structure + mod-36 checksum validation none

The provenance contract

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

{
  "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:

export OGD_API_KEY=your-key        # or put it in a .env file at the repo root
uv run icd-sync                    # paginated pull, checkpointed, safe to interrupt
uv 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

uv sync
uv run pytest
uv run ruff check .

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

License

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

Metadata

Release files for india-company-diligence 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for india-company-diligence 0.1.0
File Size Uploaded Provenance
india_company_diligence-0.1.0.tar.gz 102.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for india-company-diligence 0.1.0
File Interpreter ABI Platform
india_company_diligence-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 123.3 kB

Release files / india_company_diligence-0.1.0.tar.gz

Download URL india_company_diligence-0.1.0.tar.gz
Size 102.4 kB
Tags Source
SHA-256 checksum
How to use checksums
3cd95b87937b2d69fe1c0cf8d494a321433ff09efb7dc969f03b3c9ab5e4c597
BLAKE2b-256 checksum
How to use checksums
fa52594a3f02d2aa7a9218738045d7493de83a25ee9692c68531b443289dc454
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.9

Release files / india_company_diligence-0.1.0-py3-none-any.whl

Download URL india_company_diligence-0.1.0-py3-none-any.whl
Size 20.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f5dd40ad00b6819d23ac85d8970829b5a0aa3080b0b5bdd29fc6973b09d70f73
BLAKE2b-256 checksum
How to use checksums
77130f6abfc6b970704569016354c0d360d581b1f34782da7c9c3fd92305d065
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.9

Security for india-company-diligence 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page