Overview
Age Calculator works by analyzing the date of birth provided and calculating the age. It uses advanced algorithms to calculate the age based on the date of birth and returns the calculated age.
Live Test Age Calculator Skill Skill →
The tool
Once your client is connected to the VerveKit server, this appears in its tool list as AgeCalculatorSkill. 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": "AgeCalculatorSkill",
"arguments": {
"dob": "1990-08-02"
}
}You do not name the tool yourself; the model picks it. Asking about 1990-08-02 in the terms this skill covers is enough for it to reach for AgeCalculatorSkill 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 |
|---|---|---|
dobRequired | string | The date of birth to calculate the age from (format: YYYY-MM-DD) date |
timezoneOptional | string | IANA timezone used to interpret the date of birth and to determine "today" when computing the age default America/Chicago · timezone |
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": {
"dob": "1990-01-01",
"age_breakdown": {
"years": 35,
"months": 431,
"weeks": 1876,
"days": 13133,
"hours": 315208,
"minutes": 18912499,
"seconds": 1134749976
},
"age_words": {
"years": "thirty-five",
"ordinal": "thirty-fifth",
"full": "thirty-five years old",
"locale": "en-US"
},
"timezone": "America/Chicago",
"locale": "en-US",
"next_birthday": {
"months": 0,
"weeks": 2,
"days": 15,
"hours": 367,
"minutes": 22060,
"seconds": 1323623
},
"insights": {
"generation": "Millennial",
"zodiacSign": "Capricorn",
"chineseZodiac": "Horse",
"birthstone": "Garnet",
"dayOfWeekBorn": "Monday",
"isLeapYearBirth": false,
"milestones": {
"canVoteUS": true,
"canDrinkUS": true,
"canRentCarUS": true,
"seniorDiscount": false
}
}
}
}
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 |
|---|---|---|---|
dob | string | 1990-01-01 | Date of birth as provided in request (format: YYYY-MM-DD) |
age_breakdown | object | {…} | Age expressed in years, months, weeks, days, hours, minutes, and seconds |
age_breakdown.years | number | 35 | Person's age in complete years |
age_breakdown.months | number | 431 | Total age in months |
age_breakdown.weeks | number | 1876 | Total age in weeks |
age_breakdown.days | number | 13133 | Total age in days |
age_breakdown.hours | number | 315208 | Total age in hours |
age_breakdown.minutes | number | 18912499 | Total age in minutes |
age_breakdown.seconds | number | 1134749976 | Total age in seconds |
age_words | object | {…} | Age expressed in words (e.g., thirty-five years old) |
age_words.years | string | thirty-five | Age in written word form (e.g., thirty-five) |
age_words.ordinal | string | thirty-fifth | Age in ordinal word form (e.g., thirty-fifth) |
age_words.full | string | thirty-five years old | Age as complete phrase (e.g., thirty-five years old) |
age_words.locale | string | en-US | Locale used for word generation (e.g., en-US) |
timezone | string | America/Chicago | Timezone associated with the calculation (e.g., America/Chicago) |
locale | string | en-US | Locale code for the response (e.g., en-US) |
next_birthday | object | {…} | Countdown to next birthday in months, weeks, days, hours, minutes, seconds |
next_birthday.months | number | 0 | Months until next birthday |
next_birthday.weeks | number | 2 | Weeks until next birthday |
next_birthday.days | number | 15 | Days until next birthday |
next_birthday.hours | number | 367 | Hours until next birthday |
next_birthday.minutes | number | 22060 | Minutes until next birthday |
next_birthday.seconds | number | 1323623 | Seconds until next birthday |
insights | object | {…} | Derived facts about the date of birth: generation, zodiac signs, birthstone, weekday born and US legal milestones |
insights.generationPremium | string | Millennial | Generational cohort (e.g., Millennial, Gen Z, Baby Boomer) |
insights.zodiacSignPremium | string | Capricorn | Western zodiac sign based on birth date (e.g., Capricorn, Leo) |
insights.chineseZodiacPremium | string | Horse | Chinese zodiac animal based on birth year (e.g., Dragon, Tiger) |
insights.birthstonePremium | string | Garnet | Traditional birthstone for birth month (e.g., Diamond, Ruby) |
insights.dayOfWeekBornPremium | string | Monday | Day of the week person was born (e.g., Monday, Friday) |
insights.isLeapYearBirthPremium | boolean | false | Whether the person was born in a leap year |
insights.milestonesPremium | object | {…} | Legal milestones achieved (canVoteUS, canDrinkUS, canRentCarUS, seniorDiscount) |
insights.milestones.canVoteUSPremium | boolean | true | Whether person is eligible to vote in United States elections |
insights.milestones.canDrinkUSPremium | boolean | true | Whether person is legal age to drink alcohol in United States |
insights.milestones.canRentCarUSPremium | boolean | true | Whether person meets age requirement to rent cars in United States |
insights.milestones.seniorDiscountPremium | boolean | false | Whether person is eligible for senior citizen discounts |
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 2 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Use cases
- User Onboarding Verification
- When a new user registers, verify their exact age in years from their birth date before activating account features.
- Birthday Campaign Scheduling
- Marketing platforms track the countdown to each customer's next birthday in days and hours to trigger timely promotional discount codes.
- Pediatric Patient Intake
- Health record systems record patient age broken down into months and weeks for infants who need age-specific developmental checks.
- Profile Milestone Cards
- Display a user's age written out in words on community profile cards and count down to their next birthday celebration.
Other ways to use Age Calculator Skill
Set up Age Calculator 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 Calendar: