Skip to content

Vajra Technologies / Public-record intelligence / India

Every lead carries its source.
Every connection carries proof.

India’s records are scattered across seven portals that never talk. Vajra links affidavits, corporate filings, bond disclosures and court dockets into one knowledge graph — 31,053 nodes, 43,712 edges, zero fabricated relationships.

We never draw conclusions. We assemble provenance-stamped leads.

POLITICIAN COMPANY DONATION ASSET PARTY COURTCASE DIRECTOR_OF MADE_DONATION
DECLARED / DIRECTOR_OF / MADE_DONATION / INVOLVED_IN — every edge carries a source URL and a retrieval timestamp

Seven portals. Six access barriers. One researcher doing it alone.

Evidence on every node: source_url · retrieved_at · schema v3

Government records are public in name only. Different portals, different schemas, different barriers. Teams spend 40 hours per matter downloading PDFs and pasting into spreadsheets, hoping they did not miss a directorship three layers deep. This is not diligence. It is a system that was never designed for the people who depend on it.

491

politicians profiled, declared assets and liabilities verified against live MyNeta data.

0

fabricated edges across 7 sources. No relationship is inferred without provenance.

14,491

electoral-bond donations mapped to donor companies and recipient parties, three cycles joined.

14,730

declared assets linked, each attributed to its source page and retrieval timestamp.

One name. Four phases. Source URL on every node.

A researcher gives Vajra a name. Vajra runs four phases into a Neo4j graph. Checkpoints make every run resume-safe. Results are leads with provenance, never conclusions.

PHASE 01

Profile and declared assets

Election affidavits from MyNeta/ADR: declared assets, liabilities, party affiliation, constituency, criminal-record disclosures. Stored as Politician + Asset via DECLARED.

source: myneta.info

PHASE 02

Corporate and donations

MCA21 director history, OpenCorporates cross-border registrations, ECI bond-by-bond release for donor-to-party flows. Company, Donation, PoliticalParty via DIRECTOR_OF, MADE_DONATION.

sources: mca21, opencorporates, eci bonds

PHASE 03

Litigation and case status

eCourts for case status, Indian Kanoon for full-text judgment search. CAPTCHA walls surface as honest failures. CourtCase via INVOLVED_IN. A case mention is a lead, never a finding of guilt.

sources: ecourts, indiankanoon, cic/rti

PHASE 04

Network and shortest paths

Graph traversal: company networks, common connections, shortest paths between entities. Exports json, cypher, dot, every node and edge carrying a source URL.

backend: neo4j

Six reasons, each with a provenance trail.

Provenance is the product

Every node and edge stores a source URL and retrieval timestamp. DECLARED edges carry the affidavit page URL.

Graph-native, not tabular

Politician, Company, Donation, Party, CourtCase in one Neo4j graph. One cypher query, not five spreadsheets.

Entity resolution

rapidfuzz resolves “A. Raja” to “Raja A”, “Akshay” to “Akshaya”. CIN and DIN are golden identifiers.

India-first

MCA21 Akamai WAF handled, MyNeta 2024 layout parsed, eCourts CAPTCHA detected. India is the only market.

Embeddable via MCP

MCP tool provider over stdio and Streamable HTTP, both protocol eras. mcp_e2e_sdk_http.py 17/17 live.

Read-only by design

REST mutations return 403. Write tool hidden in tools/list unless mcp.allow_investigate=true.

Vajra scrapes what is reachable, parses what is there, and links what it stores. WAFs and CAPTCHAs surface as honest failures, never as silent skips.

MyNeta / ADRElection affidavits · active, 2024 layout
ECI bond disclosures14,491 donations seeded · active
Indian KanoonJudgments, full-text · most reliable
MCA21Corporate filings · best-effort, Akamai WAF
OpenCorporatesCross-border registrations · API key
eCourts v6Case status · CAPTCHA per search
CIC / RTIRTI disclosures · Google CSE key

491

politicians

14,730

assets

14,491

donations

1,317

donor companies

24

parties

31,053

nodes

43,712

edges

Three planes. Read-only by default.

PLANE 01

Collect

Investigation runner on your VM or CI cron. Disk checkpoints for minutes-to-hours runs, polite per-source rate limits, one stable egress IP. The only writer to the customer Neo4j.

PLANE 02

Store

Hosted Neo4j, one per customer, encrypted Bolt. Dedicated evidence directory, schema constraints for identity stability, sessions re-scope to the current allow_investigate setting.

PLANE 03

Serve

Read-only FastAPI tier, Python 3.12 ASGI, scales to zero. X-API-Key per customer, per-key rate limit, ephemeral fs, audit-only logs. Health at /health.

Read-only by default

REST mutations return 403. Write tool hidden unless explicitly enabled. The architecture, not a flag, locks the graph down.

Per-customer isolation

One dedicated Neo4j per agency. No shared credentials, ports, logs, or backups between tenants.

Provenance-audited

Every request emits a JSON audit line: masked credentials, tool method, key hash, error code. Bearer rotation is tamper-evident.

Human review required

A named reviewer accepts or rejects every material lead. The graph produces findings. The human produces conclusions.

The entity layer for legal-AI platforms.

Vajra ships as an MCP tool provider. Veritect, SCC, Manupatra, CaseMine, Claude Desktop, and custom agents call Vajra over stdio or HTTP for provenance-stamped entity leads.

  • 01Seven read tools: search, graph export, company network, shortest paths, common connections, source metadata, health.
  • 02One gated write tool: vajra_investigate. Hidden by default.
  • 03Zero new runtime dependency. Server uses only Python stdlib and the graph layer.
  • 04Both protocol eras: 2024-11-05 / 2025-03-26 and stateless 2026-07-28.

stdio: mcp SDK v1 client / Python

async with streamable_http_client(url, http_client=http_client) as (read, write):
    async with ClientSession(read, write) as session:
        await session.discover()
        tools = await session.list_tools()
        result = await session.call_tool(
            "vajra_search_entities",
            {"query": "Nitin Gadkari", "limit": 5})

Live-validated on the GCP VM: mcp_e2e_sdk_http.py 17/17, v2 17/17, write 9/9, session resume 12/12.

Built for teams that verify before they file.

The law firm that refuses to file a memo on unverified AI output

The due-diligence team screening for politically exposed persons

The legal-AI platform embedding entity investigation via MCP

The investigative journalist who needs every claim to carry a source

The political-risk consultancy tracking corporate-political ties

The compliance officer who needs an audit trail, not just an answer

Evidence before conclusions. Provenance before claims. Human judgment before automation.

One scoped matter. Four weeks. Evidence before enthusiasm.

We bring the graph, the API, the MCP server, and the audit trail. You bring the matter and the named reviewer. Cells: A ₹50,000, B ₹75,000, C ₹1,20,000. The cell is fixed. The matter is yours.

01

Scope one matter

Authorized scope: entities, sources, date window, named reviewer. Opaque matter IDs only.

02

Isolated env

Dedicated Neo4j, dedicated evidence directory, per-customer key. pilot.enabled fail-closed.

03

Run the pipeline

Up to three scoped matters over four weeks. Checkpoint-resumable. Source-skip register delivered.

04

Scorecard

Two check-ins, exit scorecard, go/no-go on evidence. No continuity commitment on either side.

Start a pilot

pre-pilot. No pilot has been run. No customer has paid. See commercialization/ for the evidence register.

The lines we will not cross.

01

Never fabricate a relationship the data does not support. Probabilistic edges flag for mandatory human review.

02

Never publish a conclusion without provenance. Every lead carries a source URL and a retrieval timestamp.

03

Never sell automated decisions in high-stakes contexts. Read-only by default. Write path gated.

04

Never scrape private data. Only public records, only government disclosures, only what the law already makes available.

05

Never claim production readiness before the evidence exists. Working prototype, pilot-first.

06

Never weaken the read-only default without explicit decision. Not a toggle. The architecture.

Every lead carries its source.
Every connection carries proof.