Overview
The tip is `amount` multiplied by `percentage` / 100, and the total is the bill plus the tip. `percentage` accepts 0 to 100 and defaults to 15; a 0 is honoured rather than replaced by the default. `people` defaults to 1, and the bill, tip and total are each divided by it to give the `per_person` object.
Every money figure is rounded to two decimal places independently, after the division. Because the per-person values are rounded from unrounded totals, multiplying `per_person.total_amount` back by `split_between` can differ from `total_amount` by a cent or so; if you collect money from each person, decide in your own code who covers the remainder.
`currency` is a display setting only and no exchange conversion takes place. It is echoed back as sent, and it chooses the symbol used in `formatted`: USD, EUR, GBP, JPY, CNY, INR, CAD, AUD and MXN have built-in symbols (CAD shows C$, AUD A$, MXN MX$), and any other code is printed as the code followed by a space. The match is case-sensitive, and all currencies are formatted with two decimals, including JPY.
`common_tip_amounts` repeats the calculation for 10, 15, 18, 20 and 25 percent, each with `tip_amount`, `total` and `per_person`, regardless of the percentage you asked for. `formatted` and `common_tip_amounts` are null on the Free plan; all other fields are returned on every plan.
Live Test Tip Calculator Skill Skill →
The tool
Once your client is connected to the VerveKit server, this appears in its tool list as TipCalculatorSkill. 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": "TipCalculatorSkill",
"arguments": {
"amount": "100"
}
}You do not name the tool yourself; the model picks it. Asking about 100 in the terms this skill covers is enough for it to reach for TipCalculatorSkill 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 |
|---|---|---|
amountRequired | number | The bill amount before tip range 0–∞ |
percentageOptional | number | Tip percentage default 15 · range 0–100 |
peopleOptional | integer | Number of people to split the bill default 1 · range 1–∞ |
currencyOptional | string | Currency code for display default USD |
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": {
"bill_amount": 100,
"tip_percentage": 18,
"tip_amount": 18,
"total_amount": 118,
"currency": "USD",
"split_between": 4,
"per_person": {
"bill_amount": 25,
"tip_amount": 4.5,
"total_amount": 29.5
},
"common_tip_amounts": [
{
"percentage": 10,
"tip_amount": 10,
"total": 110,
"per_person": 27.5
},
{
"percentage": 15,
"tip_amount": 15,
"total": 115,
"per_person": 28.75
},
{
"percentage": 20,
"tip_amount": 20,
"total": 120,
"per_person": 30
}
],
"formatted": {
"bill_amount": "$100.00",
"tip_amount": "$18.00",
"total_amount": "$118.00",
"per_person_total": "$29.50"
}
}
}
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 |
|---|---|---|---|
bill_amount | number | 100 | Original bill amount before tip calculation |
tip_percentage | number | 18 | Tip percentage applied to the bill |
tip_amount | number | 18 | Calculated tip amount in currency |
total_amount | number | 118 | Total amount including bill and tip |
currency | string | USD | Currency code used for amounts |
split_between | number | 4 | Number of people bill is split among |
per_person | object | {…} | |
per_person.bill_amount | number | 25 | Individual bill amount per person |
per_person.tip_amount | number | 4.5 | Individual tip amount per person |
per_person.total_amount | number | 29.5 | Individual total amount per person |
common_tip_amountsPremium | array[3] | Array of common tip percentage options with amounts | |
common_tip_amounts.0.percentagePremium | number | 10 | Tip percentage for comparison option |
common_tip_amounts.0.tip_amountPremium | number | 10 | Tip amount for comparison option |
common_tip_amounts.0.totalPremium | number | 110 | Total amount for comparison option |
common_tip_amounts.0.per_personPremium | number | 27.5 | Per-person total for comparison option |
formattedPremium | object | {…} | Human-readable formatted currency values |
formatted.bill_amountPremium | string | $100.00 | Formatted bill amount with currency symbol |
formatted.tip_amountPremium | string | $18.00 | Formatted tip amount with currency symbol |
formatted.total_amountPremium | string | $118.00 | Formatted total amount with currency symbol |
formatted.per_person_totalPremium | string | $29.50 | Formatted per-person total with currency symbol |
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.
Supported Currencies
170+ world currencies supported including fiat currencies, cryptocurrencies, and precious metals.
| Code | Currency | Region |
|---|---|---|
AED | UAE Dirham | United Arab Emirates |
AFN | Afghan Afghani | Afghanistan |
ALL | Albanian Lek | Albania |
AMD | Armenian Dram | Armenia |
ANG | Netherlands Antillean Guilder | Curaçao |
AOA | Angolan Kwanza | Angola |
ARS | Argentine Peso | Argentina |
AUD | Australian Dollar | Australia |
AWG | Aruban Florin | Aruba |
AZN | Azerbaijani Manat | Azerbaijan |
BAM | Bosnia-Herzegovina Convertible Mark | Bosnia and Herzegovina |
BBD | Barbadian Dollar | Barbados |
BDT | Bangladeshi Taka | Bangladesh |
BGN | Bulgarian Lev | Bulgaria |
BHD | Bahraini Dinar | Bahrain |
BIF | Burundian Franc | Burundi |
BMD | Bermudan Dollar | Bermuda |
BND | Brunei Dollar | Brunei |
BOB | Bolivian Boliviano | Bolivia |
BRL | Brazilian Real | Brazil |
BSD | Bahamian Dollar | Bahamas |
BTC | Bitcoin | Cryptocurrency |
BTN | Bhutanese Ngultrum | Bhutan |
BWP | Botswanan Pula | Botswana |
BYN | Belarusian Ruble | Belarus |
BZD | Belize Dollar | Belize |
CAD | Canadian Dollar | Canada |
CDF | Congolese Franc | Democratic Republic of the Congo |
CHF | Swiss Franc | Switzerland |
CLF | Chilean Unit of Account (UF) | Chile |
CLP | Chilean Peso | Chile |
CNH | Chinese Yuan (Offshore) | China |
CNY | Chinese Yuan | China |
COP | Colombian Peso | Colombia |
CRC | Costa Rican Colón | Costa Rica |
CUC | Cuban Convertible Peso | Cuba |
CUP | Cuban Peso | Cuba |
CVE | Cape Verdean Escudo | Cape Verde |
CZK | Czech Koruna | Czech Republic |
DJF | Djiboutian Franc | Djibouti |
DKK | Danish Krone | Denmark |
DOP | Dominican Peso | Dominican Republic |
DZD | Algerian Dinar | Algeria |
EGP | Egyptian Pound | Egypt |
ERN | Eritrean Nakfa | Eritrea |
ETB | Ethiopian Birr | Ethiopia |
EUR | Euro | European Union |
FJD | Fijian Dollar | Fiji |
FKP | Falkland Islands Pound | Falkland Islands |
GBP | British Pound Sterling | United Kingdom |
GEL | Georgian Lari | Georgia |
GGP | Guernsey Pound | Guernsey |
GHS | Ghanaian Cedi | Ghana |
GIP | Gibraltar Pound | Gibraltar |
GMD | Gambian Dalasi | Gambia |
GNF | Guinean Franc | Guinea |
GTQ | Guatemalan Quetzal | Guatemala |
GYD | Guyanaese Dollar | Guyana |
HKD | Hong Kong Dollar | Hong Kong |
HNL | Honduran Lempira | Honduras |
HRK | Croatian Kuna | Croatia |
HTG | Haitian Gourde | Haiti |
HUF | Hungarian Forint | Hungary |
IDR | Indonesian Rupiah | Indonesia |
ILS | Israeli New Shekel | Israel |
IMP | Isle of Man Pound | Isle of Man |
INR | Indian Rupee | India |
IQD | Iraqi Dinar | Iraq |
IRR | Iranian Rial | Iran |
ISK | Icelandic Króna | Iceland |
JEP | Jersey Pound | Jersey |
JMD | Jamaican Dollar | Jamaica |
JOD | Jordanian Dinar | Jordan |
JPY | Japanese Yen | Japan |
KES | Kenyan Shilling | Kenya |
KGS | Kyrgystani Som | Kyrgyzstan |
KHR | Cambodian Riel | Cambodia |
KMF | Comorian Franc | Comoros |
KPW | North Korean Won | North Korea |
KRW | South Korean Won | South Korea |
KWD | Kuwaiti Dinar | Kuwait |
KYD | Cayman Islands Dollar | Cayman Islands |
KZT | Kazakhstani Tenge | Kazakhstan |
LAK | Laotian Kip | Laos |
LBP | Lebanese Pound | Lebanon |
LKR | Sri Lankan Rupee | Sri Lanka |
LRD | Liberian Dollar | Liberia |
LSL | Lesotho Loti | Lesotho |
LYD | Libyan Dinar | Libya |
MAD | Moroccan Dirham | Morocco |
MDL | Moldovan Leu | Moldova |
MGA | Malagasy Ariary | Madagascar |
MKD | Macedonian Denar | North Macedonia |
MMK | Myanmar Kyat | Myanmar |
MNT | Mongolian Tugrik | Mongolia |
MOP | Macanese Pataca | Macau |
MRU | Mauritanian Ouguiya | Mauritania |
MUR | Mauritian Rupee | Mauritius |
MVR | Maldivian Rufiyaa | Maldives |
MWK | Malawian Kwacha | Malawi |
MXN | Mexican Peso | Mexico |
MYR | Malaysian Ringgit | Malaysia |
MZN | Mozambican Metical | Mozambique |
NAD | Namibian Dollar | Namibia |
NGN | Nigerian Naira | Nigeria |
NIO | Nicaraguan Córdoba | Nicaragua |
NOK | Norwegian Krone | Norway |
NPR | Nepalese Rupee | Nepal |
NZD | New Zealand Dollar | New Zealand |
OMR | Omani Rial | Oman |
PAB | Panamanian Balboa | Panama |
PEN | Peruvian Sol | Peru |
PGK | Papua New Guinean Kina | Papua New Guinea |
PHP | Philippine Peso | Philippines |
PKR | Pakistani Rupee | Pakistan |
PLN | Polish Zloty | Poland |
PYG | Paraguayan Guarani | Paraguay |
QAR | Qatari Rial | Qatar |
RON | Romanian Leu | Romania |
RSD | Serbian Dinar | Serbia |
RUB | Russian Ruble | Russia |
RWF | Rwandan Franc | Rwanda |
SAR | Saudi Riyal | Saudi Arabia |
SBD | Solomon Islands Dollar | Solomon Islands |
SCR | Seychellois Rupee | Seychelles |
SDG | Sudanese Pound | Sudan |
SEK | Swedish Krona | Sweden |
SGD | Singapore Dollar | Singapore |
SHP | Saint Helena Pound | Saint Helena |
SLE | Sierra Leonean Leone (new) | Sierra Leone |
SLL | Sierra Leonean Leone (old) | Sierra Leone |
SOS | Somali Shilling | Somalia |
SRD | Surinamese Dollar | Suriname |
SSP | South Sudanese Pound | South Sudan |
STD | São Tomé and Príncipe Dobra (old) | São Tomé and Príncipe |
STN | São Tomé and Príncipe Dobra | São Tomé and Príncipe |
SVC | Salvadoran Colón | El Salvador |
SYP | Syrian Pound | Syria |
SZL | Swazi Lilangeni | Eswatini |
THB | Thai Baht | Thailand |
TJS | Tajikistani Somoni | Tajikistan |
TMT | Turkmenistani Manat | Turkmenistan |
TND | Tunisian Dinar | Tunisia |
TOP | Tongan Paʻanga | Tonga |
TRY | Turkish Lira | Turkey |
TTD | Trinidad and Tobago Dollar | Trinidad and Tobago |
TWD | New Taiwan Dollar | Taiwan |
TZS | Tanzanian Shilling | Tanzania |
UAH | Ukrainian Hryvnia | Ukraine |
UGX | Ugandan Shilling | Uganda |
USD | United States Dollar | United States |
UYU | Uruguayan Peso | Uruguay |
UZS | Uzbekistani Som | Uzbekistan |
VES | Venezuelan Bolívar Soberano | Venezuela |
VND | Vietnamese Dong | Vietnam |
VUV | Vanuatu Vatu | Vanuatu |
WST | Samoan Tala | Samoa |
XAF | Central African CFA Franc | Central Africa |
XAG | Silver (troy ounce) | Precious Metal |
XAU | Gold (troy ounce) | Precious Metal |
XCD | East Caribbean Dollar | Eastern Caribbean |
XCG | Caribbean Guilder | Caribbean |
XDR | Special Drawing Rights | International Monetary Fund |
XOF | West African CFA Franc | West Africa |
XPD | Palladium (troy ounce) | Precious Metal |
XPF | CFP Franc | French Pacific Territories |
XPT | Platinum (troy ounce) | Precious Metal |
YER | Yemeni Rial | Yemen |
ZAR | South African Rand | South Africa |
ZMW | Zambian Kwacha | Zambia |
ZWG | Zimbabwean Gold | Zimbabwe |
ZWL | Zimbabwean Dollar | Zimbabwe |
Use cases
- Dining Apps
- Integrate tip calculation features into restaurant and food delivery applications
- Expense Tracking
- Calculate and track tip expenses for budgeting and expense reporting
- Bill Splitting
- Split restaurant bills fairly among groups with automatic tip calculation
- Financial Tools
- Provide tip guidance and calculation in personal finance and budgeting apps
Other ways to use Tip Calculator Skill
Set up Tip 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 Math/Calculations: