Overview
A BIN lookup API with a free plan: send the first six to eight digits of a card as the bin parameter. The API resolves the BIN against payment card records and returns the card network, card type, issuing bank name and issuing country, plus the number rules for that scheme: valid card lengths, whether the Luhn check applies, and the security code name and size. Paid plans add the card category, the issuer phone and website where the bank has published them, ISO alpha-2, alpha-3 and numeric country codes, the country currency and flag, and coordinates.
Live Test BIN Grounding Data for AI Agents Source →
The tool
Once your client is connected to the VerveContext server, this appears in its tool list as BINGroundingDataforAIAgents. It is read-only and open-world — it fetches and never mutates anything on your side — so most clients call it without asking you to confirm.
{
"name": "BINGroundingDataforAIAgents",
"arguments": {
"bin": "448590"
}
}You do not name the tool yourself; the model picks it. Asking about 448590 in the terms this source covers is enough for it to reach for BINGroundingDataforAIAgents on its own — naming it explicitly also works, and is the way to force the call.
Connecting
One server URL covers every source in the catalog, including this one. Authorization is OAuth: the client opens a browser once, and there is no key to paste into a config file.
{
"mcpServers": {
"vervecontext": {
"url": "https://api.vervecontext.com/v1/mcp"
}
}
}https://api.vervecontext.com/v1/mcpPer-client setup — Claude, Cursor, VS Code, ChatGPT — is on the MCP setup page.
Arguments
These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made. Premium arguments are accepted on every plan but only take effect on plans that include them.
| Argument | Type | Description |
|---|---|---|
binRequired | string | The first six digits of the credit card number (BIN) length 6–8 |
ipOptional | string | Optional IP address of the customer paying with the card. When given, customerIp says which country the IP is in and whether it matches the country that issued the card ip |
What the model gets back
The result carries a structuredContent object matching the tool's declared outputSchema, so a client reads fields without parsing prose. status is "ok" and error is null on success; a null field means the value was not available for that input, not that the call failed.
{
"status": "ok",
"error": null,
"data": {
"bin": "448590",
"brand": "VISA",
"type": "CREDIT",
"category": "PURCHASING",
"country": "UNITED STATES",
"issuer": {
"name": "JPMORGAN CHASE BANK N.A. - COMMERCIAL",
"country": "UNITED STATES",
"phone": null,
"website": null
},
"location": {
"latitude": "37.0902",
"longitude": "-95.7129",
"alpha2": "US",
"alpha3": "USA",
"numeric": "840",
"currency": "USD",
"currencies": [
"USD"
],
"flag": "🇺🇸",
"isEU": false,
"isEEA": false,
"isSEPA": false
},
"number": {
"scheme": "visa",
"lengths": [
16,
18,
19
],
"luhn": true,
"code": {
"name": "CVV",
"size": 3
}
},
"customerIp": null
}
}
Response fields
Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.
| Field | Type | Example | Description |
|---|---|---|---|
bin | string | 448590 | The BIN number provided in the request |
brand | string | VISA | Card brand (VISA, Mastercard, American Express, etc.) |
type | string | CREDIT | Card type (CREDIT or DEBIT) |
categoryPremium | string | PURCHASING | Card category (PURCHASING, TRAVEL, etc.) |
country | string | UNITED STATES | Country where card was issued |
issuer | object | {…} | The issuing bank: name, country, phone and website |
issuer.name | string | JPMORGAN CHASE BANK N.A. - COMMERCIAL | Full name of the issuing bank |
issuer.countryPremium | string | UNITED STATES | Country where issuer is located |
issuer.phonePremium | object | null | Contact phone number of the issuer |
issuer.websitePremium | object | null | Official website URL of the issuer |
location | object | {…} | Issuing country coordinates and ISO codes |
location.latitudePremium | string | 37.0902 | Latitude coordinate of issuer location |
location.longitudePremium | string | -95.7129 | Longitude coordinate of issuer location |
location.alpha2Premium | string | US | Two-letter ISO country code of location |
location.alpha3Premium | string | USA | Three-letter ISO country code of location |
location.numericPremium | string | 840 | ISO 3166-1 numeric code of the issuing country (e.g. 208 for Denmark) |
location.currencyPremium | string | USD | ISO 4217 code of the issuing country's currency (e.g. DKK), or null when the country uses more than one |
location.currenciesPremium | array | ["USD"] | Every ISO 4217 currency code in use in the issuing country |
location.flagPremium | string | 🇺🇸 | Flag emoji of the issuing country |
location.isEU | boolean | false | Whether the issuing country is an EU member state |
location.isEEA | boolean | false | Whether the issuing country is in the European Economic Area (the EU plus Iceland, Liechtenstein and Norway) |
location.isSEPA | boolean | false | Whether the issuing country is in the Single Euro Payments Area (SEPA), per the European Payments Council |
number | object | {…} | Card number rules for the scheme this BIN belongs to, or nulls if the prefix matches no single scheme |
number.scheme | string | visa | Machine-readable scheme id matched from the BIN prefix (visa, mastercard, american-express, discover, jcb, unionpay, etc.) |
number.lengths | array | [16,18,19] | Valid card number lengths for the scheme, in digits (e.g. [16, 18, 19] for Visa) |
number.luhn | boolean | true | Whether card numbers in this scheme are checked with the Luhn checksum (false for UnionPay, where it is not guaranteed) |
number.code | object | {…} | Security code the scheme uses |
number.code.name | string | CVV | Name of the security code (CVV, CVC, CID, etc.) |
number.code.size | number | 3 | Number of digits in the security code |
customerIpPremium | object | null | Where the customer IP passed in ip is, compared with the card's issuing country. A card used from a different country than the one that issued it is a common fraud signal. Null when no ip is sent |
Why ground on it
A model can produce something that looks like this answer from its training data, and be confidently out of date or simply wrong. This source returns the current value in a shape you can check, which is the difference between an answer you can cite and one you have to hedge.
Point an evaluation at brand: it is the field most worth pinning a claim to, and it is either present and current or absent — never plausibly invented.
Failure modes
Errors come back as tool errors carrying a sentence the model can act on, not a bare status code. Error handling covers the full list.
| Status | What it means |
|---|---|
400 / 422 | The arguments did not validate. The message names the offending one. |
401 | The OAuth session is invalid or expired — reconnect the server. |
403 | Blocked by a key restriction or an IP allow-list. Never a bad identity. |
404 | This source is not part of VerveContext. Check the catalog. |
429 | Out of credits, or a brief rate limit. The message tells them apart. |
A call costs 10 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Use cases
- Checkout Brand Detection
- Display the matching Visa or Mastercard logo automatically when customers type the first six digits into your checkout form.
- Debit vs Credit Routing
- Apply different fees, limits or review rules to debit and credit cards before you run the authorization.
- Debit Fee Optimization
- Route transactions through lower-cost debit payment rails whenever the lookup confirms an incoming debit card.
- Billing Country Mismatch
- Flag suspicious orders for manual review if the card issuing country does not match the customer billing address.
Other ways to use BIN Grounding Data for AI Agents
Set up BIN Grounding Data for AI Agents on VerveContext, or reach the same source a different way. Your VerveContext account and credits work on all of them — one key, one balance.
Related
More in Finance: