Skip to content

India API

by dharunashokkumar · remote · no sign-in to list tools · v1.1.22 · published by GitHub user dharunashokkumar

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

Deletes · 2Final · 4Changes · 37

80 tools: 2 can delete or cancel things, 4 do something that can't be undone, 37 change things and 37 only read.

Scanned Oct 21, 2026

19 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http india-api https://api.dharun.dev/mcp

Findings

Matches of fixed checks, with the text they matched.

19 warn
  • The server marks "lookup_rto" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "lookup_rto" says "lookup": a word for reading.

    What this check looks for
  • The server marks "lookup_airport" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "lookup_airport" says "lookup": a word for reading.

    What this check looks for
  • The server marks "make_upi_payment_link" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "make_upi_payment_link" says "link": a word for a change.

    What this check looks for
  • The server marks "make_fake_indian_data" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "lookup_hsn_code" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "lookup_hsn_code" says "lookup": a word for reading.

    What this check looks for
  • The server marks "translate_text" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

    What this check looks for
Show 13 more findings
  • The server marks "make_code_image" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input takes a statement or command to run (input.code), which can change anything it can reach.

    What this check looks for
  • The server marks "convert_tamil_legacy_text" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert_tamil_legacy_text" says "convert": a word for a change.

    What this check looks for
  • The server marks "convert_image" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert_image" says "convert": a word for a change.

    What this check looks for
  • The server marks "remove_image_background" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "remove_image_background" says "remove": a word for removing or ending something.

    What this check looks for
  • The server marks "remove_image_background" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "remove_image_background" says "remove": a word for removing or ending something.

    What this check looks for
  • The server marks "select_pdf_pages" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "select_pdf_pages" says "select": a word for a change.

    What this check looks for
  • The server marks "merge_pdfs" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "merge_pdfs" says "merge": a word for a change that another call does not undo.

    What this check looks for
  • The server marks "remove_audio_noise" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "remove_audio_noise" says "remove": a word for removing or ending something.

    What this check looks for
  • The server marks "remove_audio_noise" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "remove_audio_noise" says "remove": a word for removing or ending something.

    What this check looks for
  • The server marks "get_mutual_fund_nav" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "get_mutual_fund_nav" says "get": a word for reading.

    What this check looks for
  • The server marks "test_regex" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.

    What this check looks for
  • The server marks "lookup_railway_station" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "lookup_railway_station" says "lookup": a word for reading.

    What this check looks for
  • The server marks "transliterate_indian_text" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

80 tools

Deletes or cancels 2Claude Code: deny
  • remove_audio_noiseLower background noise (fans, traffic, hum) in a recording with DeepFilterNet; returns MP3.2 findings

    Why it is in this group

    • The name "remove_audio_noise" says "remove": a word for removing or ending something.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    • The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "remove_audio_noise" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "remove_audio_noise" says "remove": a word for removing or ending something.

      What this check looks for
    • Warn

      The server marks "remove_audio_noise" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "remove_audio_noise" says "remove": a word for removing or ending something.

      What this check looks for
    Description, as the server wrote it
    Lower background noise (fans, traffic, hum) in a recording with DeepFilterNet; returns MP3. The first five minutes are cleaned.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Remove audio noise
  • remove_image_backgroundCut 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.2 findings

    Why it is in this group

    • The name "remove_image_background" says "remove": a word for removing or ending something.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    • The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "remove_image_background" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "remove_image_background" says "remove": a word for removing or ending something.

      What this check looks for
    • Warn

      The server marks "remove_image_background" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "remove_image_background" says "remove": a word for removing or ending something.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Remove image background
Can't be undone 4Claude Code: ask
  • convert_tamil_legacy_textConvert 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.1 finding

    Why it is in this group

    • The name "convert_tamil_legacy_text" says "convert": a word for a change.
    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "convert_tamil_legacy_text" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert_tamil_legacy_text" says "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Convert tamil legacy text
  • merge_pdfsJoin PDFs into one, in the order given.1 finding

    Why it is in this group

    • The name "merge_pdfs" says "merge": a word for a change that another call does not undo.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "merge_pdfs" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "merge_pdfs" says "merge": a word for a change that another call does not undo.

      What this check looks for
    Description, as the server wrote it
    Join PDFs into one, in the order given.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Merge pdfs
  • translate_textTranslate text between English and 22 Indian languages (Hindi, Tamil, Telugu, Kannada, Malayalam, Bengali, Marathi, Gujarati, Punjabi, Odia, Assamese, Urdu and more) with AI4Bharat…1 finding

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "translate_text" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Translate text
  • transliterate_indian_textRewrite 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…1 finding

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "transliterate_indian_text" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Transliterate indian text
Changes things 37Claude Code: ask
  • check_dnsLook 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.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • readOnlyHint: true
    • title: Check dns
  • check_email_addressCheck an email address without contacting its mail server: valid form, disposable (throwaway) domain, free provider, role account, and whether the domain has mail servers.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • readOnlyHint: true
    • title: Check email address
  • check_indian_phone_numberCheck 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.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Check indian phone number
  • check_ipv6Check 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 findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • readOnlyHint: true
    • title: Check ipv6
  • check_tlsCheck 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…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • readOnlyHint: true
    • title: Check tls
  • check_working_dayCheck 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 …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Check working day
  • chunk_textSplit 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 head…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Chunk text
  • compile_typstCompile a Typst document to PDF (or one page as PNG).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Compile typst
  • compress_pdfMake a PDF smaller by removing duplicate fonts and images and packing its structure.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Make a PDF smaller by removing duplicate fonts and images and packing its structure. Scanned PDFs shrink little.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Compress pdf
  • convert_imageResize a picture or convert it (JPEG, PNG, WebP, AVIF, GIF, TIFF out; HEIC and AVIF read too).1 finding

    Why it is in this group

    • The name "convert_image" says "convert": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "convert_image" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert_image" says "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Convert image
  • detect_languageDetect the language and script of a text, including Indian languages.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Detect the language and script of a text, including Indian languages.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Detect language
  • embed_textsTurn 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.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Embed texts
  • get_mutual_fund_navGet the latest NAV of an Indian mutual fund scheme by AMFI scheme code or ISIN, with its fund house, category, plan and option.1 finding

    Why it is in this group

    • The name "get_mutual_fund_nav" says "get": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "get_mutual_fund_nav" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "get_mutual_fund_nav" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Get the latest NAV of an Indian mutual fund scheme by AMFI scheme code or ISIN, with its fund house, category, plan and option.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get mutual fund nav
  • hash_imagePerceptual fingerprints of a picture (average, difference and DCT hashes) that stay nearly the same after resizing or recompression, for finding duplicates.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Perceptual fingerprints of a picture (average, difference and DCT hashes) that stay nearly the same after resizing or recompression, for finding duplicates.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Hash image
  • lookup_airportLook up an airport by IATA code (MAA) or ICAO code (VOMM): name, city, state, country, coordinates and whether it has scheduled flights.1 finding

    Why it is in this group

    • The name "lookup_airport" says "lookup": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "lookup_airport" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "lookup_airport" says "lookup": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Look up an airport by IATA code (MAA) or ICAO code (VOMM): name, city, state, country, coordinates and whether it has scheduled flights.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Lookup airport
  • lookup_hsn_codeLook 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.1 finding

    Why it is in this group

    • The name "lookup_hsn_code" says "lookup": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "lookup_hsn_code" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "lookup_hsn_code" says "lookup": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Lookup hsn code
  • lookup_railway_stationLook up an Indian Railways station by its code (MAS, NDLS): name, state, railway zone and elevation.1 finding

    Why it is in this group

    • The name "lookup_railway_station" says "lookup": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "lookup_railway_station" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "lookup_railway_station" says "lookup": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Look up an Indian Railways station by its code (MAS, NDLS): name, state, railway zone and elevation.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Lookup railway station
  • lookup_rtoFind which Regional Transport Office an Indian vehicle registration belongs to.1 finding

    Why it is in this group

    • The name "lookup_rto" says "lookup": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "lookup_rto" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "lookup_rto" says "lookup": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Find which Regional Transport Office an Indian vehicle registration belongs to. Accepts a code (TN-28) or a full number plate (TN28AB1234).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Lookup rto
  • make_barcodeMake a barcode image (PNG): Code 128, Code 39, Code 93, EAN-13, EAN-8, ITF, Codabar, Data Matrix, PDF417 or Aztec.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Make a barcode image (PNG): Code 128, Code 39, Code 93, EAN-13, EAN-8, ITF, Codabar, Data Matrix, PDF417 or Aztec.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Make barcode
  • make_code_imageDraw a code snippet as a PNG picture of an editor window with syntax colouring, for slides, posts and READMEs.1 finding

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "make_code_image" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input takes a statement or command to run (input.code), which can change anything it can reach.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Make code image
  • make_fake_indian_dataGenerate 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, addr…1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "make_fake_indian_data" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: Make fake indian data
  • make_gst_invoiceMake an Indian GST tax invoice as a PDF from seller, buyer and items.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Make gst invoice
  • make_qr_codeMake a QR code image (PNG) for any text or link.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Make a QR code image (PNG) for any text or link.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Make qr code
  • moderate_textScore a comment or message for abuse with three classifiers: general multilingual, Hinglish (Hindi in Roman letters, by kind: profanity, harassment, hate speech, caste, communal, r…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Moderate text
  • number_to_wordsSpell a number or rupee amount in words using the Indian system (lakh, crore), in English, Hindi or Tamil.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Spell a number or rupee amount in words using the Indian system (lakh, crore), in English, Hindi or Tamil.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Number to words
  • redact_indian_identifiersMask Aadhaar, PAN, GSTIN, card, phone, email, UPI ID, vehicle, voter ID, passport and IP numbers in a text, checking check digits where they exist.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Redact indian identifiers
  • render_pdf_pageDraw one page of a PDF as a picture, for a preview.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Draw one page of a PDF as a picture, for a preview.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Render pdf page
  • rerank_documentsOrder documents by how well each answers a query, with the multilingual bge-reranker-v2-m3 cross-encoder (Indian languages and English).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Rerank documents
  • rotate_pdf_pagesTurn the pages of a PDF clockwise by a multiple of 90 degrees.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Turn the pages of a PDF clockwise by a multiple of 90 degrees.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Rotate pdf pages
  • select_pdf_pagesMake a new PDF from some pages of one, in the order named: to pick, reorder or split pages.1 finding

    Why it is in this group

    • The name "select_pdf_pages" says "select": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "select_pdf_pages" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "select_pdf_pages" says "select": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Make a new PDF from some pages of one, in the order named: to pick, reorder or split pages.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Select pdf pages
  • test_regexRun 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 …1 finding

    Why it is in this group

    • The description's first verb is "run": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "test_regex" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Test regex
  • text_to_speechSpeak text aloud in Hindi, Telugu, Malayalam or English with Piper voices; returns MP3 audio.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Text to speech
  • traceroute_from_indiaTrace 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.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • readOnlyHint: true
    • title: Traceroute from india
  • transcribe_audioSpeech 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.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Transcribe audio
  • transliterate_roman_typingTurn Indian-language words typed in Roman letters (vanakkam, namaste, kaise ho) into their own script, as phone keyboards do, with several guesses per word.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Transliterate roman typing
  • where_is_satelliteWhere 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.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Where is satellite
Only reads 37Claude Code: allow
  • compare_imagesCompare 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.No findings

    Why it is in this group

    • The name "compare_images" says "compare": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Compare images
  • count_tokensCount the tokens a text uses for an OpenAI model or encoding (o200k_base for GPT-4o and later, cl100k_base for GPT-4).No findings

    Why it is in this group

    • The name "count_tokens" says "count": a word for reading.
    Description, as the server wrote it
    Count the tokens a text uses for an OpenAI model or encoding (o200k_base for GPT-4o and later, cl100k_base for GPT-4).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Count tokens
  • count_working_daysCount Indian working days between two dates (both included) for a calendar, and list each day off with its reason.No findings

    Why it is in this group

    • The name "count_working_days" says "count": a word for reading.
    Description, as the server wrote it
    Count Indian working days between two dates (both included) for a calendar, and list each day off with its reason.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Count working days
  • domain_iconGet the icon of any website as a square PNG, from its favicon, Apple touch icon or web app manifest, redrawn at the size asked.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • readOnlyHint: true
    • title: Domain icon
  • find_constituencyFind the assembly (MLA) and parliamentary (MP, Lok Sabha) constituency of a place in India, by pincode or by latitude and longitude.No findings

    Why it is in this group

    • The name "find_constituency" says "find": a word for reading.
    Description, as the server wrote it
    Find the assembly (MLA) and parliamentary (MP, Lok Sabha) constituency of a place in India, by pincode or by latitude and longitude.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Find constituency
  • find_post_offices_nearFind Indian post offices and their pincodes near a latitude and longitude, nearest first.No findings

    Why it is in this group

    • The name "find_post_offices_near" says "find": a word for reading.
    Description, as the server wrote it
    Find Indian post offices and their pincodes near a latitude and longitude, nearest first.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Find post offices near
  • find_satellitesList or search the tracked space stations and amateur radio satellites, with catalogue numbers, orbital periods and inclinations.No findings

    Why it is in this group

    • The name "find_satellites" says "find": a word for reading.
    Description, as the server wrote it
    List or search the tracked space stations and amateur radio satellites, with catalogue numbers, orbital periods and inclinations.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Find satellites
  • get_hf_propagationCurrent 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…No findings

    Why it is in this group

    • The name "get_hf_propagation" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get hf propagation
  • get_image_infoFormat, size, colour space, orientation and camera of a picture, and whether it carries EXIF data or a GPS position.No findings

    Why it is in this group

    • The name "get_image_info" says "get": a word for reading.
    Description, as the server wrote it
    Format, size, colour space, orientation and camera of a picture, and whether it carries EXIF data or a GPS position.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get image info
  • get_indian_statesList India's 28 states and 8 union territories, or get one, with its two-letter code, GST state code and vehicle registration prefixes.No findings

    Why it is in this group

    • The name "get_indian_states" says "get": a word for reading.
    Description, as the server wrote it
    List India's 28 states and 8 union territories, or get one, with its two-letter code, GST state code and vehicle registration prefixes.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get indian states
  • get_panchangHindu almanac (panchang) for a date and place: tithi, nakshatra, yoga, karana with their end times, sunrise, sunset, moonrise, moonset, Rahu kalam, Yamagandam, Gulika kalam, Abhiji…No findings

    Why it is in this group

    • The name "get_panchang" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get panchang
  • get_pdf_infoPage count, PDF version, title, author, dates and page sizes of a PDF, and whether it has forms, signatures or attachments.No findings

    Why it is in this group

    • The name "get_pdf_info" says "get": a word for reading.
    Description, as the server wrote it
    Page count, PDF version, title, author, dates and page sizes of a PDF, and whether it has forms, signatures or attachments.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get pdf info
  • get_satellite_passesWhen 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…No findings

    Why it is in this group

    • The name "get_satellite_passes" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get satellite passes
  • get_sun_and_moonSunrise, 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 …No findings

    Why it is in this group

    • The name "get_sun_and_moon" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get sun and moon
  • get_thirukkuralGet a Thirukkural couplet by number (1-1330) in Tamil, with transliteration, English translations by G.U.No findings

    Why it is in this group

    • The name "get_thirukkural" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get thirukkural
  • indian_market_statusIs the Indian stock market (NSE equities) open now or at a given moment: session, reason if closed, and when it next opens.No findings

    Why it is in this group

    • The name "indian_market_status" says "status": a word for reading.
    Description, as the server wrote it
    Is the Indian stock market (NSE equities) open now or at a given moment: session, reason if closed, and when it next opens.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Indian market status
  • list_holidaysList Indian holidays for a year: bank holidays, central government holidays, and stock market trading and clearing holidays.No findings

    Why it is in this group

    • The name "list_holidays" says "list": a word for reading.
    Description, as the server wrote it
    List Indian holidays for a year: bank holidays, central government holidays, and stock market trading and clearing holidays. Filter by type, state or month.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: List holidays
  • lookup_ifscLook up an Indian bank branch by its IFSC: bank, branch, address, MICR and supported payment systems.No findings

    Why it is in this group

    • The name "lookup_ifsc" says "lookup": a word for reading.
    Description, as the server wrote it
    Look up an Indian bank branch by its IFSC: bank, branch, address, MICR and supported payment systems.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Lookup ifsc
  • lookup_ip_addressFind the country, region (Indian state), city and network operator of a public IPv4 or IPv6 address.No findings

    Why it is in this group

    • The name "lookup_ip_address" says "lookup": a word for reading.
    Description, as the server wrote it
    Find the country, region (Indian state), city and network operator of a public IPv4 or IPv6 address.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Lookup ip address
  • lookup_pincodeLook up an Indian pincode: its district, state and every post office that uses it.No findings

    Why it is in this group

    • The name "lookup_pincode" says "lookup": a word for reading.
    Description, as the server wrote it
    Look up an Indian pincode: its district, state and every post office that uses it.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Lookup pincode
  • make_social_preview_imageMake a 1200 by 630 link preview (Open Graph) image as PNG from a title, with an optional subtitle, site name and tag.No findings

    Why it is in this group

    • The name "make_social_preview_image" says "preview": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Make social preview image
  • probe_url_from_indiaFetch 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…No findings

    Why it is in this group

    • The description's first verb is "fetch": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • readOnlyHint: true
    • title: Probe url from india
  • read_barcodesFind and read every QR code and barcode (Data Matrix, Aztec, EAN, UPC, Code 128, Code 39, ITF, Codabar) in a picture.No findings

    Why it is in this group

    • The name "read_barcodes" says "read": a word for reading.
    Description, as the server wrote it
    Find and read every QR code and barcode (Data Matrix, Aztec, EAN, UPC, Code 128, Code 39, ITF, Codabar) in a picture.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Read barcodes
  • read_pdf_textRead the text of a PDF, page by page.No findings

    Why it is in this group

    • The name "read_pdf_text" says "read": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Read pdf text
  • read_text_in_imageOCR: 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).No findings

    Why it is in this group

    • The name "read_text_in_image" says "read": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Read text in image
  • search_airportsSearch airports by name or city, worldwide (those with IATA codes) and every Indian airfield and heliport.No findings

    Why it is in this group

    • The name "search_airports" says "search": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Search airports
  • search_bank_branchesFind branches of one Indian bank by state, city or text in the branch name or address.No findings

    Why it is in this group

    • The name "search_bank_branches" says "search": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Search bank branches
  • search_banksFind Indian banks and their four-letter codes by name.No findings

    Why it is in this group

    • The name "search_banks" says "search": a word for reading.
    Description, as the server wrote it
    Find Indian banks and their four-letter codes by name.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Search banks
  • search_companiesSearch Indian listed companies by ticker, earlier ticker, name, sector, industry, ISIN or index name (for example 'Nifty 50').No findings

    Why it is in this group

    • The name "search_companies" says "search": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Search companies
  • search_hsn_codesFind Indian HSN (goods) or SAC (services) codes by words of their description, such as 'green tea' or 'construction'.No findings

    Why it is in this group

    • The name "search_hsn_codes" says "search": a word for reading.
    Description, as the server wrote it
    Find Indian HSN (goods) or SAC (services) codes by words of their description, such as 'green tea' or 'construction'.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Search hsn codes
  • search_mutual_fundsSearch Indian mutual fund schemes by name words, fund house or category, filtered by direct/regular plan and growth/IDCW option, with their latest NAVs.No findings

    Why it is in this group

    • The name "search_mutual_funds" says "search": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Search mutual funds
  • search_post_officesFind Indian post offices and their pincodes by the start of the office name, optionally within a state or district.No findings

    Why it is in this group

    • The name "search_post_offices" says "search": a word for reading.
    Description, as the server wrote it
    Find Indian post offices and their pincodes by the start of the office name, optionally within a state or district.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Search post offices
  • search_railway_stationsFind Indian railway stations and their codes by name, state or railway zone.No findings

    Why it is in this group

    • The name "search_railway_stations" says "search": a word for reading.
    Description, as the server wrote it
    Find Indian railway stations and their codes by name, state or railway zone.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Search railway stations
  • search_thirukkuralSearch the Thirukkural in Tamil or English, or list a chapter (1-133) or a paal (1 virtue, 2 wealth, 3 love).No findings

    Why it is in this group

    • The name "search_thirukkural" says "search": a word for reading.
    Description, as the server wrote it
    Search the Thirukkural in Tamil or English, or list a chapter (1-133) or a paal (1 virtue, 2 wealth, 3 love).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Search thirukkural
  • validate_identifierCheck the format of an Indian GSTIN, PAN or IFSC.No findings

    Why it is in this group

    • The name "validate_identifier" says "validate": a word for reading.
    Description, as the server wrote it
    Check the format of an Indian GSTIN, PAN or IFSC. Format only: it does not confirm the identifier was issued.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Validate identifier
  • whois_lookupWho 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, nameserve…No findings

    Why it is in this group

    • The name "whois_lookup" says "lookup": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • readOnlyHint: true
    • title: Whois lookup

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.1.22. Values in angle brackets are yours to fill in.

claude mcp add --transport http india-api https://api.dharun.dev/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__india-api__get_company_logo",
      "mcp__india-api__search_companies",
      "mcp__india-api__lookup_pincode",
      "mcp__india-api__search_post_offices",
      "mcp__india-api__lookup_ifsc",
      "mcp__india-api__search_bank_branches",
      "mcp__india-api__search_banks",
      "mcp__india-api__list_holidays",
      "mcp__india-api__validate_identifier",
      "mcp__india-api__search_airports",
      "mcp__india-api__find_constituency",
      "mcp__india-api__search_hsn_codes",
      "mcp__india-api__domain_icon",
      "mcp__india-api__lookup_ip_address",
      "mcp__india-api__read_text_in_image",
      "mcp__india-api__read_barcodes",
      "mcp__india-api__make_social_preview_image",
      "mcp__india-api__get_indian_states",
      "mcp__india-api__get_image_info",
      "mcp__india-api__compare_images",
      "mcp__india-api__read_pdf_text",
      "mcp__india-api__get_pdf_info",
      "mcp__india-api__search_mutual_funds",
      "mcp__india-api__get_panchang",
      "mcp__india-api__probe_url_from_india",
      "mcp__india-api__get_hf_propagation",
      "mcp__india-api__get_satellite_passes",
      "mcp__india-api__find_satellites",
      "mcp__india-api__search_railway_stations",
      "mcp__india-api__get_sun_and_moon",
      "mcp__india-api__count_tokens",
      "mcp__india-api__get_thirukkural",
      "mcp__india-api__search_thirukkural",
      "mcp__india-api__whois_lookup",
      "mcp__india-api__count_working_days",
      "mcp__india-api__indian_market_status",
      "mcp__india-api__find_post_offices_near"
    ],
    "ask": [
      "mcp__india-api__lookup_rto",
      "mcp__india-api__number_to_words",
      "mcp__india-api__lookup_airport",
      "mcp__india-api__make_upi_payment_link",
      "mcp__india-api__check_dns",
      "mcp__india-api__check_email_address",
      "mcp__india-api__make_fake_indian_data",
      "mcp__india-api__lookup_hsn_code",
      "mcp__india-api__check_ipv6",
      "mcp__india-api__translate_text",
      "mcp__india-api__transliterate_roman_typing",
      "mcp__india-api__moderate_text",
      "mcp__india-api__transcribe_audio",
      "mcp__india-api__rerank_documents",
      "mcp__india-api__make_gst_invoice",
      "mcp__india-api__compile_typst",
      "mcp__india-api__text_to_speech",
      "mcp__india-api__make_qr_code",
      "mcp__india-api__make_barcode",
      "mcp__india-api__make_code_image",
      "mcp__india-api__chunk_text",
      "mcp__india-api__embed_texts",
      "mcp__india-api__convert_tamil_legacy_text",
      "mcp__india-api__convert_image",
      "mcp__india-api__hash_image",
      "mcp__india-api__render_pdf_page",
      "mcp__india-api__select_pdf_pages",
      "mcp__india-api__rotate_pdf_pages",
      "mcp__india-api__compress_pdf",
      "mcp__india-api__merge_pdfs",
      "mcp__india-api__traceroute_from_india",
      "mcp__india-api__get_mutual_fund_nav",
      "mcp__india-api__check_indian_phone_number",
      "mcp__india-api__test_regex",
      "mcp__india-api__where_is_satellite",
      "mcp__india-api__lookup_railway_station",
      "mcp__india-api__redact_indian_identifiers",
      "mcp__india-api__detect_language",
      "mcp__india-api__check_tls",
      "mcp__india-api__transliterate_indian_text",
      "mcp__india-api__check_working_day"
    ],
    "deny": [
      "mcp__india-api__remove_image_background",
      "mcp__india-api__remove_audio_noise"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as india-api. Review it before you use it.