# India API (remote · api.dharun.dev)

Free Indian data and AI: pincode, IFSC, GSTIN, holidays, GST invoice, OCR, translation. No key.

- Trust score: 67/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-18

## Components

- remote · `api.dharun.dev`: 67/100 (this document), [markdown](https://verifymcp.io/servers/dharunashokkumar-india-api/api.md), [page](https://verifymcp.io/servers/dharunashokkumar-india-api/api)

## Channel facts

- Endpoint: `https://api.dharun.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.1.22`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-18.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 75/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 7644 tokens (~95/item across 80 items; 80 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 13/100
  - Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 91% of tool parameters carry a description.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "remove_image_background" implies "remove" and declares readOnlyHint instead, contradicting what its own name says it does.
  - An AI judge read all 81 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the India API MCP server?

India API is a hosted endpoint at https://api.dharun.dev/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http dharunashokkumar-india-api 'https://api.dharun.dev/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "dharunashokkumar-india-api": {
      "url": "https://api.dharun.dev/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "dharunashokkumar-india-api": {
      "type": "http",
      "url": "https://api.dharun.dev/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.dharunashokkumar-india-api]
url = "https://api.dharun.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dharunashokkumar-india-api": {
      "type": "remote",
      "url": "https://api.dharun.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add dharunashokkumar-india-api --url 'https://api.dharun.dev/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  dharunashokkumar-india-api:
    url: "https://api.dharun.dev/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "dharunashokkumar-india-api": {
      "Transport": "http",
      "Url": "https://api.dharun.dev/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add dharunashokkumar-india-api -t streamable-http -u 'https://api.dharun.dev/mcp'
```

### Other

```json
{
  "mcpServers": {
    "dharunashokkumar-india-api": {
      "type": "http",
      "url": "https://api.dharun.dev/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-18 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-17 (score 66, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] Server version: 1.1.28 → 1.1.33
- [functional] New tool “check_ipv6”
- [functional] New tool “check_tls”
- [functional] New tool “domain_icon”
- [functional] New tool “probe_url_from_india”
- [functional] New tool “whois_lookup”

### 2026-10-16 (score 66, −1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “get_company_logo” rewrote its description, which is the text the model reads
- [security] Tool “search_companies” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 5097 → 7113
- [functional] Destructive annotations: pass → 0
- [functional] Server version: 1.1.22 → 1.1.28
- [functional] New tool “chunk_text”
- [functional] New tool “compare_images”
- [functional] New tool “compress_pdf”
- [functional] New tool “convert_image”
- [functional] New tool “convert_tamil_legacy_text”
- [functional] New tool “embed_texts”
- [functional] New tool “get_image_info”
- [functional] New tool “get_indian_states”
- [functional] New tool “get_pdf_info”
- [functional] New tool “hash_image”
- [functional] New tool “make_barcode”
- [functional] New tool “make_code_image”
- [functional] New tool “make_qr_code”
- [functional] New tool “make_social_preview_image”
- [functional] New tool “merge_pdfs”
- [functional] New tool “read_pdf_text”
- [functional] New tool “remove_audio_noise”
- [functional] New tool “remove_image_background”
- [functional] New tool “render_pdf_page”
- [functional] New tool “rotate_pdf_pages”
- [functional] New tool “select_pdf_pages”
- [cosmetic] “get_company_logo” reworded the description of “symbol”

### 2026-10-15 (score 67, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional regression] Schema quality: 4409 → 5097
- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.1.20 → 1.1.22
- [functional] New tool “moderate_text”
- [functional] New tool “rerank_documents”
- [functional] New tool “transcribe_audio”
- [functional] New tool “translate_text”
- [functional] New tool “transliterate_roman_typing”

### 2026-10-14 (score 66)

First indexed and scored.

## MCP tools (80)

### `get_company_logo` (~114 tokens)

Get company logo

Get the logo URLs (SVG and PNG) and details of a company listed on India's NSE or BSE. Accepts a ticker (TCS), exchange-qualified ticker (NSE:TCS), Yahoo symbol (TCS.NS), ISIN or the old ticker of a renamed company. listed is false for a delisted company.

Input parameters:

- `exchange` (string): Force an exchange. A bare ticker prefers NSE.
- `symbol` (string, required): Ticker, exchange-qualified ticker, Yahoo symbol, ISIN or earlier ticker.

### `search_companies` (~77 tokens)

Search companies

Search Indian listed companies by ticker, earlier ticker, name, sector, industry, ISIN or index name (for example 'Nifty 50'). Returns details with logo URLs. Only companies listed today.

Input parameters:

- `exchange` (string): Limit to one exchange.
- `limit` (integer)
- `query` (string, required): Search text.

### `lookup_pincode` (~40 tokens)

Lookup pincode

Look up an Indian pincode: its district, state and every post office that uses it.

Input parameters:

- `pincode` (string, required): Six-digit pincode.

### `search_post_offices` (~81 tokens)

Search post offices

Find Indian post offices and their pincodes by the start of the office name, optionally within a state or district.

Input parameters:

- `district` (string): Exact district name.
- `query` (string, required): Start of a post office name, or start of a pincode.
- `state` (string): State code or name, for example TN or Tamil Nadu.

### `lookup_ifsc` (~54 tokens)

Lookup ifsc

Look up an Indian bank branch by its IFSC: bank, branch, address, MICR and supported payment systems.

Input parameters:

- `ifsc` (string, required): 11-character IFSC, for example SBIN0000001.

### `search_bank_branches` (~109 tokens)

Search bank branches

Find branches of one Indian bank by state, city or text in the branch name or address. Needs the four-letter bank code; use search_banks to find it.

Input parameters:

- `bank` (string, required): Four-letter bank code, for example SBIN or HDFC.
- `city` (string): Exact city name.
- `query` (string): Text to find in the branch name, address or city.
- `state` (string): State code or name, for example TN or Tamil Nadu.

### `search_banks` (~32 tokens)

Search banks

Find Indian banks and their four-letter codes by name.

Input parameters:

- `query` (string, required): Part of the bank name.

### `lookup_rto` (~55 tokens)

Lookup rto

Find which Regional Transport Office an Indian vehicle registration belongs to. Accepts a code (TN-28) or a full number plate (TN28AB1234).

Input parameters:

- `code` (string, required): RTO code or registration number.

### `list_holidays` (~84 tokens)

List holidays

List Indian holidays for a year: bank holidays, central government holidays, and stock market trading and clearing holidays. Filter by type, state or month.

Input parameters:

- `month` (integer)
- `state` (string): State code or name, for example TN or Tamil Nadu.
- `type` (string): Kind of holiday.
- `year` (integer, required): Four-digit year.

### `number_to_words` (~87 tokens)

Number to words

Spell a number or rupee amount in words using the Indian system (lakh, crore), in English, Hindi or Tamil.

Input parameters:

- `lang` (string): Language. Default en.
- `number` (string, required): The number, for example 125000 or 1,25,000.50.
- `style` (string): currency gives rupees and paise. Default number.

### `validate_identifier` (~54 tokens)

Validate identifier

Check the format of an Indian GSTIN, PAN or IFSC. Format only: it does not confirm the identifier was issued.

Input parameters:

- `kind` (string, required): Which identifier.
- `value` (string, required): The identifier to check.

### `lookup_airport` (~59 tokens)

Lookup airport

Look up an airport by IATA code (MAA) or ICAO code (VOMM): name, city, state, country, coordinates and whether it has scheduled flights.

Input parameters:

- `code` (string, required): IATA or ICAO code.

### `search_airports` (~90 tokens)

Search airports

Search airports by name or city, worldwide (those with IATA codes) and every Indian airfield and heliport. Filter by country (ISO code) or Indian state.

Input parameters:

- `country` (string): Two-letter ISO country code, such as IN.
- `query` (string): Name, city or code.
- `state` (string): State code or name, for example TN or Tamil Nadu.

### `make_upi_payment_link` (~118 tokens)

Make upi payment link

Build a UPI payment link (upi://pay) for an Indian UPI ID, with optional payee name, amount and note, plus the URL of a QR code image for it. Generate only; nothing is checked with a bank.

Input parameters:

- `amount` (string): Amount in rupees, such as 499.50.
- `name` (string): Payee name.
- `note` (string): Transaction note.
- `upi_id` (string, required): Payee UPI ID, such as shop@okaxis.

### `find_constituency` (~66 tokens)

Find constituency

Find the assembly (MLA) and parliamentary (MP, Lok Sabha) constituency of a place in India, by pincode or by latitude and longitude.

Input parameters:

- `lat` (number)
- `lng` (number)
- `pincode` (string): Indian pincode.

### `check_dns` (~93 tokens)

Check dns

Look up a domain's DNS records (A, AAAA, MX, TXT, NS, CNAME, CAA, SOA, SRV, or PTR for an IP) at Cloudflare, Google, Quad9 and OpenDNS at once, and say whether they agree.

Input parameters:

- `name` (string, required): Domain name, or an IP address for PTR.
- `type` (string): Record type. Default A.

### `check_email_address` (~53 tokens)

Check email address

Check an email address without contacting its mail server: valid form, disposable (throwaway) domain, free provider, role account, and whether the domain has mail servers.

Input parameters:

- `email` (string, required): The email address.

### `make_fake_indian_data` (~118 tokens)

Make fake indian data

Generate made-up Indian test data for building apps: people (name, gender, birth date, email, phone, PAN, address) or companies (name, PAN, GSTIN with a valid check character, address) or addresses, at real pincodes. Never real people.

Input parameters:

- `count` (integer)
- `kind` (string, required): What to generate.
- `seed` (integer): Give the same seed to get the same records.
- `state` (string): State code or name, for example TN or Tamil Nadu.

### `lookup_hsn_code` (~70 tokens)

Lookup hsn code

Look up an Indian HSN code (goods) or SAC code (services) used in GST invoices: its description, the chapter and heading above it, and the codes below it. No GST rates.

Input parameters:

- `code` (string, required): HSN or SAC code, 2 to 8 digits.

### `search_hsn_codes` (~67 tokens)

Search hsn codes

Find Indian HSN (goods) or SAC (services) codes by words of their description, such as 'green tea' or 'construction'.

Input parameters:

- `kind` (string): Goods or services.
- `query` (string, required): Words of the description, or the start of a code.

### `domain_icon` (~84 tokens)

Domain icon

Get the icon of any website as a square PNG, from its favicon, Apple touch icon or web app manifest, redrawn at the size asked. A site without a usable icon gets an initials tile.

Input parameters:

- `domain` (string, required): Domain name, such as github.com.
- `size` (integer): Edge length in pixels, 16 to 256. Default 64.

### `lookup_ip_address` (~45 tokens)

Lookup ip address

Find the country, region (Indian state), city and network operator of a public IPv4 or IPv6 address.

Input parameters:

- `ip` (string, required): IPv4 or IPv6 address.

### `check_ipv6` (~75 tokens)

Check ipv6

Check whether a domain is ready for IPv6, from DNS: IPv6 (AAAA) addresses for the site and www, for each nameserver and each mail server, with a plain list of what is missing. No connection is made over IPv6.

Input parameters:

- `domain` (string, required): Domain name, such as example.co.in.

### `translate_text` (~162 tokens)

Translate text

Translate text between English and 22 Indian languages (Hindi, Tamil, Telugu, Kannada, Malayalam, Bengali, Marathi, Gujarati, Punjabi, Odia, Assamese, Urdu and more) with AI4Bharat's IndicTrans2. Between two Indian languages it goes through English. Up to 2,000 characters.

Input parameters:

- `from` (string, required): Language of the text: en, hi, ta, te, kn, ml, bn, mr, gu, pa, or, as, ur, sa, ne, ks, sd, mai, gom, brx, doi, mni, sat.
- `text` (string, required): The text, Indian languages in their own script.
- `to` (string, required): Language to translate into, same codes.

### `transliterate_roman_typing` (~145 tokens)

Transliterate roman typing

Turn Indian-language words typed in Roman letters (vanakkam, namaste, kaise ho) into their own script, as phone keyboards do, with several guesses per word. Uses AI4Bharat's IndicXlit. Up to 60 words.

Input parameters:

- `count` (integer): Guesses per word. Default 4.
- `lang` (string, required): Target language: ta, hi, te, kn, ml, bn, mr, gu, pa, or, as, ur, sa, ne, si, ks, sd, mai, gom, brx, mni.
- `text` (string, required): The words in Roman letters.

### `moderate_text` (~110 tokens)

Moderate text

Score a comment or message for abuse with three classifiers: general multilingual, Hinglish (Hindi in Roman letters, by kind: profanity, harassment, hate speech, caste, communal, regional, misogyny) and Tanglish (Tamil in Roman letters). Scores 0 to 1; a model's guess, not a decision.

Input parameters:

- `text` (string, required): The text, up to 4,000 characters.
- `threshold` (number): Score at which flagged becomes true. Default 0.5.

### `transcribe_audio` (~147 tokens)

Transcribe audio

Speech to text with Whisper: the text of a recording (MP3, WAV, Ogg, M4A, WebM or video), with timed segments; about a hundred languages, Indian ones included. task=translate writes it in English. The first five minutes are heard.

Input parameters:

- `file` (string, required): The recording, base64-encoded (a data: URL also works). Up to 5 MB.
- `language` (string): auto (default) or the language spoken: en, hi, ta, te, kn, ml, mr, bn, gu, pa, ur...
- `task` (string): transcribe (default) or translate (into English).

### `rerank_documents` (~86 tokens)

Rerank documents

Order documents by how well each answers a query, with the multilingual bge-reranker-v2-m3 cross-encoder (Indian languages and English). Returns scores from 0 to 1, best first.

Input parameters:

- `documents` (array, required): Up to 100 candidate passages.
- `query` (string, required): The question.
- `top` (integer): Return only the best few.

### `make_gst_invoice` (~173 tokens)

Make gst invoice

Make an Indian GST tax invoice as a PDF from seller, buyer and items. Works out each line's taxable value, CGST and SGST (or UTGST) within a state or IGST across states, the HSN-wise summary, rounding and the amount in words. format=json returns the worked-out amounts only.

Input parameters:

- `format` (string): pdf (default), png or json.
- `invoice` (object, required): number, date (YYYY-MM-DD), seller {name, address, gstin, state}, buyer {name, address, gstin or state}, items [{description, hsn, quantity, unit, rate (before tax), discount, gst_rate (percent)}], op…

### `compile_typst` (~80 tokens)

Compile typst

Compile a Typst document to PDF (or one page as PNG). Noto fonts for Latin and nine Indian scripts are available; packages and files are not.

Input parameters:

- `format` (string): pdf (default) or png.
- `page` (integer): png: which page. Default 1.
- `source` (string, required): The Typst document.

### `text_to_speech` (~123 tokens)

Text to speech

Speak text aloud in Hindi, Telugu, Malayalam or English with Piper voices; returns MP3 audio. Write the text in its own script. Some Hindi voices are for non-commercial use only.

Input parameters:

- `speed` (number)
- `text` (string, required): What to say, up to 3,000 characters.
- `voice` (string): A voice ID (hi_IN-rohan-medium, te_IN-padmavathi-medium, ml_IN-meera-medium, en_GB-cori-medium...) or a language code: hi, te, ml, en.

### `read_text_in_image` (~123 tokens)

Read text in image

OCR: read the text in a photo, scan or scanned PDF, in English and Indian languages (Hindi, Tamil, Telugu, Kannada, Malayalam, Bengali, Gujarati, Punjabi, Odia, Marathi).

Input parameters:

- `file` (string, required): The file, base64-encoded (a data: URL also works). Up to 5 MB.
- `lang` (string): Languages the text uses, joined by +: eng, hin, tam, tel, kan, mal, ben, guj, pan, ori, mar. Up to three. Default eng.

### `read_barcodes` (~75 tokens)

Read barcodes

Find and read every QR code and barcode (Data Matrix, Aztec, EAN, UPC, Code 128, Code 39, ITF, Codabar) in a picture.

Input parameters:

- `file` (string, required): The file, base64-encoded (a data: URL also works). Up to 5 MB.

### `make_qr_code` (~106 tokens)

Make qr code

Make a QR code image (PNG) for any text or link.

Input parameters:

- `bg` (string): Light colour, hex, or transparent.
- `ecc` (string): Error correction. Default M.
- `fg` (string): Dark colour, hex such as 000000.
- `size` (integer): Width in pixels, 32 to 2048. Default 256.
- `text` (string, required): What to encode, up to about 2,900 bytes.

### `make_barcode` (~146 tokens)

Make barcode

Make a barcode image (PNG): Code 128, Code 39, Code 93, EAN-13, EAN-8, ITF, Codabar, Data Matrix, PDF417 or Aztec.

Input parameters:

- `height` (integer): Linear codes: bar height in pixels, 10 to 600. Default 80.
- `scale` (integer): Linear codes: pixels per bar, 1 to 10. Default 2.
- `size` (integer): 2D codes: width in pixels, 32 to 2048. Default 256.
- `text` (string, required): What to encode.
- `type` (string, required): Kind of barcode.

### `make_code_image` (~104 tokens)

Make code image

Draw a code snippet as a PNG picture of an editor window with syntax colouring, for slides, posts and READMEs. Up to 150 lines of 140 characters.

Input parameters:

- `code` (string, required): The code.
- `language` (string): Language name or file extension, such as go, python, js, sql. Guessed when left out.
- `theme` (string): Default dark.
- `title` (string): File name shown in the title bar.

### `make_social_preview_image` (~128 tokens)

Make social preview image

Make a 1200 by 630 link preview (Open Graph) image as PNG from a title, with an optional subtitle, site name and tag. Latin and nine Indian scripts are set correctly. The same arguments always give the same picture.

Input parameters:

- `site` (string): Site name, bottom left.
- `subtitle` (string): Up to 300 characters; two lines are shown.
- `tag` (string): Short label, bottom right.
- `theme` (string): Default dark.
- `title` (string, required): Up to 200 characters, in any of the supported scripts.

### `chunk_text` (~114 tokens)

Chunk text

Split a long document (plain text or Markdown) into readable chunks for retrieval (RAG): at headings, paragraphs, sentences and words in that order; Markdown chunks keep their heading path. Each chunk carries its character offsets.

Input parameters:

- `format` (string): Default auto.
- `overlap` (integer): Characters repeated from the previous chunk. Default a tenth of the size.
- `size` (integer): Largest chunk in characters, 100 to 20000. Default 1000.
- `text` (string, required): The document.

### `embed_texts` (~96 tokens)

Embed texts

Turn texts into 384-number vectors with multilingual-e5-small (Indian languages and English), scaled to length 1 so a dot product is the cosine similarity. For storing in a vector database or comparing meaning; use rerank_documents to order a few passages for a question instead.

Input parameters:

- `texts` (array, required): Up to 64 texts.
- `type` (string): query (default) for questions, passage for the documents searched.

### `convert_tamil_legacy_text` (~99 tokens)

Convert tamil legacy text

Convert Tamil text in an old 8-bit encoding (TSCII), which shows as accented Latin letters such as ¾Á¢ú without its font, to Unicode Tamil, or Unicode back to it.

Input parameters:

- `from` (string): What the text is in.
- `text` (string, required): The text as it looks without its font, or Unicode Tamil.
- `to` (string): What to convert to. Default unicode.

### `get_indian_states` (~58 tokens)

Get indian states

List India's 28 states and 8 union territories, or get one, with its two-letter code, GST state code and vehicle registration prefixes.

Input parameters:

- `state` (string): State code, vehicle prefix or name. Leave out for all.

### `convert_image` (~167 tokens)

Convert image

Resize a picture or convert it (JPEG, PNG, WebP, AVIF, GIF, TIFF out; HEIC and AVIF read too). Turned upright, all metadata such as the GPS position removed.

Input parameters:

- `file` (string, required): The file, base64-encoded (a data: URL also works). Up to 5 MB.
- `fit` (string): Default inside: within width and height, never enlarged.
- `format` (string): Output format. Default webp.
- `height` (integer): Height in pixels, 1 to 8000.
- `quality` (integer): JPEG, WebP and AVIF quality, 1 to 100. Default 80.
- `width` (integer): Width in pixels, 1 to 8000.

### `get_image_info` (~62 tokens)

Get image info

Format, size, colour space, orientation and camera of a picture, and whether it carries EXIF data or a GPS position.

Input parameters:

- `file` (string, required): The file, base64-encoded (a data: URL also works). Up to 5 MB.

### `remove_image_background` (~92 tokens)

Remove image background

Cut the subject out of a picture (a product, a person, an animal) and return it as a PNG with a transparent background, with the IS-Net model.

Input parameters:

- `file` (string, required): The file, base64-encoded (a data: URL also works). Up to 5 MB.
- `format` (string): png (default), webp, or mask: the cut-out mask alone.

### `hash_image` (~66 tokens)

Hash image

Perceptual fingerprints of a picture (average, difference and DCT hashes) that stay nearly the same after resizing or recompression, for finding duplicates.

Input parameters:

- `file` (string, required): The file, base64-encoded (a data: URL also works). Up to 5 MB.

### `compare_images` (~66 tokens)

Compare images

Compare two pictures by how they look: the bits by which their perceptual hashes differ, a score from 0 to 1, and whether they look like the same picture.

Input parameters:

- `files` (array, required): The two pictures, base64-encoded, up to 5 MB together.

### `read_pdf_text` (~106 tokens)

Read pdf text

Read the text of a PDF, page by page. needs_ocr is true when the pages are scanned pictures; send those to read_text_in_image.

Input parameters:

- `file` (string, required): The file, base64-encoded (a data: URL also works). Up to 5 MB.
- `first` (integer): First page. Default 1.
- `last` (integer): Last page.
- `layout` (string): true keeps the page layout with spaces, for tables.

### `get_pdf_info` (~64 tokens)

Get pdf info

Page count, PDF version, title, author, dates and page sizes of a PDF, and whether it has forms, signatures or attachments.

Input parameters:

- `file` (string, required): The file, base64-encoded (a data: URL also works). Up to 5 MB.

### `render_pdf_page` (~94 tokens)

Render pdf page

Draw one page of a PDF as a picture, for a preview.

Input parameters:

- `file` (string, required): The file, base64-encoded (a data: URL also works). Up to 5 MB.
- `format` (string): Default png.
- `page` (integer): Page number. Default 1.
- `width` (integer): Width in pixels, 50 to 3000. Default 1000.

### `select_pdf_pages` (~79 tokens)

Select pdf pages

Make a new PDF from some pages of one, in the order named: to pick, reorder or split pages.

Input parameters:

- `file` (string, required): The PDF, base64-encoded. Up to 5 MB.
- `pages` (string, required): Pages, such as 1-3,5 or 2,1 (a page may repeat).

### `rotate_pdf_pages` (~87 tokens)

Rotate pdf pages

Turn the pages of a PDF clockwise by a multiple of 90 degrees.

Input parameters:

- `angle` (string): Degrees, clockwise. Default 90.
- `file` (string, required): The file, base64-encoded (a data: URL also works). Up to 5 MB.
- `pages` (string): Pages to turn, such as 1-3,5. Default all.

### `compress_pdf` (~56 tokens)

Compress pdf

Make a PDF smaller by removing duplicate fonts and images and packing its structure. Scanned PDFs shrink little.

Input parameters:

- `file` (string, required): The file, base64-encoded (a data: URL also works). Up to 5 MB.

### `merge_pdfs` (~42 tokens)

Merge pdfs

Join PDFs into one, in the order given.

Input parameters:

- `files` (array, required): Two to twenty PDFs, base64-encoded, up to 5 MB together.

### `remove_audio_noise` (~98 tokens)

Remove audio noise

Lower background noise (fans, traffic, hum) in a recording with DeepFilterNet; returns MP3. The first five minutes are cleaned.

Input parameters:

- `file` (string, required): The file, base64-encoded (a data: URL also works). Up to 5 MB.
- `limit` (integer): The most noise is lowered by, in decibels, 6 to 100. Lower sounds more natural. Default 100.

### `traceroute_from_india` (~105 tokens)

Traceroute from india

Trace the network path from a server in India to a host, MTR style: every hop with its address, name, network (AS) and country, packet loss and round-trip times. Shows how Indian networks reach a site.

Input parameters:

- `host` (string, required): Domain name or public IP address.
- `rounds` (integer): Probes per hop, 1 to 10. Default 5.
- `v` (string): IP version. Default 4.

### `get_mutual_fund_nav` (~56 tokens)

Get mutual fund nav

Get the latest NAV of an Indian mutual fund scheme by AMFI scheme code or ISIN, with its fund house, category, plan and option.

Input parameters:

- `code` (string, required): AMFI scheme code or ISIN.

### `search_mutual_funds` (~83 tokens)

Search mutual funds

Search Indian mutual fund schemes by name words, fund house or category, filtered by direct/regular plan and growth/IDCW option, with their latest NAVs.

Input parameters:

- `fund_house` (string): Fund house name.
- `option` (string): Option.
- `plan` (string): Plan.
- `query` (string): Words of the scheme name.

### `get_panchang` (~146 tokens)

Get panchang

Hindu almanac (panchang) for a date and place: tithi, nakshatra, yoga, karana with their end times, sunrise, sunset, moonrise, moonset, Rahu kalam, Yamagandam, Gulika kalam, Abhijit muhurta, Tamil month and day, lunar month, Shaka and Vikram years.

Input parameters:

- `date` (string, required): YYYY-MM-DD or today.
- `lat` (number)
- `lng` (number)
- `pincode` (string): Indian pincode of the place.
- `tz` (string): IANA time zone. Default Asia/Kolkata.

### `check_indian_phone_number` (~62 tokens)

Check indian phone number

Check an Indian phone number's form and type (mobile, toll-free, fixed line), format it, and name the operator and telecom circle its series was originally given to.

Input parameters:

- `number` (string, required): The phone number, with or without +91.

### `probe_url_from_india` (~126 tokens)

Probe url from india

Fetch a URL from a server in India and time it: DNS, connect, TLS, time to first byte and download, the HTTP status and version, every redirect, the response headers (cookie values hidden), the body's size and hash (never the body), and which CDN and edge city answered. Shows how fast a site is for visitors in India.

Input parameters:

- `rounds` (integer): Times to fetch it, 1 to 5, for a median. Default 1.
- `url` (string, required): http or https address. A bare host is taken as https.

### `get_hf_propagation` (~61 tokens)

Get hf propagation

Current space weather from NOAA (solar flux, sunspot number, K and A indices, X-ray class, NOAA R/S/G scales) and a rule of thumb good/fair/poor rating of HF amateur radio bands by day and night.

### `test_regex` (~131 tokens)

Test regex

Run a regular expression (JavaScript or RE2/Go syntax) against a text: every match with its groups and character offsets, an optional replacement, and a token by token explanation of the pattern.

Input parameters:

- `flags` (string): Any of i, m, s.
- `flavor` (string): Default js.
- `pattern` (string, required): The regular expression, without slashes.
- `replace` (string): Replacement for each match: $1 and $<name> in js, ${1} and ${name} in re2.
- `text` (string, required): The text to test it on.

### `get_satellite_passes` (~178 tokens)

Get satellite passes

When the ISS, the Chinese space station or an amateur radio satellite passes over a place in the next days: rise, highest point and set times with compass directions and elevations, and when the pass can be seen with the eye.

Input parameters:

- `days` (integer): 1 to 10. Default 3.
- `lat` (number)
- `lng` (number)
- `min_elevation` (number): Lowest peak elevation listed, degrees. Default 10.
- `pincode` (string): Indian pincode of the observer.
- `satellite` (string): Catalogue number or name, such as ISS, CSS, SO-50, AO-7 or QO-100. Default ISS.
- `tz` (string): IANA time zone. Default Asia/Kolkata.
- `visible_only` (boolean)

### `find_satellites` (~54 tokens)

Find satellites

List or search the tracked space stations and amateur radio satellites, with catalogue numbers, orbital periods and inclinations.

Input parameters:

- `group` (string)
- `query` (string): Part of a name or a catalogue number.

### `where_is_satellite` (~56 tokens)

Where is satellite

Where a tracked satellite such as the ISS is right now: the point on Earth below it, its altitude and speed, and whether it is in sunlight.

Input parameters:

- `satellite` (string, required): Catalogue number or name, such as ISS.

### `lookup_railway_station` (~45 tokens)

Lookup railway station

Look up an Indian Railways station by its code (MAS, NDLS): name, state, railway zone and elevation.

Input parameters:

- `code` (string, required): Station code.

### `search_railway_stations` (~67 tokens)

Search railway stations

Find Indian railway stations and their codes by name, state or railway zone.

Input parameters:

- `query` (string): Station name.
- `state` (string): State code or name, for example TN or Tamil Nadu.
- `zone` (string): Zone code, such as SR.

### `get_sun_and_moon` (~126 tokens)

Get sun and moon

Sunrise, sunset, solar noon, day length, civil, nautical and astronomical twilight, moonrise, moonset, moon phase, illumination, age and the next new, first quarter, full and last quarter moons, for a date at an Indian pincode or any latitude and longitude.

Input parameters:

- `date` (string, required): YYYY-MM-DD or today.
- `lat` (number)
- `lng` (number)
- `pincode` (string): Indian pincode of the place.
- `tz` (string): IANA time zone. Default Asia/Kolkata.

### `count_tokens` (~69 tokens)

Count tokens

Count the tokens a text uses for an OpenAI model or encoding (o200k_base for GPT-4o and later, cl100k_base for GPT-4).

Input parameters:

- `model` (string): Model or encoding name. Default o200k_base.
- `text` (string, required): The text.

### `redact_indian_identifiers` (~77 tokens)

Redact indian identifiers

Mask Aadhaar, PAN, GSTIN, card, phone, email, UPI ID, vehicle, voter ID, passport and IP numbers in a text, checking check digits where they exist.

Input parameters:

- `style` (string): label replaces with [PAN]; partial keeps the last digits.
- `text` (string, required): The text.

### `detect_language` (~30 tokens)

Detect language

Detect the language and script of a text, including Indian languages.

Input parameters:

- `text` (string, required): The text.

### `get_thirukkural` (~59 tokens)

Get thirukkural

Get a Thirukkural couplet by number (1-1330) in Tamil, with transliteration, English translations by G.U. Pope and by Drew and Lazarus, and its chapter.

Input parameters:

- `number` (integer, required)

### `search_thirukkural` (~77 tokens)

Search thirukkural

Search the Thirukkural in Tamil or English, or list a chapter (1-133) or a paal (1 virtue, 2 wealth, 3 love).

Input parameters:

- `chapter` (integer)
- `paal` (integer)
- `query` (string): Words to find, in Tamil or English.

### `check_tls` (~98 tokens)

Check tls

Check a website's TLS certificate and setup on port 443, from India: whether the certificate is valid for the name and trusted, days until it expires, the chain as sent, issuer and key, which TLS versions (1.0 to 1.3) are accepted, the cipher and HTTP/2 offered, weak ciphers, and a plain list of problems.

Input parameters:

- `host` (string, required): Domain name or public IPv4 address.

### `transliterate_indian_text` (~148 tokens)

Transliterate indian text

Rewrite text from one Indian script in another (Devanagari, Bengali, Gurmukhi, Gujarati, Odia, Tamil, Telugu, Kannada, Malayalam), or in Roman letters (ISO 15919, IAST, plain ASCII), or from ISO 15919 / IAST into a script. Spelling only, not translation.

Input parameters:

- `from` (string): Source: auto (default), a script, or iso15919 / iast for romanised input.
- `text` (string, required): The text.
- `to` (string, required): Target: a script name, a language code such as ta or hi, or iso15919, iast, ascii.

### `whois_lookup` (~113 tokens)

Whois lookup

Who registered a domain, IP network or AS number, through RDAP (the registries' replacement for whois): for a domain the registrar, registration and expiry dates, status, nameservers and DNSSEC; for an IP address or AS number the network, its holding organisation, country and abuse contact. Works for .in and .co.in. Personal contacts are never returned.

Input parameters:

- `query` (string, required): A domain name (example.co.in), an IP address, or an AS number (AS55836).

### `check_working_day` (~177 tokens)

Check working day

Check whether a date is a working day in India for banks in a state, NSE trading, NSE settlement or central government offices; get the previous and next working days, or the date N working days away (T+1 settlement: calendar settlement, add 1).

Input parameters:

- `add` (integer): Working days to add.
- `calendar` (string): bank (needs state), market (NSE trading), settlement (NSE clearing) or central (central government offices).
- `date` (string, required): Date, YYYY-MM-DD.
- `office` (string): Bank calendar only: one Reserve Bank office's list, such as Srinagar, for a state with several offices (Maharashtra, Uttar Pradesh, Jammu and Kashmir, Kerala).
- `state` (string): State code or name, for example TN or Tamil Nadu.

### `count_working_days` (~150 tokens)

Count working days

Count Indian working days between two dates (both included) for a calendar, and list each day off with its reason.

Input parameters:

- `calendar` (string): bank (needs state), market (NSE trading), settlement (NSE clearing) or central (central government offices).
- `from` (string, required): First date, YYYY-MM-DD.
- `office` (string): Bank calendar only: one Reserve Bank office's list, such as Srinagar, for a state with several offices (Maharashtra, Uttar Pradesh, Jammu and Kashmir, Kerala).
- `state` (string): State code or name, for example TN or Tamil Nadu.
- `to` (string, required): Last date, YYYY-MM-DD.

### `indian_market_status` (~77 tokens)

Indian market status

Is the Indian stock market (NSE equities) open now or at a given moment: session, reason if closed, and when it next opens.

Input parameters:

- `at` (string): Moment with offset, RFC 3339, for example 2026-10-13T10:30:00+05:30. Default now.

### `find_post_offices_near` (~57 tokens)

Find post offices near

Find Indian post offices and their pincodes near a latitude and longitude, nearest first.

Input parameters:

- `lat` (number, required)
- `lng` (number, required)
- `radius` (integer): Kilometres. Default 5.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/dharunashokkumar-india-api/api#diagnostics

## Score history

- 2026-10-18: 67
- 2026-10-17: 66
- 2026-10-16: 66
- 2026-10-15: 67
- 2026-10-14: 66

## Common questions

### What is the India API MCP server?

India API is an MCP server listed in the public MCP registry as io.github.dharunashokkumar/india-api. Free Indian data and AI: pincode, IFSC, GSTIN, holidays, GST invoice, OCR, translation. No key. This page covers its hosted endpoint (https://api.dharun.dev/mcp).

### Is the India API MCP server safe to use?

India API scores 67 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the India API MCP server expose?

India API exposes 80 tools: get_company_logo, search_companies, lookup_pincode, search_post_offices, lookup_ifsc, and 75 more. Their descriptions and schemas cost roughly 7,307 tokens of context every time the server is loaded.

### Does the India API MCP server require authentication?

No. We connected to India API without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the India API MCP server still maintained?

India API is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://api.dharun.dev/mcp
- Repository: https://github.com/dharunashokkumar/api.dharun.dev
- Website: https://api.dharun.dev/ai
- Changelog RSS feed: https://verifymcp.io/servers/dharunashokkumar-india-api/api.xml
- Changelog JSON feed: https://verifymcp.io/servers/dharunashokkumar-india-api/api.json
- HTML version of this page: https://verifymcp.io/servers/dharunashokkumar-india-api/api
