Overview
Each IMEI is assembled from three parts. The first eight digits are a Type Allocation Code taken from a TAC reference table that pairs each code with a manufacturer and model. Six random digits follow as the serial number. The fifteenth digit is the Luhn check digit computed over the first fourteen, doubling every second digit starting from the rightmost, so the result passes any standard IMEI checksum validator.
`brand` filters the TAC table before a device is picked, using a case-insensitive substring match on the manufacturer name, so `sam` matches Samsung. Without it, any entry in the table can be chosen. If no manufacturer matches, the request returns a 400. The `brand` field in the response echoes the filter, or `any` when none was given.
The serial is random and is not checked against any registry, so a generated IMEI uses a real model's TAC but is not tied to a real handset. Use the output as test data only; do not use it to identify or register devices.
`count` sets how many IMEIs are generated, from 1 to 5, and is a paid-plan parameter; on the Free plan it is ignored and one IMEI is returned. Each entry in `imeis` carries `imei`, `serial`, `checksum` and `isValid`, which is always true because every number is built to pass the check. `tac`, `manufacturer` and `model` are null on the Free plan.
Live Test IMEI Generator Skill Skill →
The tool
Once your client is connected to the VerveKit server, this appears in its tool list as IMEIGeneratorSkill. 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": "IMEIGeneratorSkill",
"arguments": {}
}Connecting
One server URL covers every skill 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": {
"vervekit": {
"url": "https://api.vervekit.com/v1/mcp"
}
}
}https://api.vervekit.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 |
|---|---|---|
brandOptional | string | Filter by manufacturer brand (e.g., Samsung, Apple, Nokia) |
countOptionalPremium | integer | Number of IMEIs to generate default 1 · range 1–5 |
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": {
"count": 2,
"brand": "Samsung",
"imeis": [
{
"imei": "358398048517203",
"tac": "35839804",
"manufacturer": "Samsung",
"model": "Galaxy Xcover",
"serial": "851720",
"checksum": "3",
"isValid": true
},
{
"imei": "359040029448038",
"tac": "35904002",
"manufacturer": "Samsung",
"model": "SGH-B130",
"serial": "944803",
"checksum": "8",
"isValid": true
}
]
}
}
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 |
|---|---|---|---|
count | number | 2 | Number of IMEIs returned |
brand | string | Samsung | Manufacturer the reporting body identifier belongs to |
imeis | array[2] | Array of generated IMEI objects | |
imeis.0.imei | string | 358398048517203 | 15-digit IMEI number with valid Luhn checksum |
imeis.0.tacPremium | string | 35839804 | Type Allocation Code (first 8 digits) |
imeis.0.manufacturerPremium | string | Samsung | Device manufacturer name |
imeis.0.modelPremium | string | Galaxy Xcover | Device model identifier |
imeis.0.serial | string | 851720 | Serial portion of the IMEI, unique within the model |
imeis.0.checksum | string | 3 | Luhn check digit closing the IMEI |
imeis.0.isValid | boolean | true | Whether the generated IMEI passes the Luhn check |
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 skill is not part of VerveKit. Check the catalog. |
429 | Out of credits, or a brief rate limit. The message tells them apart. |
A call costs 1 credit each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Use cases
- Testing & QA
- Generate valid IMEI numbers for testing mobile device management systems and applications
- Development
- Create test data for mobile device registration and tracking systems during development
- Data Generation
- Generate realistic IMEI numbers for database seeding and mock data creation
- Validation Testing
- Test IMEI validation logic with properly formatted and checksummed IMEI numbers
Other ways to use IMEI Generator Skill
Set up IMEI Generator Skill on VerveKit, or reach the same source a different way. Your VerveKit account and credits work on all of them — one key, one balance.
Related
More in Data Generation: