Skip to main content
Glama
mcp-india-stack

mcp-india-stack

🇮🇳 MCP India Stack

A high-performance, offline-first Model Context Protocol (MCP) server equipping AI agents with Indian financial, tax, and government APIs. Zero authentication required.

PyPI version License: MIT MCP Compatible CI

📑 Table of Contents


Related MCP server: taxbrainai-mcp

📌 Problem Statement

  • Fragmented Access: Indian fintech, identity, and tax APIs are heavily siloed, requiring multiple disjointed integrations.

  • High Barriers to Entry: Existing solutions are plagued by paid subscriptions, strict rate limits, and complex API key management.

  • No Native AI Integration: There is no MCP-native standard designed specifically for autonomous AI agents to validate GSTIN, PAN, IFSC, or compute tax data.

  • Latency & Reliability Issues: Depending on remote third-party APIs for static/slow-moving datasets introduces unnecessary network delays and potential points of failure for AI workflows.


🛠️ Tech Stack

Layer

Technology

Protocol

MCP (FastMCP)

Runtime

Python

Distribution

PyPI / Smithery

Hosting

Render

Datasets

Offline-bundled (jsDelivr CDN sync)


🏗️ Architecture Diagram

+-----------------------------------------------------------+
|                        MCP Clients                        |
|       (Claude Desktop, Cursor, Custom Agent Frameworks)   |
+-----------------------------+-----------------------------+
                              |
                     STDIO / SSE Protocol
                              |
+-----------------------------v-----------------------------+
|                      MCP India Stack                      |
|                     (FastMCP Server)                      |
+-----------------------------+-----------------------------+
                              |
      +-----------------------+-----------------------+
      |                       |                       |
+-----v-------------+  +------v------------+  +-------v-----+
| Pure Offline (71) |  |   Offline + CDN   |  |   Market    |
| Format Validators |  |   Refresh (5)     |  |  Data (2)   |
| Tax Calculators   |  | IFSC, HSN, Pin    |  |  yfinance   |
| Legal Reference   |  | Bundled Datasets  |  |  Delayed    |
+-------------------+  +-------------------+  +-------------+

MCP Client ↔ FastMCP Server ↔ 78 modular tool endpoints


✨ Key Features

  • Offline-First Architecture: Bundles compressed datasets for zero-latency lookups (IFSC, Pincodes, HSN/SAC). No API rate limits.

  • Zero Authentication: No API keys, secrets, or subscriptions required. All logic runs locally.

  • Background Auto-Updates: Non-blocking CDN fetching ensures your datasets never go stale without impacting request latency.

  • Comprehensive Coverage: 80 dedicated tools for identity validation (PAN, Aadhaar, GSTIN, TAN, PRAN), tax calculation (Income Tax, TDS, GST), savings calculators (EPF, PPF, SIP), and master data lookups.

  • Enterprise-Ready: Thread-pool accelerated bulk validation tools for processing large batches of vendor or customer data.


🛡️ Authenticity System

Every verifying tool states how strongly an identifier is attested through standard levels (A0 to A4) instead of a simplistic binary flag:

  • A0 (Format & Checksum): Structural syntax and checksum algorithms pass offline (e.g. Luhn mod-36 for GSTIN, Verhoeff for Aadhaar).

  • A1 (Cross-Field Consistency): Cross-field rules pass offline (e.g. embedded PAN in GSTIN, ROC jurisdiction in CIN, RTO code in DL).

  • A2 (Authoritative Dataset Match): Record matched in a bundled authoritative dataset (e.g. RBI IFSC directory, India Post pincode list, NSDL ISIN list).

  • A3 (Cryptographic Artifact Verification): Digital signature on a supplied artifact verified offline (e.g. NIC e-invoice QR code, UIDAI offline XML).

  • A4 (Live Registry Attestation): Confirmed via an opt-in live registry provider.

Every response includes an additive authenticity object with verified checks, authority source, evaluation date, and explicit limitations (e.g. "active registration status not verified"). See docs/authenticity.md and docs/writing_a_provider.md for complete details.


🚀 Quick Start

Installation

pip install mcp-india-stack

Claude Desktop Configuration

Add the following to your claude_desktop_config.json file to enable the India Stack in Claude Desktop:

Windows (%APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "mcp-india-stack": {
      "command": "python",
      "args": ["-m", "mcp_india_stack"]
    }
  }
}

macOS/Linux (~/Library/Application Support/Claude/claude_desktop_config.json or ~/.config/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "mcp-india-stack": {
      "command": "python3",
      "args": ["-m", "mcp_india_stack"]
    }
  }
}

🛠️ Tool Catalog

🔍 Lookup Tools

✅ Validation Tools

📱 Identity & Contact

⚡ Bulk Operations

🧮 Tax & Financial Calculators (FY2025-26)

💰 Savings & Investment Calculators

🏠 Real Estate

💼 HR & Payroll

🏦 Banking & Payments

📈 Stock Market

  • get_stock_quote — Fetch live/delayed Indian stock quotes and summaries (NSE/BSE) using yfinance.

  • get_stock_history — Fetch historical end-of-day data for Indian stocks using yfinance.

📋 RTI Toolkit

🔐 Account Aggregator (Offline)


🔄 Agent Workflows & Resources

Prompt Workflows (Overview)

Built-in prompt templates to guide AI agents through complex multi-step tasks:

  • vendor_kyc — GSTIN, PAN, and IFSC verification sequence.

  • salary_planner — Income, HRA, and optimized take-home salary planning.

  • invoice_audit — Cross-referencing GSTINs, HSN codes, and applicable GST rates.

Server Resources (Overview)

Dynamic JSON resources provided directly to the LLM context:

  • india://status — Version, DB connectivity, and runtime flags

  • india://changelog — Structured changelog resource

  • india://schema/* — JSON schemas for all tool outputs


📡 Data Architecture & Freshness

This package bundles static datasets for offline-first workflows (approx. 10-11MB compressed footprint), covering IFSCs, Pincodes, HSN/SAC masters, and curated UPI handles.

All datasets are bundled directly within the package and checksum-verified at build time:

  • Offline First: Zero runtime network calls for dataset queries. No external CDN dependency or cache shadowing.

  • Deterministic: Data freshness is tied to package releases. To receive updated datasets, upgrade mcp-india-stack.

  • Integrity: Bundled dataset integrity is verified against a build-time SHA-256 manifest.


⚠️ Limitations

  • Stateless Validation: GSTIN, Aadhaar, Voter ID, DL, Passport, CIN, and DIN validators check structural formatting and checksums only. They do not verify active registration status with government issuing authorities.

  • Algorithmic Constraints: PAN validation is structural; the PAN check character logic is not publicly verifiable.

  • Tax Estimates: All tax calculations are algorithmic estimates based on FY2025-26 rules. Actual liability may differ. Always consult a Chartered Accountant.

  • Static Rates: HSN/SAC rates are static references and may vary based on specific conditions or new government notifications.


See NOTICES for detailed dataset attribution, licensing details, and third-party acknowledgments.

See LEGAL_NOTICE.md for important legal disclaimers including:

  • No Government Affiliation — This project is not affiliated with NIC, eCourts, MeitY, or any government body.

  • Not Legal Advice — All outputs (bare-act lookups, limitation calculations, court fee estimates, stamp duty estimates, RTI deadline/penalty calculations) are algorithmic estimates, not legal advice.

  • Data Accuracy — State-subject data (court fees, stamp duty) carries as_of / last_verified fields and is not live-verified against issuing authorities.

  • Personal Data — Identity validation (Aadhaar, PAN, etc.) is structural/checksum only. Users are responsible for DPDP Act compliance.


🚀 Launch Notes

This repository is release-ready for GitHub launch with:

  • 0.8.0 package metadata and changelog coverage.

  • A complete MCP server-card under docs/.well-known/mcp/server-card.json.

  • Local setup and publishing steps in SETUP.md.

  • Contribution guidance and versioning policy in CONTRIBUTING.md.

What's New in v0.8.0 — Authenticity System (A0-A4), Signed Datasets & Cryptographic Verification

  • Multi-Tier Authenticity System (8a): Every verifying tool outputs an additive authenticity envelope (A0 to A4) enforcing rules R1–R6.

  • Signed Dataset Manifests (8b): Detached Ed25519 dataset verification, key ring with rotation/revocation, monotonic anti-rollback checks, and --verify-data CLI command.

  • Cryptographic Artifact Verification (8c): Signed NIC B2B e-invoice QR code verification and UIDAI secure offline XML/ZIP e-KYC attestation with XXE/bomb defense.

  • Opt-In Registry Provider Interface (8d): Pluggable BaseRegistryProvider(ABC) with entry points discovery, FixtureProvider, circuit breaker, rate limiting, and SSRF defense.

Previous Releases

  • v0.6.0: Legal Reference (CNR decoder, court establishment lookup, bare-act section lookups for IPC/BNS/CrPC/BNSS/IEA/BSA, IPC↔BNS crosswalk, limitation period calculator, court fee, stamp duty) and RTI Toolkit (fee calculator, deadline tracker, penalty estimator, templates). Added yfinance-based market data tools.

  • v0.4.x: Deep statutory audit across capital gains thresholds, EPF wage ceilings, metro HRA rules, 7-slab presumptive tax, and GST late fee caps. See CHANGELOG.md for detailed history.


Offline-First Guarantee

The package classifies every tool under an authoritative network access attribute (none, optional, or required), surfaced programmatically in the india://status MCP resource (tools_network):

Network Tier

Policy

Tool Count

Tools Included

none (Network: None)

Pure offline execution. Zero network calls, zero external endpoints, no sockets opened. Computations, format checks, checksum algorithms, and tax rules execute entirely in-process using local logic.

73

validate_gstin, bulk_validate_gstin, validate_pan, bulk_validate_pan, decode_pan_type, validate_upi_vpa, decode_state_code, validate_aadhaar, bulk_validate_aadhaar, validate_voter_id, validate_driving_license, validate_passport, validate_cin, validate_din, validate_fssai, validate_tan, validate_mobile_number, validate_pran, validate_llpin, decode_isin, lookup_bank, lookup_bbps_biller, validate_epf_code, validate_esic_code, decode_digilocker_uri, verify_einvoice_qr, verify_aadhaar_offline_artifact, build_aa_consent_request, validate_aa_consent_artifact, decode_aa_fi_type, calculate_income_tax, calculate_tds, calculate_surcharge, calculate_hra_exemption, calculate_capital_gains, calculate_advance_tax, calculate_epf_esic, calculate_emi, calculate_gratuity, calculate_ppf_maturity, calculate_fd_maturity, calculate_rd_maturity, calculate_sip_returns, calculate_step_up_sip, calculate_nps_projection, calculate_sukanya_samriddhi, calculate_home_vs_rent, calculate_gst_late_fee, calculate_income_tax_interest, calculate_presumptive_tax, calculate_professional_tax, calculate_leave_encashment_tax, calculate_salary_restructuring, calculate_neft_rtgs_imps_charges, get_regulatory_deadlines, decode_cnr_number, lookup_court_establishment_code, lookup_ipc_section, lookup_bns_section, lookup_crpc_section, lookup_bnss_section, lookup_evidence_act_section, lookup_bsa_section, decode_ipc_bns_crosswalk, calculate_limitation_deadline, calculate_court_fee, calculate_stamp_duty, calculate_rti_fee, calculate_rti_deadline, calculate_rti_penalty_estimate, draft_rti_application, draft_first_appeal, draft_second_appeal

optional (Network: Optional)

Datasets are bundled locally offline (IFSC master, postal pincodes, HSN/SAC master). When enabled, background non-blocking CDN refresh or optional live lookup enriches local data. If network is unavailable or blocked, falls back seamlessly to bundled local datasets without blocking or error.

5

lookup_ifsc, bulk_validate_ifsc, lookup_pincode, lookup_hsn_code, calculate_gst

required (Network: Required)

Live financial market data feeds. Must reach market upstream endpoints (e.g. Yahoo Finance) to retrieve current quotes or historical prices. If network is blocked or unavailable, returns structured error envelopes without unhandled exceptions.

2

get_stock_quote, get_stock_history

Available Tools

76 tools
bulk_validate_aadhaarA
Read-onlyIdempotent

Validate multiple Aadhaar numbers in parallel using ThreadPoolExecutor.

Use when batch-validating Aadhaar numbers for KYC, onboarding, or compliance workflows.

Args: numbers: List of Aadhaar numbers (with or without spaces/hyphens).

Returns: Standard envelope with per-Aadhaar results and valid/invalid counts.

Notes: Max 500 Aadhaars per call. Uses same Verhoeff validation as single tool. Not connected to UIDAI. In compliance with DPDP Act 2023, results are masked and raw numbers are never stored or logged.

Inputs: numbers (required). Returns: object

bulk_validate_gstinA
Read-onlyIdempotent

Validate multiple GSTINs in parallel using ThreadPoolExecutor.

Use when batch-validating vendor GSTINs for onboarding or reconciliation. Reduces N serial calls to ~N/10 parallel batches.

Args: gstins: List of 15-character GSTIN strings.

Returns: Standard envelope with per-GSTIN results, valid/invalid counts.

Notes: Max 500 GSTINs per call. Configurable via MCP_INDIA_STACK_BULK_WORKERS. Individual validation errors don't fail the entire batch.

Inputs: gstins (required). Returns: object

bulk_validate_ifscA
Read-onlyIdempotent

Validate multiple IFSC codes in parallel.

Inputs: ifscs (required). Returns: object

bulk_validate_panA
Read-onlyIdempotent

Validate multiple PANs in parallel.

Inputs: pans (required). Returns: object

calculate_advance_taxA
Read-onlyIdempotent

Calculate quarterly advance tax installment schedule per Sections 234B and 234C.

Use when planning quarterly tax payments to avoid interest penalties. Provides due dates and amounts for each installment.

Args: estimated_income: Estimated annual income for FY2025-26. regime: Tax regime for calculation. taxpayer_type: Category for slab selection. existing_tds: TDS already likely to be deducted.

Returns: Standard envelope with quarterly breakdown and interest rules.

Notes: Due dates: June 15 (15%), Sept 15 (45%), Dec 15 (75%), Mar 15 (100%). Interest 1% per month for delay under Section 234C.

Inputs: estimated_income (required), regime, existing_tds, taxpayer_type, +1 more. Returns: object

calculate_capital_gainsA
Read-onlyIdempotent

Calculate capital gains tax for various asset types (FY2025-26).

Use when computing tax liability on sale of equity, mutual funds, real estate, gold, or other capital assets.

Args: sale_price: Sale proceeds after expenses. purchase_price: Original purchase price. asset_type: Type of asset sold. holding_period_days: Days held before sale. inflation_index_purchase: Cost Inflation Index for purchase year. inflation_index_sale: Cost Inflation Index for sale year. expenses_on_sale: Expenses incurred during sale. improvements: Cost of improvements (for real estate).

Returns: Standard envelope with STCG/LTCG breakdown, tax rates, and liability.

Notes: Budget 2024 rates: STCG 20% (equity/MF), LTCG 12.5% (equity/MF threshold 100K). Real estate without indexation taxed at 20%.

Inputs: sale_price (required), purchase_price (required), asset_type, improvements, +5 more. Returns: object

calculate_court_feeA
Read-onlyIdempotent

Calculate ad valorem court fees for a specific state.

Use when you need to estimate the court fee required to be paid for filing a suit.

Args: state_code: State code (e.g., 'MH', 'DL', 'KA'). suit_value: Value of the suit. suit_type: Type of suit.

Returns: Standard envelope with calculated court fee and computation details.

Notes: Not legal advice. Consult a qualified advocate.

Inputs: state_code (required), suit_value (required), suit_type. Returns: object

calculate_emiA
Read-onlyIdempotent

Calculate EMI for a loan with year-by-year amortization schedule.

Use when computing loan EMIs, comparing loan options, or planning prepayment strategies.

Args: principal: Loan amount in INR. annual_interest_rate: Annual rate as percentage. tenure_months: Loan tenure in months (max 360). loan_type: Label for the loan type.

Returns: Standard envelope with EMI, total payment, interest, and amortization.

Notes: Uses standard reducing balance formula. Actual EMI may vary by lender.

Inputs: principal (required), tenure_months (required), annual_interest_rate (required), loan_type, +1 more. Returns: object

calculate_epf_esicA
Read-onlyIdempotent

Calculate EPF and ESIC contributions for employer and employee.

Use when computing payroll costs, employee deductions, or comparing CTC structures across different salary levels.

Args: basic_wages: Basic salary + DA per month in INR. gross_wages: Total gross monthly salary in INR. include_employer_share: If True, return employer costs.

Returns: Standard envelope with EPF breakdown, ESIC applicability, and totals.

Notes: EPF ceiling is ₹15,000/month for statutory computation. ESIC applicable when gross wages ≤ ₹21,000/month.

Inputs: basic_wages (required), gross_wages (required), financial_year, include_employer_share. Returns: object

calculate_fd_maturityA
Read-onlyIdempotent

Calculate Fixed Deposit maturity amount.

Use when projecting FD returns or comparing deposit options.

Args: principal: Deposit amount in INR annual_interest_rate: Rate as percentage tenure_days: Deposit tenure in days compounding: Compounding frequency is_senior_citizen: Senior citizen flag (0.25% extra rate) tds_applicable: Apply TDS if interest > ₹40,000/yr

Returns: Maturity amount with interest breakdown and TDS if applicable.

Inputs: principal (required), tenure_days (required), annual_interest_rate (required), compounding, +3 more. Returns: object

calculate_gratuityA
Read-onlyIdempotent

Calculate gratuity under the Payment of Gratuity Act, 1972.

Use when computing terminal benefits, comparing CTC packages, or planning retirement benefits.

Args: last_drawn_salary: Basic + DA per month. years_of_service: Total service duration. is_covered_under_act: True for establishments with 10+ employees.

Returns: Standard envelope with gratuity amount, tax-exempt limit, and breakdown.

Notes: Minimum 5 years service required (except death/disablement). Tax-exempt ceiling is ₹20,00,000.

Inputs: years_of_service (required), last_drawn_salary (required), financial_year, is_covered_under_act. Returns: object

calculate_gstA
Read-onlyIdempotent

Calculate GST breakdown with CGST/SGST/IGST split and optional cess.

Use when computing tax for invoices, quotations, or GST compliance.

Args: amount: Base amount or GST-inclusive amount in rupees. gst_rate: Valid GST rate percentage. transaction_type: 'intra_state' or 'inter_state'. amount_includes_gst: Set True to back-calculate base. cess_category: For 28% items, specify applicable cess.

Returns: Standard envelope with base amount, CGST/SGST/IGST breakdown, cess amount, total GST, and total payable amount.

Notes: Rates are for general reference. Actual classification may vary.

Inputs: amount (required), gst_rate (required), transaction_type (required), cess_category, +2 more. Returns: object

calculate_gst_late_feeB
Read-onlyIdempotent

Calculate GST late filing penalty.

Use when estimating late filing fees or planning compliance.

Args: return_type: "GSTR1", "GSTR3B", or "GSTR9" days_delayed: Number of days delayed annual_turnover: Annual turnover for cap calculation has_nil_liability: True if nil return

Returns: Late fee breakdown with CGST/SGST split.

Inputs: return_type (required), days_delayed (required), annual_turnover (required), financial_year, +1 more. Returns: object

calculate_home_vs_rentA
Read-onlyIdempotent

Compare buying vs renting financial outcome.

Use when deciding between buying a home or renting.

Args: home_price: Property price in INR down_payment_percent: Down payment as % loan_interest_rate: Home loan interest rate % loan_tenure_years: Loan tenure monthly_rent: Current monthly rent annual_rent_increase: Expected rent increase %/year expected_property_appreciation: Property appreciation %/year investment_return: Return on invested down payment % analysis_years: Years to compare

Returns: Buy/rent comparison with yearly breakdown and break-even analysis.

Inputs: home_price (required), monthly_rent, analysis_years, financial_year, +6 more. Returns: object

calculate_hra_exemptionA
Read-onlyIdempotent

Calculate House Rent Allowance (HRA) exemption under Section 10(13A).

Use when computing tax-exempt HRA component for salary structuring or income tax filing. Compares three conditions and takes minimum.

Args: basic_salary: Monthly basic salary. hra_received: Annual HRA received from employer. rent_paid: Annual rent paid. city_type: 'metro' (50% of salary) or 'non_metro' (40% of salary). is_government_employee: Use simplified formula for government employees.

Returns: Standard envelope with exemption amount, taxable HRA, and breakdown.

Notes: The actual exemption is the minimum of: 1. HRA received 2. Rent paid minus 10% of salary 3. 50% of salary (metro) or 40% (non_metro)

Inputs: rent_paid (required), basic_salary (required), hra_received (required), city_type, +2 more. Returns: object

calculate_income_taxA
Read-onlyIdempotent

Calculate Indian income tax for FY2025-26 under old, new, or both regimes.

Use when computing tax liability, comparing regimes, or planning deductions. Includes slab computation, Section 87A rebate, surcharge with marginal relief, and health & education cess.

Args: gross_income: Annual gross income in rupees. regime: 'new', 'old', or 'both' for side-by-side comparison. taxpayer_type: Category for slab selection. deduction_80c: Old regime only — Section 80C amount. deduction_80d_self: Old regime only — medical insurance self. deduction_80d_parents: Old regime only — medical insurance parents. deduction_80d_senior_parents: Old regime only — senior parent flag. deduction_80ccd_nps: Old regime only — NPS additional. deduction_24b: Old regime only — home loan interest. other_deductions: Old regime only — other amounts.

Returns: Standard envelope with per-regime breakdown, effective rate, monthly tax, take-home, and regime recommendation when both requested.

Notes: FY2025-26 rates. Estimate only — consult a CA for filing.

Inputs: gross_income (required), regime, deduction_24b, deduction_80c, +7 more. Returns: object

calculate_income_tax_interestA
Read-onlyIdempotent

Calculate interest under Sections 234A, 234B, 234C.

Use when computing penalty interest for late tax filing or short advance tax payments.

Args: total_tax_liability: Total tax liability tds_deducted: TDS already deducted advance_tax_paid: Dict with q1,q2,q3,q4 quarterly payments filing_date: YYYY-MM-DD when return filed (None if not filed) due_date: Due date for filing

Returns: Interest breakdown for Sections 234A, 234B, 234C.

Inputs: total_tax_liability (required), due_date, filing_date, tds_deducted, +2 more. Returns: object

calculate_leave_encashment_taxA
Read-onlyIdempotent

Calculate tax-exempt portion of leave encashment under Section 10(10AA).

Use when computing leave encashment tax exemption or planning retirement benefits.

Args: leave_encashment_amount: Actual amount received average_monthly_salary: Average of last 10 months basic + DA earned_leave_balance_days: Days of earned leave years_of_service: Total years of service is_government_employee: Government employee flag

Returns: Exemption amount and taxable portion breakdown.

Inputs: years_of_service (required), average_monthly_salary (required), leave_encashment_amount (required), earned_leave_balance_… Returns: object

calculate_limitation_deadlineA
Read-onlyIdempotent

Calculate the deadline under the Limitation Act.

Use when computing the last date to file a suit, appeal, or application based on cause of action.

Args: suit_type: Type of suit/appeal/application. cause_of_action_date: Date the cause of action arose (YYYY-MM-DD). exclusion_days: Days excluded under Section 12. court_closed_on_deadline: Whether court is closed on deadline date. court_reopen_date: Date court reopens if closed on deadline.

Returns: Standard envelope with deadline date and limitation period.

Notes: Not legal advice. Consult a qualified advocate.

Inputs: suit_type (required), cause_of_action_date (required), exclusion_days, court_reopen_date, +1 more. Returns: object

calculate_neft_rtgs_imps_chargesA
Read-onlyIdempotent

Calculate NEFT/RTGS/IMPS/UPI transaction charges.

Use when estimating bank transfer costs or comparing payment modes.

Args: transfer_mode: "NEFT", "RTGS", "IMPS", or "UPI" amount: Transfer amount in INR account_type: "savings" or "current" is_online: True if done via online banking

Returns: Charge breakdown with base charge, GST, and total.

Inputs: amount (required), transfer_mode (required), is_online, account_type, +1 more. Returns: object

calculate_nps_projectionA
Read-onlyIdempotent

Calculate NPS corpus and monthly pension at retirement.

Use when planning retirement with NPS or projecting pension.

Args: monthly_contribution: Monthly NPS contribution current_age: Current age retirement_age: Retirement age (default 60) expected_annual_return: Expected annual return % annuity_rate: Annuity rate % annuity_percent: % of corpus to buy annuity (min 40%)

Returns: Projected corpus, lump sum, and monthly pension estimate.

Inputs: current_age (required), monthly_contribution (required), annuity_rate, financial_year, +3 more. Returns: object

calculate_ppf_maturityA
Read-onlyIdempotent

Calculate PPF maturity amount with year-by-year breakdown.

Use when planning long-term savings, comparing investment options, or calculating retirement corpus.

Args: annual_investment: Amount invested per year (max ₹1,50,000). tenure_years: PPF tenure (15, 20, 25, or 30 years). annual_interest_rate: PPF rate (default 7.1% for FY2025-26).

Returns: Standard envelope with maturity amount, total invested, interest earned.

Notes: EEE tax status: exempt at investment, accumulation, and maturity. Rate is government-administered and revised quarterly.

Inputs: annual_investment (required), tenure_years, financial_year, annual_interest_rate. Returns: object

calculate_presumptive_taxA
Read-onlyIdempotent

Calculate tax under presumptive scheme (Sections 44AD, 44ADA).

Use when computing tax for small businesses or professionals under presumptive taxation.

Args: scheme: "44AD" or "44ADA" gross_receipts: Total gross receipts digital_receipt_percent: % of receipts via digital mode regime: "new" or "old" age: Assessee age deductions_80c: Section 80C deductions (old regime)

Returns: Presumptive income and total tax payable.

Inputs: scheme (required), gross_receipts (required), age, regime, +3 more. Returns: object

calculate_professional_taxA
Read-onlyIdempotent

Calculate state-wise professional tax.

Use when computing total tax liability including professional tax deductions.

Args: gross_salary_monthly: Monthly gross salary state_code: 2-char state code (e.g., "MH", "KA", "TN")

Returns: Monthly and annual professional tax amount.

Inputs: state_code (required), gross_salary_monthly (required), financial_year. Returns: object

calculate_rd_maturityA
Read-onlyIdempotent

Calculate Recurring Deposit maturity amount.

Use when projecting RD returns or planning recurring deposits.

Args: monthly_installment: Monthly deposit amount annual_interest_rate: Annual rate as percentage tenure_months: Deposit tenure in months

Returns: Maturity amount with total interest earned.

Inputs: tenure_months (required), monthly_installment (required), annual_interest_rate (required), financial_year. Returns: object

calculate_rti_deadlineA
Read-onlyIdempotent

Calculate standard, life/liberty, or APIO-routed RTI response deadlines.

Use when determining the due date for receiving a response to an RTI application.

Args: filed_date: Date filed (YYYY-MM-DD). concerns_life_or_liberty: True if information concerns life or liberty. routed_through_apio: True if submitted via Assistant PIO.

Returns: Standard envelope with the calculated deadline date.

Notes: Not legal advice. Consult a qualified advocate.

Inputs: filed_date (required), routed_through_apio, concerns_life_or_liberty. Returns: object

calculate_rti_feeA
Read-onlyIdempotent

Calculate the required RTI application fee for central or state authorities.

Use when determining the application fee required to file an RTI request.

Args: state_code: State code or 'central'. applicant_category: 'general' or 'bpl' (Below Poverty Line).

Returns: Standard envelope with the applicable fee amount and mode of payment.

Notes: Not legal advice. Consult a qualified advocate.

Inputs: state_code, applicant_category. Returns: object

calculate_rti_penalty_estimateA
Read-onlyIdempotent

Estimate potential penalties for delayed RTI responses under Section 20.

Use when computing the estimated penalty that may be imposed on a PIO for delay.

Args: due_date: Due date of the response (YYYY-MM-DD). response_received_date: Actual response date (YYYY-MM-DD) or None if still pending.

Returns: Standard envelope with penalty estimate and days delayed.

Notes: Not legal advice. Consult a qualified advocate.

Inputs: due_date (required), response_received_date. Returns: object

calculate_salary_restructuringA
Read-onlyIdempotent

Calculate salary restructuring options for tax optimization.

Use when advising employees on tax-efficient salary structures, comparing restructuring options, or planning CTC optimization.

Args: current_gross: Current gross annual salary in INR current_basic_ratio: Current basic salary as ratio of gross structure_type: Structure option (standard, optimized, startup) include_meal_card: Include Sodexo/Food card allowance include_wallet_allowance: Include flexible wallet allowance has_hra: Employee receives HRA rent_in_metro: Rent paid in metro city (higher HRA) family_medical: Include family medical insurance parents_medical: Include parents medical insurance

Returns: Standard envelope with tax-optimized structure, deductions, and estimated tax

Inputs: current_gross (required), has_hra, rent_in_metro, family_medical, +6 more. Returns: object

calculate_sip_returnsA
Read-onlyIdempotent

Calculate SIP maturity with inflation-adjusted returns.

Use when projecting mutual fund SIP returns or planning systematic investments.

Args: monthly_investment: Monthly SIP amount expected_annual_return: Expected CAGR % tenure_years: Investment tenure inflation_rate: Expected inflation %

Returns: Corpus with wealth gained and inflation-adjusted value.

Inputs: tenure_years (required), monthly_investment (required), expected_annual_return (required), financial_year, +1 more. Returns: object

calculate_stamp_dutyA
Read-onlyIdempotent

Calculate state stamp duty for various instruments.

Use when estimating the stamp duty payable on legal documents like conveyance or lease.

Args: state_code: State code (e.g., 'MH', 'DL', 'KA'). instrument_type: Type of instrument. transaction_value: Value of the transaction.

Returns: Standard envelope with stamp duty amount and surcharge components.

Notes: Not legal advice. Consult a qualified advocate.

Inputs: state_code (required), instrument_type (required), transaction_value (required). Returns: object

calculate_step_up_sipA
Read-onlyIdempotent

Calculate SIP with annual step-up increment.

Use when comparing step-up SIP vs flat SIP or planning salary-linked investments.

Args: initial_monthly_investment: Starting SIP amount annual_step_up_percent: % increase each year expected_annual_return: Expected CAGR % tenure_years: Investment tenure

Returns: Corpus comparison between step-up and flat SIP.

Inputs: tenure_years (required), annual_step_up_percent (required), expected_annual_return (required), initial_monthly_investment… Returns: object

calculate_sukanya_samriddhiA
Read-onlyIdempotent

Calculate SSY or SCSS maturity amount.

Use when planning long-term savings for girl child (SSY) or retirement (SCSS).

Args: scheme: "ssy" or "scss" annual_investment: Annual deposit amount annual_interest_rate: Interest rate (default 8.2%)

Returns: Maturity amount with interest breakdown and tax status.

Inputs: scheme (required), annual_investment (required), financial_year, annual_interest_rate. Returns: object

calculate_surchargeA
Read-onlyIdempotent

Calculate surcharge and marginal relief for a given income and base tax.

Use when computing surcharge as a standalone calculation, separate from the full income tax tool. The income tax tool uses this logic internally.

Args: total_income: Total income in rupees. base_tax: Base tax amount before surcharge. regime: 'new' (capped at 25%) or 'old' (up to 37%).

Returns: Standard envelope with surcharge rate, before/after marginal relief, and cess base.

Notes: FY2025-26 rates. New regime surcharge capped at 25%.

Inputs: regime (required), base_tax (required), total_income (required), financial_year. Returns: object

calculate_tdsA
Read-onlyIdempotent

Calculate TDS for a given section and payment amount (FY2025-26).

Use when computing withholding tax on contractor payments, professional fees, interest, rent, commissions, or purchase of goods.

Args: section: TDS section key from supported sections. payment_amount: Gross payment in rupees. pan_available: Whether payee PAN is available (affects rate). is_senior_citizen: For 194A bank interest threshold. aggregate_payments_ytd: Prior payments to same payee in current FY. payee_type: 'individual_huf' or 'other' - affects 194C rate.

Returns: Standard envelope with TDS applicability, rate, amount, net payment.

Notes: FY2025-26 rates. Actual rates may vary by DTAA or Form 15G/15H.

Inputs: section (required), pan_available (required), payment_amount (required), payee_type, +3 more. Returns: object

decode_aa_fi_typeA
Read-onlyIdempotent

Decode AA Financial Information type and get MCP tool pairings.

Use when mapping FI types to validation/calculation tools.

Args: fi_type: FI type code (e.g., "DEPOSIT", "MUTUAL_FUNDS")

Returns: FI type description, typical fields, and MCP tool pairings.

Inputs: fi_type (required). Returns: object

decode_cnr_numberA
Read-onlyIdempotent

Decode and validate a 16-character CNR.

Use when extracting state, district, establishment, case type, year, and serial from a CNR number.

Args: cnr: 16-character CNR string.

Returns: Standard envelope containing decoded fields.

Notes: Format validation with field decoding. Not legal advice. Consult a qualified advocate.

Inputs: cnr (required). Returns: object

decode_digilocker_uriA
Read-onlyIdempotent

Decode DigiLocker document URI and map to validator.

Inputs: uri (required). Returns: object

decode_ipc_bns_crosswalkA
Read-onlyIdempotent

Provide a bidirectional crosswalk between IPC and BNS sections.

Use when you need to find the equivalent section in BNS from IPC or vice versa.

Args: section: Section number to map. from_act: Source Act ("IPC" or "BNS").

Returns: Standard envelope with crosswalk mapping details.

Notes: Not legal advice. Consult a qualified advocate.

Inputs: section (required), from_act. Returns: object

decode_isinA
Read-onlyIdempotent

Decode ISIN (International Securities Identification Number) with Luhn check.

Use when validating ISIN for Indian securities.

Args: isin: 12-character ISIN

Returns: Decoded fields with country, NSIN, security type, and Luhn validation.

Inputs: isin (required). Returns: object

decode_pan_typeA
Read-onlyIdempotent

Decode PAN entity type from 4th character.

Inputs: pan (required). Returns: object

decode_state_codeA
Read-onlyIdempotent

Decode Indian GST state code metadata from a code or GSTIN prefix.

Use when you need canonical state name, abbreviation, capital, and GST zone mapping.

Args: value: Two-digit code like 27 or GSTIN like 27AAPFU0939F1ZV.

Returns: Standard envelope containing decoded state metadata.

Inputs: value (required). Returns: object

get_regulatory_deadlinesA
Read-onlyIdempotent

Get India's tax & regulatory compliance calendar for FY2025-26.

Use when planning tax compliance schedules, setting reminders for deadlines, or building financial compliance dashboards.

Args: category: Filter by category (Income Tax, TDS, GST, PF/ESIC, ROC, etc.) from_date: Start date filter (YYYY-MM-DD) to_date: End date filter (YYYY-MM-DD)

Returns: Standard envelope with deadlines grouped by month for FY2025-26

Notes: Covers ITR filing, TDS deposits, GST returns, PF/ESIC, ROC filings, advance tax, and professional tax deadlines.

Inputs: to_date, category, from_date. Returns: object

get_stock_historyB
Read-onlyIdempotent

[Experimental] Fetch historical end-of-day data for a given Indian stock ticker.

Inputs: symbol (required), period. Returns: object

get_stock_quoteA
Read-onlyIdempotent

[Experimental] Fetch current (delayed) price and summary for a given Indian stock ticker.

Inputs: symbol (required). Returns: object

lookup_bankA
Read-onlyIdempotent

Look up bank details from RBI master list.

Inputs: name_or_code (required). Returns: object

lookup_bbps_billerA
Read-onlyIdempotent

Look up BBPS (Bharat Bill Payment System) biller details.

Use when setting up bill payments for electricity, gas, DTH, water, broadband, FASTag, insurance, or mobile recharges.

Args: category: Category of biller to filter by. state: State to filter by (or 'all' for pan-India). biller_id: Direct biller ID for specific lookup.

Returns: Standard envelope with matching billers and parameter schemas.

Notes: Data is bundled offline. For real-time directory, check NPCI BBPS.

Inputs: state, category, biller_id. Returns: object

lookup_bns_sectionA
Read-onlyIdempotent

Look up a BNS section detail.

Use when you need the title and description of a section in the Bharatiya Nyaya Sanhita.

Args: section: BNS section number.

Returns: Standard envelope with section details.

Notes: Not legal advice. Consult a qualified advocate.

Inputs: section (required). Returns: object

lookup_bnss_sectionA
Read-onlyIdempotent

Look up a BNSS section detail.

Use when you need the title and description of a section in the Bharatiya Nagarik Suraksha Sanhita.

Args: section: BNSS section number.

Returns: Standard envelope with section details.

Notes: Not legal advice. Consult a qualified advocate.

Inputs: section (required). Returns: object

lookup_bsa_sectionB
Read-onlyIdempotent

Look up a BSA section detail.

Use when you need the title and description of a section in the Bharatiya Sakshya Adhiniyam.

Args: section: BSA section number.

Returns: Standard envelope with section details.

Notes: Not legal advice. Consult a qualified advocate.

Inputs: section (required). Returns: object

lookup_court_establishment_codeA
Read-onlyIdempotent

Look up court establishment codes for states, districts, and complexes.

Use when you need to decode the state and district court location from a code.

Args: code: Court establishment code.

Returns: Standard envelope containing location metadata.

Notes: Returns static master data. Not legal advice. Consult a qualified advocate.

Inputs: code (required). Returns: object

lookup_crpc_sectionA
Read-onlyIdempotent

Look up a CrPC section detail.

Use when you need the title and description of a section in the Code of Criminal Procedure.

Args: section: CrPC section number.

Returns: Standard envelope with section details.

Notes: Not legal advice. Consult a qualified advocate.

Inputs: section (required). Returns: object

lookup_evidence_act_sectionA
Read-onlyIdempotent

Look up an Indian Evidence Act section detail.

Use when you need the title and description of a section in the Indian Evidence Act.

Args: section: Indian Evidence Act section number.

Returns: Standard envelope with section details.

Notes: Not legal advice. Consult a qualified advocate.

Inputs: section (required). Returns: object

lookup_hsn_codeA
Read-onlyIdempotent

Lookup HSN/SAC by exact code or search by keyword in code descriptions.

Use for GST classification workflows where users provide a code or only a product keyword.

Args: code: Optional exact HSN/SAC code (2, 4, 6, or 8 digits). keyword: Optional plain-text search token over description field.

Returns: Standard envelope with exact match data or top 5 keyword matches.

Notes: Returns static master data; GST applicability can vary by conditions.

Inputs: code, keyword. Returns: object

lookup_ifscA
Read-onlyIdempotent

Look up an Indian IFSC code from bundled dataset with live fallback support.

Use this when you need bank branch details from an IFSC code in invoices, onboarding forms, or payment validation workflows.

Args: ifsc_code: IFSC string to validate and lookup. Case-insensitive; whitespace is trimmed.

Returns: Standard envelope containing found flag, branch details, payment rails, and source.

Notes: If not found locally, attempts live lookup at ifsc.razorpay.com with 3s timeout.

Inputs: ifsc_code (required). Returns: object

lookup_ipc_sectionB
Read-onlyIdempotent

Look up an IPC section detail.

Use when you need the title and description of a section in the Indian Penal Code.

Args: section: IPC section number.

Returns: Standard envelope with section details.

Notes: Not legal advice. Consult a qualified advocate.

Inputs: section (required). Returns: object

lookup_pincodeA
Read-onlyIdempotent

Look up India pincode details and return all post offices for that code.

Use for address normalization, district/state extraction, and GST state crosswalk use-cases.

Args: pincode: 6-digit pincode; spaces/hyphens are accepted and normalized.

Returns: Standard envelope with location hierarchy and post_offices array.

Notes: One pincode may map to multiple post offices and all are returned.

Inputs: pincode (required). Returns: object

validate_aadhaarA
Read-onlyIdempotent

Validate an Indian Aadhaar number with Verhoeff checksum verification.

Use when checking Aadhaar format and checksum in KYC, identity verification, or government benefit workflows.

Args: aadhaar: 12-digit Aadhaar number. Spaces and hyphens are stripped.

Returns: Standard envelope containing validity, checksum result, formatted display, and first-digit check.

Notes: Validates format and Verhoeff checksum only. Not connected to UIDAI. In compliance with the Digital Personal Data Protection Act, 2023 (DPDP Act) and UIDAI guidelines, raw Aadhaar numbers are never stored, logged, or exposed.

Inputs: aadhaar (required). Returns: object

validate_cinA
Read-onlyIdempotent

Validate and decode an Indian CIN (Company Identification Number).

Use when verifying company registration data, extracting listing status, NIC code, state, year, and company type from a CIN.

Args: cin: 21-character CIN string. Spaces and hyphens stripped automatically. verify_online: Optional opt-in online registry attestation (A4 level).

Returns: Standard envelope containing decoded fields: listing status, NIC code, state, year of incorporation, company type, and serial number.

Notes: Format validation with field decoding. No public checksum.

Inputs: cin (required), verify_online. Returns: object

validate_dinA
Read-onlyIdempotent

Validate an Indian DIN (Director Identification Number) format.

Use when verifying director identity numbers in MCA compliance workflows.

Args: din: 8-digit numeric DIN string. Shorter inputs zero-padded. Spaces stripped.

Returns: Standard envelope containing validity and normalized DIN.

Notes: Format validation only. Cannot verify director status with MCA.

Inputs: din (required). Returns: object

validate_driving_licenseA
Read-onlyIdempotent

Validate an Indian driving license number format and decode segments.

Use when verifying DL format, extracting state/RTO/year in KYC workflows.

Args: dl_number: Driving license number. Hyphens/spaces stripped automatically.

Returns: Standard envelope containing validity, state code, state name, RTO code, year of issue, and serial number.

Notes: Format validation only. Handles non-standard pre-Sarathi formats gracefully.

Inputs: dl_number (required). Returns: object

validate_epf_codeA
Read-onlyIdempotent

Validate EPF establishment code.

Inputs: code (required). Returns: object

validate_esic_codeB
Read-onlyIdempotent

Validate ESIC employer code.

Inputs: code (required). Returns: object

validate_fssaiA
Read-onlyIdempotent

Validate FSSAI (Food Safety) license number format and decode details.

Use when verifying food business operator licenses in compliance checks.

Args: license_number: 14-digit FSSAI license. Spaces/hyphens stripped.

Returns: Standard envelope with validation, state, license type, year decoded.

Notes: The 14-digit format encodes: state(2) + year(2) + type(1) + sequence(9). Type: 1=Central, 2=State, 3=State (turnover-based).

Inputs: license_number (required). Returns: object

validate_gstinA
Read-onlyIdempotent

Validate and decode an Indian GSTIN with checksum verification.

Use when checking supplier/customer GSTINs before invoicing, reconciliation, or compliance workflows.

Args: gstin: 15-character GSTIN (e.g., 27AAPFU0939F1ZV). Spaces/hyphens stripped. expected_entity_type: Optional expected entity char to match PAN 4th char. verify_online: Optional opt-in online registry attestation (A4 level).

Returns: Standard envelope containing validity, state decode, embedded PAN, entity number, category, and checksum information.

Notes: Validates structure and checksum only; does not verify active GSTN registration status.

Inputs: gstin (required), verify_online, expected_entity_type. Returns: object

validate_llpinA
Read-onlyIdempotent

Validate LLPIN (Limited Liability Partnership Identification Number).

Use when verifying LLP registration numbers.

Args: llpin: LLPIN in format AAA-XXXX

Returns: Validation result with decoded segments.

Inputs: llpin (required). Returns: object

validate_mobile_numberA
Read-onlyIdempotent

Validate Indian mobile number and detect operator/circle.

Use when validating mobile numbers for KYC or contact verification.

Args: mobile: Mobile number with or without +91/0

Returns: Validation result with operator and telecom circle.

Inputs: mobile (required). Returns: object

validate_panA
Read-onlyIdempotent

Validate Indian PAN format and decode entity type from the 4th character.

Use when normalizing tax identity records in KYC, invoicing, or vendor onboarding.

Args: pan: PAN string, example: AAAPL1234C. Spaces and hyphens stripped automatically. verify_online: Optional opt-in online registry attestation (A4 level).

Returns: Standard envelope containing format validity, entity type, and decoded segments.

Notes: PAN check character is not publicly verifiable algorithmically.

Inputs: pan (required), verify_online. Returns: object

validate_passportA
Read-onlyIdempotent

Validate an Indian passport number format.

Use when verifying passport format in KYC, travel, or identity workflows.

Args: passport_number: 1 letter + 7 digits. Spaces and hyphens stripped automatically.

Returns: Standard envelope containing validity, series letter, and serial number.

Notes: Format validation only. No public checksum algorithm exists.

Inputs: passport_number (required). Returns: object

validate_pranA
Read-onlyIdempotent

Validate PRAN (Permanent Retirement Account Number) for NPS.

Use when verifying NPS account numbers.

Args: pran: 12-digit PRAN

Returns: Validation result with subscriber category.

Inputs: pran (required). Returns: object

validate_tanA
Read-onlyIdempotent

Validate TAN (Tax Deduction Account Number) format.

Use when verifying TAN format for TDS compliance.

Args: tan: 10-character TAN

Returns: Validation result with decoded segments.

Inputs: tan (required). Returns: object

validate_upi_vpaA
Read-onlyIdempotent

Validate UPI VPA structure and decode known provider handles.

Use when checking whether a UPI address is structurally valid before payment routing.

Args: vpa: UPI virtual payment address in username@handle format.

Returns: Standard envelope containing normalized VPA, known_provider flag, and provider metadata.

Notes: Unknown handles are not auto-invalidated because NPCI handle lists evolve over time.

Inputs: vpa (required). Returns: object

validate_voter_idA
Read-onlyIdempotent

Validate an Indian Voter ID (EPIC) number format.

Use when verifying voter ID format in KYC, identity, or electoral workflows.

Args: voter_id: EPIC number (3 letters + 7 digits). Spaces/hyphens stripped.

Returns: Standard envelope containing validity, prefix, serial, and format type.

Notes: Format validation only. Detects possible legacy EPIC formats.

Inputs: voter_id (required). Returns: object

verify_aadhaar_offline_artifactA
Read-onlyIdempotent

Verify UIDAI Paperless Offline e-KYC XML/ZIP artifact (A3 Authenticity).

Defends against XXE and expansion bombs via defusedxml. Verifies UIDAI RSA digital signature against bundled trust anchor. DPDP Act compliant: extracts only masked Aadhaar (last 4 digits) and demographic attributes; never outputs raw identifiers.

Inputs: xml_or_zip_bytes_base64 (required), share_code. Returns: object

verify_einvoice_qrA
Read-onlyIdempotent

Verify cryptographically signed QR code from Indian GST B2B e-invoices (A3 Authenticity).

Validates the NIC RSA digital signature against bundled public trust anchors, verifies internal claims, and cross-checks the 64-char Invoice Reference Number (IRN) against SHA-256(SupplierGSTIN + DocTyp + DocNo + FinYr).

Inputs: qr_text (required), expected_irn, expected_gstin. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 76 tools

    Disambiguation4/5

    Most tools are clearly separated by document type, tax/finance domain, or legal act, so an agent can usually select the right one from the name. There are a few redundant or overlapping tools, such as validate_pan versus decode_pan_type, and standalone calculate_surcharge versus its internal use in calculate_income_tax.

    Naming Consistency5/5

    The tool set consistently uses snake_case verb_noun names such as validate_gstin, calculate_emi, lookup_ifsc, decode_cnr_number, and bulk_validate_aadhaar. Minor verb variation between lookup_*, get_*, and decode_* is still predictable and readable.

    Tool Count1/5

    At 76 tools, the server is far beyond a well-scoped MCP surface and creates a heavy tool-selection burden for an agent. Even though the India compliance domain is broad, this count is extreme and many tools could be grouped or deferred.

    Completeness4/5

    Coverage is broad across identity validation, tax calculation, finance, legal lookups, banking, GST, and regulatory deadlines. Some common India-stack utilities are still missing or thin, such as vehicle registration validation, bank account validation, and PAN-Aadhaar link status, but agents can work around many gaps.

    Maintenance

    ActivityActive
    ResponsivenessUsually handled

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Local-first MCP server for Indian income tax computation, enabling users to compute taxes, compare regimes, plan advance tax, and parse Form 26AS without sending data to the cloud.
      12
      8 npm
      10
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A standalone MCP server for Indian personal income-tax work (ITR-1/2/3/4 + post-filing notices) with 8 deterministic tools, running fully offline with no API keys.
      63 PyPI
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables agents to search and look up companies in a local mirror of India's MCA master data, decode CINs offline, and validate GSTIN structure and checksums. Every field carries provenance and explicitly flags missing or stale data instead of fabricating it.
      4
      1
      MIT