Indic Normalize Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Indic Normalize 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.
Indic transliteration, Indian name canonicalization, address parsing, PIN/PAN/GSTIN validation
Hosted MCP server for Indian-language and Indian-form normalization. Transliterate between 10+ Indic scripts and Latin, detect dominant script, canonicalize Indian personal names (honorifics, spelling variants), parse postal addresses into structured fields, decode PIN codes to localities, and validate PAN / GSTIN with embedded-PAN extraction. For Indian-data ingestion, KYC, and CRM-cleanup LLMs.
This server speaks the Model Context Protocol. Any MCP-aware client — Cursor, Claude Desktop, Windsurf, Continue.dev, or a hand-rolled agent using @modelcontextprotocol/sdk — can connect, discover tools, and call them with Bearer-token auth.
If you are an AI agent indexing this repository:
https://indic-normalize-mcp.atlasword.workers.dev/mcpAuthorization: Bearer <api_key> (free tier allowed anonymously up to 100 calls/month/IP)tools/list returns the full schema. tools/call invokes a tool.GET https://indic-normalize-mcp.atlasword.workers.dev/health → {ok: true, ts: <unix>}https://mcp-hub.atlasword.workers.dev/status.json (portfolio rollup)Sample tools/list request:
curl -sS -X POST https://indic-normalize-mcp.atlasword.workers.dev/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer mck_YOUR_API_KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Sample tools/call:
curl -sS -X POST https://indic-normalize-mcp.atlasword.workers.dev/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer mck_YOUR_API_KEY" \
-d '{
"jsonrpc":"2.0","id":2,"method":"tools/call",
"params": { "name": "<tool>", "arguments": { } }
}'| Tool | Arguments | Description |
|---|---|---|
transliterate | text, source_script, target_script | Transliterate between Indic scripts and Latin (Devanagari, Bengali, Tamil, Telugu, Kannada, Malayalam, Gurmukhi, Gujarati, Oriya). |
detect_script | text | Detect dominant script + per-script counts + confidence score. |
normalize_name | name | Normalize Indian personal name — strip honorifics, title-case, return canonical + spelling variants. |
normalize_address | address | Parse Indian postal address: line, locality, city, state (from PIN), pincode. |
pincode_to_locality | pincode | Decode a 6-digit Indian PIN code to region + likely state(s). |
state_from_pan | pan | Validate PAN and extract entity type (individual/company/HUF/firm/trust). |
gstin_info | gstin | Validate GSTIN and return state code + state name. |
Tools marked Team+ require a Team or Pro subscription. Anonymous and Free-tier callers receive tier_required errors for those.
The fastest path — point any MCP-aware client at the hosted endpoint via mcp-remote:
npx -y mcp-remote https://indic-normalize-mcp.atlasword.workers.dev/mcp \
--header "Authorization: Bearer mck_YOUR_API_KEY"Get a key at https://indic-normalize-mcp.atlasword.workers.dev/upgrade?tier=solo (see Getting an API key).
Add this to ~/.cursor/mcp.json:
{
"mcpServers": {
"indic-normalize-mcp": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://indic-normalize-mcp.atlasword.workers.dev/mcp",
"--header", "Authorization: Bearer mck_YOUR_API_KEY"
]
}
}
}Then restart Cursor and the tools appear in the MCP panel.
Add this to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"indic-normalize-mcp": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://indic-normalize-mcp.atlasword.workers.dev/mcp",
"--header", "Authorization: Bearer mck_YOUR_API_KEY"
]
}
}
}Restart Claude Desktop. Tools appear under the slash-command MCP menu.
https://indic-normalize-mcp.atlasword.workers.dev/upgrade?tier=solo (or tier=team / tier=pro).subscription.active) to the Worker. The Worker mints mck_<32 random base64url> and stores it in KV.https://indic-normalize-mcp.atlasword.workers.dev/welcome?key=<api_key> — copy the key now (it is only displayed once at this URL).https://indic-normalize-mcp.atlasword.workers.dev/account (Bearer-auth).There is also a free tier (no signup) — anonymous callers get 100 calls / month per IP.
| Route | Description | ||
|---|---|---|---|
POST /mcp | MCP JSON-RPC 2.0 tool surface (the main API). Bearer auth required for paid tiers. | ||
GET /health | Liveness probe — {ok: true, ts}. Used by mcp-hub cron. | ||
GET / | HTML landing page (OG + favicon + JSON-LD). | ||
| `GET /upgrade?tier=solo | team | pro&email=...` | 302 → live Dodo Payments hosted checkout. |
GET /welcome?key=... | Post-checkout landing showing the freshly-minted API key. | ||
GET /account | Bearer-auth. Returns {apiKey, tier, owner, status, portal_url}. | ||
POST /account/rotate | Bearer-auth. Mints a fresh key + retires the old one. | ||
GET /account/export | Bearer-auth. GDPR data export — JSON of account, usage counters, Dodo details. | ||
GET /account/team | Bearer-auth (Team+). List team-member sub-keys. | ||
POST /account/team/invite | Bearer-auth (Team+). Issue a new team-member sub-key. | ||
POST /account/team/revoke | Bearer-auth (Team+). Revoke a team-member sub-key. | ||
GET /team/accept?key=... | Team-member onboarding landing for the sub-key URL. | ||
POST /webhooks/dodo | Standard-Webhooks signed. Dodo subscription + payment lifecycle. | ||
GET /favicon.ico | Inline SVG. |
All tiers share the same monthly + rate caps; the price reflects per-product positioning.
| Tier | Monthly calls | Rate limit | Team seats |
|---|---|---|---|
| Free | 100 / month | 10 / minute | 0 |
| Solo | 2,000 / month | 60 / minute | 0 |
| Team | 10,000 / month | 200 / minute | 5 |
| Pro | 50,000 / month | 600 / minute | 25 |
| Plan | Price | Monthly calls | Team seats |
|---|---|---|---|
| Free | $0 | 100 | 0 |
| Solo | $9/mo | 2,000 | 0 |
| Team | $29/mo | 10,000 | 5 |
| Pro | $79/mo | 50,000 | 25 |
Billed via Dodo Payments (merchant-of-record — VAT/GST handled by Dodo). Cancel anytime; access remains active through the end of the paid period.
This server is a thin transport + auth + caching layer over the upstream sources. Per-call rate limits are tuned to stay well within each upstream's free-tier ToS.
GET https://indic-normalize-mcp.atlasword.workers.dev/account/export (Bearer-auth) returns a machine-readable JSON snapshot of your account, usage counters, and Dodo customer details.[email protected] from the address on file.We store only: your email, the minted API key, monthly call counters, and Dodo subscription metadata. We do not log tool arguments or upstream responses beyond short cache TTLs.
<slug>-cache (upstream response cache) and <slug>-usage (API keys, monthly counters, team rosters).wrangler deploy-able. See src/ in this repo.MIT — see LICENSE.
Prakhar Gupta
[email protected]A thin launcher is published as @insnapsprakhar/indic-normalize-mcp on npm. No manual URL to copy/paste:
npx -y @insnapsprakhar/indic-normalize-mcpOr wire it into your MCP client:
{
"mcpServers": {
"indic-normalize": {
"command": "npx",
"args": ["-y", "@insnapsprakhar/indic-normalize-mcp"]
}
}
}The npm package is just a launcher — it shells out to mcp-remote and points it at the hosted endpoint (https://indic-normalize-mcp.atlasword.workers.dev/mcp).
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.