Skip to main content
Glama
uttkarsh-26

ifsc-mcp

by uttkarsh-26

Search branches by bank, city, state or branch name

search_branches
Read-onlyIdempotent

Find bank branches by bank code, city, state, or branch name when the IFSC code is unknown. Returns matching branch records with pagination metadata.

Instructions

Find bank branches when you have a bank, city, state or branch name but no IFSC.

Filters are ANDed. At least one of bank_code, city, state or branch is required - an unfiltered search is rejected with INVALID_INPUT because the dataset has ~170k rows and no endpoint supports listing all of them.

Returns ok: true with: branches (each row shaped like an ifsc_lookup result), count (total matches upstream), has_next (true when more pages exist), and the echoed query.

Prefer this over bank_directory when the user wants a branch; use bank_directory when they want a bank.

Args: bank_code: 4-letter bank code filter. city: City name filter. state: ISO 3166-2 state code filter, e.g. "IN-MH". branch: Exact branch-name filter. limit: Page size, 1-100 (default 10). offset: Row offset, for pagination.

Returns: Matching branches with pagination metadata, or a structured error payload.

Example: Ask "which Kotak branches are in Gurgaon?" -> call search_branches(bank_code="KKBK", city="GURGAON", limit=5).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cityNoOptional city name exactly as the dataset spells it, e.g. 'MUMBAI', 'CHENNAI'. Case-insensitive. If no results come back, list the correct spelling with branch_places.
limitNoRows to return, 1-100. Defaults to 10.
stateNoOptional Indian state as an ISO 3166-2 code prefixed with 'IN-', e.g. 'IN-MH' for Maharashtra, 'IN-KA' Karnataka, 'IN-TN' Tamil Nadu. Not the full state name. List valid codes with branch_places.
branchNoOptional exact branch name as the dataset spells it, e.g. 'TULSIANI CHMBRS - NARIMAN PT'. Use branch_places to discover the exact spelling rather than guessing.
offsetNoRow offset for paging through results.
bank_codeNoOptional 4-letter bank code to filter by, e.g. 'HDFC', 'SBIN', 'KKBK'. Get one from bank_directory first. Uppercased for you.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/idempotent/openWorld), the description discloses filter-combination semantics ('Filters are ANDed'), the rejection behavior and its error code (INVALID_INPUT with an unfiltered search), the reason (~170k rows, no list-all endpoint), and pagination fields (count, has_next). This is exactly the behavioral context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, requirement and sibling routing before the details, which is good structure. However, the 'Args' and 'Returns' blocks substantially duplicate the 100%-coverage schema and the output schema, so some sentences do not fully earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given six optional params, a rich output schema, and a need to disambiguate from bank_directory and branch_places, the description covers use case, preconditions, error behavior, return shape and a concrete example. An agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by adding cross-parameter meaning absent from the schema — that filters are ANDed and that at least one filter must be supplied. The per-argument list largely restates the schema, so it does not climb higher.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first line states a specific verb (Find) and resource (bank branches) plus the exact situation that triggers it ('when you have a bank, city, state or branch name but no IFSC'). It also explicitly contrasts itself with the sibling bank_directory, so an agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative (bank_directory) and the condition that selects it ('Prefer this... when the user wants a branch; use bank_directory when they want a bank'), and states the hard precondition that at least one of bank_code/city/state/branch is required. Exclusions and alternatives are both explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.