Overview
Tax ID Validator works by analyzing the format and structure of US Tax IDs, validating checksums and rules for SSN, EIN, and ITIN. It detects the type automatically, validates against known invalid patterns, and returns formatted and masked versions.
Live Test Tax ID Validation Skill Skill →
The tool
Once your client is connected to the VerveKit server, this appears in its tool list as TaxIDValidationSkill. 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": "TaxIDValidationSkill",
"arguments": {
"taxid": "123-45-6789"
}
}You do not name the tool yourself; the model picks it. Asking about 123-45-6789 in the terms this skill covers is enough for it to reach for TaxIDValidationSkill on its own — naming it explicitly also works, and is the way to force the call.
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 |
|---|---|---|
taxidRequired | string | The US Tax ID to validate (SSN, EIN, or ITIN format) |
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": {
"valid": true,
"taxid": "123-45-6789",
"type": "SSN",
"type_full": "Social Security Number",
"format": "XXX-XX-XXXX",
"normalized": "123-45-6789",
"digits_only": "123456789",
"masked": "***-**-6789",
"last4": "6789",
"is_placeholder": true,
"validation_details": {
"format_valid": true,
"area_number_valid": true,
"group_number_valid": true,
"serial_number_valid": true
},
"risk_score": 35,
"risk_level": "medium",
"error": 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 |
|---|---|---|---|
valid | boolean | true | Whether the Tax ID passed validation checks |
taxid | string | 123-45-6789 | The formatted Tax ID with standard formatting applied |
typePremium | string | SSN | Abbreviated Tax ID type: SSN, EIN, or ITIN |
type_fullPremium | string | Social Security Number | Full name of Tax ID type like Social Security Number |
formatPremium | string | XXX-XX-XXXX | Expected format pattern for the Tax ID type |
normalized | string | 123-45-6789 | Tax ID normalized to standard format with hyphens |
digits_only | string | 123456789 | Tax ID with all non-numeric characters removed |
masked | string | ***-**-6789 | Tax ID with sensitive digits masked for privacy protection |
last4 | string | 6789 | Last four digits of the Tax ID only |
is_placeholderPremium | boolean | true | Whether the number is obvious filler (all-identical digits or a simple sequence like 123-45-6789) — true even when it structurally validates |
validation_details | object | {…} | |
validation_details.format_validPremium | boolean | true | Whether the Tax ID matches the expected format |
validation_details.area_number_validPremium | boolean | true | Whether SSN area number is valid (first three digits) |
validation_details.group_number_validPremium | boolean | true | Whether SSN group number is valid (middle two digits) |
validation_details.serial_number_validPremium | boolean | true | Whether SSN serial number is valid (last four digits) |
risk_scorePremium | number | 35 | Composite 0-100 risk score combining structural validity and placeholder detection (higher is riskier) |
risk_levelPremium | string | medium | Risk band derived from the score: low, medium or high |
error | object | null | Error message if validation failed, otherwise null |
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 10 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Use cases
- Form Validation
- Validate Tax IDs in online forms and applications to ensure correct format before submission
- Compliance
- Verify Tax ID format compliance for tax reporting, payroll processing, and financial services
- Data Quality
- Validate Tax IDs in databases during data cleaning and migration to identify invalid entries
- Identity Verification
- Check Tax ID format as part of identity verification processes while maintaining privacy with masking
Other ways to use Tax ID Validation Skill
Set up Tax ID Validation 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 Text Processing: