Overview
Birthstones answers from a fixed twelve-row table, one row per month, so responses are instant and identical on every call. Each lookup returns a `birthstones` array and a `count`.
The parameters are checked in a fixed order: `list=all` first, then `month`, then `zodiac`, then `stone`. A call with none of them also returns the full table. `month` accepts a number from 1 to 12 or an English month name in any case; anything else returns a 404. `zodiac` is matched case-insensitively against each month's `zodiacSigns`, and because every sign straddles two months, a sign returns two rows. The response echoes the sign, capitalised, as `zodiacSign`. `stone` is an exact, case-insensitive name match against both `primaryStone` and `alternateStones`, so `citrine` finds November even though it is not November's primary stone. `isPrimaryStone` tells you which case you hit, and `stone` echoes your input.
`hardness` is the Mohs scale value (pearl is 2.5, diamond 10). `mineralFamily` is a classification such as Beryl, Corundum or Organic. `anniversaryYear` is the wedding anniversary traditionally tied to the stone, for example 55 for emerald.
On the Free plan, `alternateStones`, `meaning`, `hardness`, `mineralFamily` and `anniversaryYear` are removed from each row. A stone search still matches alternate stones on the Free plan; only the field listing them is hidden.
Live Test Birthstone Lookup Skill Skill →
The tool
Once your client is connected to the VerveKit server, this appears in its tool list as BirthstoneLookupSkill. 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": "BirthstoneLookupSkill",
"arguments": {
"month": "5"
}
}You do not name the tool yourself; the model picks it. Asking about 5 in the terms this skill covers is enough for it to reach for BirthstoneLookupSkill 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 |
|---|---|---|
monthRequired | string | The month number (1-12) or name12345678+16 |
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": 1,
"birthstones": [
{
"month": 5,
"monthName": "May",
"primaryStone": "Emerald",
"alternateStones": [
"Chrysoprase",
"Agate"
],
"color": "Green",
"meaning": "Rebirth, love, fertility",
"zodiacSigns": [
"Taurus",
"Gemini"
],
"hardness": 7.5,
"mineralFamily": "Beryl",
"anniversaryYear": 55
}
]
}
}
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 | 1 | Number of months returned |
birthstones | array[1] | The birthstones for each month requested | |
birthstones.0.month | number | 5 | Birth month number from 1 to 12 |
birthstones.0.monthName | string | May | Full name of the birth month |
birthstones.0.primaryStone | string | Emerald | Primary gemstone for the month |
birthstones.0.alternateStonesPremium | array | ["Chrysoprase","Agate"] | Alternate gemstones associated with month |
birthstones.0.color | string | Green | Traditional color associated with stone |
birthstones.0.meaningPremium | string | Rebirth, love, fertility | Symbolism and meaning of the birthstone |
birthstones.0.zodiacSigns | array | ["Taurus","Gemini"] | Zodiac signs associated with month |
birthstones.0.hardnessPremium | number | 7.5 | Mohs hardness rating of gemstone |
birthstones.0.mineralFamilyPremium | string | Beryl | Mineral classification family |
birthstones.0.anniversaryYearPremium | number | 55 | Anniversary year associated with stone |
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
- Jewelry E-commerce
- Display relevant birthstone options for gift recommendations
- Astrology Applications
- Show birthstones associated with zodiac signs
- Gift Finder Tools
- Suggest personalized gemstone gifts based on birth month
- Educational Content
- Provide gemstone information for learning applications
Other ways to use Birthstone Lookup Skill
Set up Birthstone Lookup 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 Reference Data: