{"openapi":"3.1.0","info":{"title":"Bharat API","version":"0.1.0","description":"Indian reference data: PIN codes, IFSC, GSTIN/PAN/Aadhaar checks, vehicle plates, holidays, PIB releases, UPI handles, amounts in words, STD codes, states — read-only, keyless.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://bharat.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/bharat/docs"},"termsOfService":"https://connectorbay.com/bharat/terms"},"servers":[{"url":"https://bharat.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/bharat/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/pincode":{"post":{"operationId":"pincode","summary":"Every post office under a PIN code with district, state, postal division/region/circle and whether it delivers. Use for","description":"Every post office under a PIN code with district, state, postal division/region/circle and whether it delivers. Use for\n    \"where is PIN 560034\", \"which district is 400001 in\", \"post offices in 110001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"pin":{"description":"6-digit PIN code.","examples":["110001","560034"],"title":"Pin","type":"string"}},"required":["pin"],"title":"pincodeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/post_office":{"post":{"operationId":"post_office","summary":"Find a PIN code from a post office or locality name — all matching post offices with their PINs, districts and states.","description":"Find a PIN code from a post office or locality name — all matching post offices with their PINs, districts and states.\n    Use for \"PIN code of Koramangala\", \"what's the pincode for Connaught Place\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Post office / locality name.","examples":["Connaught Place","Koramangala"],"title":"Name","type":"string"}},"required":["name"],"title":"post_officeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/ifsc":{"post":{"operationId":"ifsc","summary":"A bank branch from its IFSC: bank, branch, address, city/district/state, MICR, SWIFT, and whether it supports NEFT, RTGS","description":"A bank branch from its IFSC: bank, branch, address, city/district/state, MICR, SWIFT, and whether it supports NEFT, RTGS,\n    IMPS and UPI. Use for \"which branch is SBIN0000691\", \"is this IFSC valid\", \"does HDFC0000001 support RTGS\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"code":{"description":"11-character IFSC.","examples":["HDFC0000001","SBIN0000691"],"title":"Code","type":"string"}},"required":["code"],"title":"ifscArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/validate_gstin":{"post":{"operationId":"validate_gstin","summary":"Check a GSTIN's format and checksum and decode it: state, the PAN inside it and the holder type (company, individual,","description":"Check a GSTIN's format and checksum and decode it: state, the PAN inside it and the holder type (company, individual,\n    firm…), and the registration number. Format/checksum only — it does not confirm registration or active status. Use for\n    \"is this GSTIN valid\", \"which state is 29ABCDE1234F1Z5 from\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"gstin":{"description":"15-character GSTIN.","examples":["27AAPFU0939F1ZV"],"title":"Gstin","type":"string"}},"required":["gstin"],"title":"validate_gstinArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/validate_pan":{"post":{"operationId":"validate_pan","summary":"Check a PAN's format and decode its holder type (individual, company, HUF, firm, trust, government…) from the 4th","description":"Check a PAN's format and decode its holder type (individual, company, HUF, firm, trust, government…) from the 4th\n    character. Format only; returned masked. Use for \"is ABCDE1234F a valid PAN\", \"is this PAN a company's\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"pan":{"description":"10-character PAN.","examples":["ABCDE1234F"],"title":"Pan","type":"string"}},"required":["pan"],"title":"validate_panArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/validate_aadhaar":{"post":{"operationId":"validate_aadhaar","summary":"Check whether a 12-digit number can be an Aadhaar (format + Verhoeff checksum). No lookup is possible or attempted; the","description":"Check whether a 12-digit number can be an Aadhaar (format + Verhoeff checksum). No lookup is possible or attempted; the\n    number is returned masked and not stored. Use for \"does this Aadhaar number check out\" — and prefer asking only for the\n    last four digits.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"number":{"description":"12-digit Aadhaar number (spaces allowed).","examples":["2345 6789 0123"],"title":"Number","type":"string"}},"required":["number"],"title":"validate_aadhaarArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/vehicle_registration":{"post":{"operationId":"vehicle_registration","summary":"Decode an Indian number plate: state/UT, RTO code and office (major offices named), series and number; recognises the","description":"Decode an Indian number plate: state/UT, RTO code and office (major offices named), series and number; recognises the\n    BH (Bharat) series and old state codes (TS/TG, OR/OD, UA/UK, DN/DD). Use for \"where is MH12 from\", \"what does BH on a\n    plate mean\", \"which RTO is KA05\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"plate":{"description":"Registration number, e.g. 'MH 12 AB 1234', 'DL3CAB1234', '22 BH 1234 AA'.","examples":["MH12AB1234","22BH1234AA"],"title":"Plate","type":"string"}},"required":["plate"],"title":"vehicle_registrationArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/upi_id":{"post":{"operationId":"upi_id","summary":"Check a UPI ID's format and identify the app and bank behind its handle (@ybl = PhonePe/Yes Bank, @okaxis = Google","description":"Check a UPI ID's format and identify the app and bank behind its handle (@ybl = PhonePe/Yes Bank, @okaxis = Google\n    Pay/Axis, @paytm…, 85 handles). Does not check whether the ID is active. Use for \"which app is @ibl\", \"is this a valid\n    UPI ID\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"vpa":{"description":"A UPI ID / VPA like 9876543210@ybl or shop@okaxis.","examples":["9876543210@ybl"],"title":"Vpa","type":"string"}},"required":["vpa"],"title":"upi_idArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/holidays":{"post":{"operationId":"holidays","summary":"India's holidays and observances for a year or month: date, weekday, name and type (public holiday vs observance), from","description":"India's holidays and observances for a year or month: date, weekday, name and type (public holiday vs observance), from\n    the national calendar. Use for \"holidays in October 2026\", \"is 2 October a holiday\", \"how many public holidays next year\".\n    State-specific holidays vary; this is the national list.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"year":{"anyOf":[{"maximum":2035,"minimum":2015,"type":"integer"},{"type":"null"}],"default":null,"description":"Year (default: current).","title":"Year"},"month":{"anyOf":[{"maximum":12,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Month 1–12 to filter.","title":"Month"},"kind":{"default":"public","description":"'public' (gazetted/public holidays), 'observance' or 'all'.","examples":["public"],"title":"Kind","type":"string"}},"title":"holidaysArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/press_releases":{"post":{"operationId":"press_releases","summary":"The latest Press Information Bureau releases from the Government of India — title and link, newest first, optionally","description":"The latest Press Information Bureau releases from the Government of India — title and link, newest first, optionally\n    filtered by keyword. Use for \"what did the government announce today\", \"PIB releases about railways\", \"any release on\n    GST\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Keyword(s) to filter titles by: 'railways', 'UPI', 'monsoon'. Omit for the latest of everything.","title":"Query"},"limit":{"default":15,"description":"Max releases (1–50).","maximum":50,"minimum":1,"title":"Limit","type":"integer"}},"title":"press_releasesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/amount_in_words":{"post":{"operationId":"amount_in_words","summary":"A number in the Indian system — words (lakh, crore) and grouping (₹1,23,45,678.50) — alongside the international form","description":"A number in the Indian system — words (lakh, crore) and grouping (₹1,23,45,678.50) — alongside the international form\n    (million, billion). Use for cheques, invoices and \"how much is 2.5 crore in dollars-style digits\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"amount":{"description":"Amount in rupees (or any number).","examples":[12345678.5],"title":"Amount","type":"number"},"currency":{"default":true,"description":"Phrase as rupees and paise.","title":"Currency","type":"boolean"}},"required":["amount"],"title":"amount_in_wordsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/std_code":{"post":{"operationId":"std_code","summary":"STD (landline area) code for a city, or the city for a code — the 100+ largest cities. Use for \"STD code of Pune\",","description":"STD (landline area) code for a city, or the city for a code — the 100+ largest cities. Use for \"STD code of Pune\",\n    \"which city is 0484\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"A city name or an STD code (with or without the leading 0).","examples":["Pune","020"],"title":"Query","type":"string"}},"required":["query"],"title":"std_codeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/states":{"post":{"operationId":"states","summary":"Facts for India's 28 states and 8 union territories: capital, ISO 3166-2, GST state code, vehicle registration code,","description":"Facts for India's 28 states and 8 union territories: capital, ISO 3166-2, GST state code, vehicle registration code,\n    official languages and zone. Use for \"GST code for Karnataka\", \"which state is code 27\", \"capital of Nagaland\", \"list the\n    union territories\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A state/UT name, capital, ISO code (MH), GST code (27), vehicle code, or zone (South). Omit for all 36.","title":"Query"}},"title":"statesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}