Bharatpay Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Bharatpay Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An MCP server that gives any AI agent — Claude Desktop, Cursor, Windsurf — instant access to Indian fintech utilities. IFSC bank lookups, PAN/GSTIN validation with checksums, mutual fund NAVs, UPI VPA identification, pincode lookups, and Indian-style INR formatting. Seven tools. Zero auth. Zero cost. Designed to complement Razorpay's official MCP server — they handle execution, BharatPay handles validation and lookups.
🎥 Demo coming soon · 📦 `pip install bharatpay-mcp` · 🔗 [PyPI](https://pypi.org/project/bharatpay-mcp/)
Razorpay shipped an official MCP server in early 2025 for executing payment operations — creating orders, capturing payments, refunding. It's excellent.
But every Indian fintech project also needs a layer below that: validation and enrichment. Is this PAN's format correct? Does this GSTIN's mod-36 checksum verify? What bank does this IFSC code belong to? What's the PSP behind user@oksbi? What's today's NAV for Parag Parikh Flexi Cap?
Currently, an AI agent has to either hallucinate these answers or call seven different APIs with seven different auth schemes. BharatPay collapses all of it into a single MCP server an agent can install in 30 seconds.
Position-wise: BharatPay sits next to Razorpay's MCP, not in competition with it. They handle transactions; we handle validation. Use both together for a complete Indian-fintech AI stack.
Claude Desktop autonomously calling lookup_ifsc for an Indian bank lookup:
Claude calling bharatpay's lookup_ifsc tool
| Tool | Input | What it returns |
|---|---|---|
lookup_ifsc | KKBK0000261 | Bank, branch, address, MICR/SWIFT, supported rails (NEFT/RTGS/IMPS/UPI). Source: Razorpay's open IFSC API. |
validate_pan | AABCT3518Q | Format check, entity type (Individual/Company/HUF/Trust/...) decoded from the 4th character. |
validate_gstin | 29AABCT1332L1ZS | Format + mod-36 checksum verification, embedded state and PAN extraction. |
lookup_pincode | 302001 | District, state, all post offices. Source: India Post API. |
get_mutual_fund_nav | parag parikh flexi cap or 122639 | Latest NAV from AMFI's daily file. Fuzzy name search or exact code lookup. Cached for 6h. |
validate_upi_vpa | angelina@oksbi | PSP identification (Google Pay/PhonePe/Paytm/...) and underlying bank from the handle suffix. |
format_inr | 100000 or 29500 (paise mode) | ₹1,00,000 (Indian comma style) + word form (1 Lakh, 1.5 Crore, etc.). |
┌─────────────────────┐ ┌──────────────────────┐
│ AI Agent │ MCP / stdio │ BharatPay MCP │
│ (Claude / Cursor) │ ─────────────────> │ (this server) │
└─────────────────────┘ └──────────┬───────────┘
│
┌───────────────────────────┼───────────────────────────┐
│ │ │
┌──────▼──────┐ ┌──────────▼─────────┐ ┌────────▼────────┐
│ Pure-logic │ │ Live HTTP APIs │ │ Cached file │
│ validators │ │ (no auth, no cost) │ │ (refreshed 6h)│
├─────────────┤ ├────────────────────┤ ├─────────────────┤
│ PAN │ │ ifsc.razorpay.com │ │ AMFI NAVAll.txt │
│ GSTIN+mod36 │ │ postalpincode.in │ │ (~6 MB, ~30K │
│ UPI VPA │ │ │ │ schemes) │
│ INR format │ │ │ │ │
└─────────────┘ └────────────────────┘ └─────────────────┘Design notes worth calling out:
tests/test_validators.py::test_gstin_checksum_self_consistent).httpx.AsyncClient so the MCP server can handle parallel tool calls without blocking.pip install bharatpay-mcpThen add to ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) or the Windows equivalent:
{
"mcpServers": {
"bharatpay": {
"command": "python",
"args": ["-m", "bharatpay_mcp"]
}
}
}Restart Claude Desktop. Look for the 🔌 icon — bharatpay should be listed.
git clone https://github.com/angelina10504/bharatpay-mcp
cd bharatpay-mcp
pip install -e .Add to .cursor/mcp.json in your project:
{
"mcpServers": {
"bharatpay": {
"command": "python",
"args": ["-m", "bharatpay_mcp"]
}
}
}Once connected, try these prompts in Claude Desktop:
"Look up IFSC code KKBK0000261 and tell me what payment rails it supports."
"Is `29AAGCB7407Q1ZN` a valid GSTIN? If so, what state is the entity registered in?"
"What's today's NAV for Parag Parikh Flexi Cap regular growth?"
"My friend's UPI ID is `priya@oksbi` — which app does she use?"
"Format ₹12,00,000 in Indian style and tell me what it would be in paise."
The agent will autonomously pick the right tool. You'll see the tool call and its structured JSON response inline.
pip install -e ".[dev]"
pytest tests/ -v17 unit tests cover all offline validators including a self-consistency test for the GSTIN mod-36 checksum.
RELIANCE.NS-style tickersOpen an issue on GitHub if you want any of these prioritized.
When Razorpay launched their MCP server, they framed it as "designed for an AI-first world." That framing is right — but transactions are only half the picture. Half the engineering effort in any Indian fintech goes into validation, enrichment, and lookups that an AI agent can't reliably hallucinate. That's the gap BharatPay fills.
If you're building AI tools for Indian fintech and you find a utility missing, open an issue or send a PR.
MIT — see LICENSE. All upstream APIs (Razorpay IFSC, India Post, AMFI) are themselves free and publicly available under their respective terms.
Built by Angelina Gupta · April 2026
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.