An MCP server for Indian business data: IFSC, PIN code, GSTIN, PAN validation
Server has 10 well-defined tools with consistent naming (verb_noun pattern: lookup_*, validate_*, check_*, calculate_*, verify_*, bulk_*). All tools have descriptions (avg ~150 chars, within 10-1024 range). Input schemas are present and properly typed with required fields. However, output schemas are NOT documented, LLMs cannot predict return structure. Parameter descriptions are adequate but lack format constraints (e.g., pincode format, GSTIN checksum rules). No error handling guidance visible. No tool annotations (readOnlyHint, etc.). Bulk tools cap at 50 items but don't document pagination or result limits in descriptions. Missing: output schema documentation, error recovery guidance, parameter format constraints.
Performs real-time lookups for multiple IFSC bank branch codes in bulk (maximum 50 items). Returns cached or live branch details.
Validates a list of GSTINs in bulk (maximum 50 items). Returns status, extracted PAN, entity type, and state information for each.
Validates a list of PAN card numbers in bulk (maximum 50 items). Returns structural status and legal entity types.
Calculates GST (CGST, SGST, IGST) breakdown based on transaction amount, GST rate, seller's GSTIN and buyer's location/state. Determines inter-state vs intra-state routing automatically.
Checks if a given Indian PIN code is serviceable based on lists of allowed states or districts. Extremely useful for e-commerce checkout and shipping verification.
Retrieves details about an Indian bank branch using its IFSC code (e.g. Bank Name, Branch, Address, Contact, and features like UPI, RTGS, NEFT, IMPS support). Uses caching to optimize response times.
Output schemas not documented. LLMs cannot predict return structure (fields, types, nested objects). Breaks downstream tool chaining and forces agents to guess field names.
No error handling guidance. Tools lack recovery hints (e.g., 'Invalid GSTIN format. Expected 15 chars, got X. Try validate_pan() if you have a PAN instead'). Agents cannot self-correct on failures.
Parameter format constraints missing. 'ifsc' param lacks pattern (11 chars, uppercase). 'pincode' lacks pattern (6 digits). 'gstin' lacks checksum validation hint. Descriptions should state: 'The 11-character IFSC code (uppercase letters + digits, e.g., HDFC0000123)'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Retrieves location details for an Indian Postal PIN code (e.g., Post Office name, Block, Circle, District, State). Uses caching to optimize response times.
Validates the structure, format, and checksum of a GSTIN (Goods and Services Tax Identification Number), and extracts the State, PAN, Entity Type, and Checksum status.
Validates the format and structure of a Permanent Account Number (PAN), and extracts the legal entity/holder type (e.g., Individual, Company, Firm, Trust).
Evaluates an Indian contractor/freelancer for onboarding tax and compliance. Performs structural checks on PAN and GSTIN, matches them, extracts entity type, and computes Section 194J/194C TDS (withholding tax) brackets.
Bulk tools (bulk_validate_gstins, bulk_validate_pans, bulk_lookup_ifsc) cap at 50 items but descriptions don't state this limit. Per-item success/failure not documented, if 1 of 50 fails, does the tool return partial results or error entirely?
No tool annotations (readOnlyHint, idempotentHint). All tools are read-only and idempotent, but LLMs cannot infer this. Add annotations to enable safe retry logic and caching.