Tipping Rules
Server Details
Read-only travel tipping for 140 destinations: search, country rules, and tip calculator.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
3 toolscalculate_tipCalculate tipARead-onlyIdempotentInspect
Calculate a suggested tip and total for a bill using Tipping Rules country norms (percent or round-up). Returns amounts plus canonical country and calculator URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| bill | Yes | Bill amount in local currency units (positive number). | |
| country | Yes | Country slug or name for local tipping norms. | |
| service | No | Service category. Prefer restaurant, bar, taxi, delivery, hotelStaff, or tourGuides. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds useful behavioral context: it computes tip and total, may use percent or round-up, and returns amounts plus canonical country and calculator URLs. No conflicts with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense, front-loaded sentence covers purpose, calculation mode, and return value highlights without filler. Every clause adds information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations, full schema coverage, and presence of an output schema, the description supplies enough for safe invocation. A minor gap is that it does not explain how the optional service parameter affects the result or how the percent-vs-round-up mode is selected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so bill, country, and service already have descriptions. The description adds that country norms drive the calculation and mentions percent or round-up, but it does not otherwise clarify parameter mechanics beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names the action (calculate) and the resource (suggested tip and total), and scopes it to Tipping Rules country norms. It is distinguishable from get_tipping_rules and search_countries by function, though it does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies this tool is for computing a tip/total for a given bill and country, but provides no explicit conditions about when to prefer it over get_tipping_rules or search_countries. There are no exclusions or alternative routing statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tipping_rulesGet tipping rulesARead-onlyIdempotentInspect
Get concise tipping guidance for a country: status, summary, key service recommendations, last reviewed date, and the canonical country URL.
| Name | Required | Description | Default |
|---|---|---|---|
| country | Yes | Country slug (preferred) or country name, e.g. japan or Japan. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that results are 'concise' and curated (status, recommendations), but doesn't disclose aspects like whether the data is cached, how current the 'last reviewed date' typically is, or what happens for an unknown country slug.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that front-loads the core action ('Get concise tipping guidance for a country') and then lists the key output fields. Every phrase earns its place; no filler or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with a rich schema and safety annotations, the description is nearly complete. It tells the agent what it will get back (making the output predictable) and keeps scope clear. Missing only minor behavioral edge cases (unknown country, normalization), which are unlikely to block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for its single parameter (country slug/name with example), and the description adds context that the tool is about tipping rules, which reinforces the parameter's purpose. The description could add nuance like case-insensitivity or how 'Japan' vs 'japan' is normalized, but the schema already covers the essential meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('tipping guidance for a country'), and enumerates the exact content returned: status, summary, key service recommendations, last reviewed date, and canonical country URL. This distinguishes it from any sibling tool that might return detailed tipping explanations or browse all countries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear this is for 'concise tipping guidance' per country, which implies when to use it, and the single-country scoping implicitly rules out multi-country lookups. However, no explicit alternatives or when-not-to-use guidance is provided; an agent is left to infer that broader tipping content is elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_countriesSearch destinationsARead-onlyIdempotentInspect
Search Tipping Rules destinations by name or region. Returns matching countries with status and canonical country page URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Country name, alias, or region fragment to search. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnly, idempotent, and non-destructive behavior, and the description aligns with those. It adds that results include status and canonical URLs, but does not provide deeper behavioral context such as pagination, ordering, or rate limits, so the description does not go far beyond what annotations already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence front-loads the action and resource, then states the return content. There is no redundant wording or filler, and every part contributes to understanding the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with one documented parameter, a provided output schema, and safety annotations, the description is nearly complete for calling it successfully. It could be slightly stronger by explicitly connecting search results to the sibling rule/tip tools, but that connection is not required for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter is fully described in the schema as a country name, alias, or region fragment, while the description merely repeats 'by name or region.' Schema coverage is 100%, so the description adds little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: search Tipping Rules destinations by name or region, returning matching countries with status and canonical URLs. It is clear and distinguishable from the sibling tools by its object and return value, though it does not explicitly contrast itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the destination-lookup step before using Tipping Rules data, but it never states when to prefer this tool over calculate_tip or get_tipping_rules, nor any exclusions. The intended use is inferable but not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
- Changed
calculate_tip1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "bill": { + "description": "Bill amount in local currency units.", + "exclusiveMinimum": 0, + "type": "number" + }, + "calculatorUrl": { + "description": "Deep link to the on-site calculator for this country.", + "format": "uri", + "type": "string" + }, + "canonicalUrl": { + "description": "Canonical country page URL.", + "format": "uri", + "type": "string" + }, + "country": { + "description": "Display name of the destination.", + "type": "string" + }, + "currency": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "ISO currency code when known (e.g. EUR, USD)." + }, + "lastReviewed": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "ISO date when guidance was last reviewed, when available." + }, + "methodologyUrl": { + "description": "How Tipping Rules reviews and sources guidance.", + "format": "uri", + "type": "string" + }, + "mode": { + "description": "Calculation mode applied for this service and destination.", + "enum": [ + "percent", + "round_up", + "zero" + ], + "type": "string" + }, + "ok": { + "const": true, + "description": "True when the tip was calculated.", + "type": "boolean" + }, + "recommendation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Human-readable norm string for the selected service." + }, + "service": { + "description": "Service category label used for the calculation.", + "type": "string" + }, + "slug": { + "description": "Country slug.", + "type": "string" + }, + "source": { + "const": "Tipping Rules", + "description": "Attribution for downstream citations.", + "type": "string" + }, + "tipAmount": { + "description": "Suggested tip amount in local currency units.", + "type": "number" + }, + "tipPercent": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Applied tip percent when mode is percent; null for round-up." + }, + "total": { + "description": "Bill plus suggested tip.", + "type": "number" + } + }, + "required": [ + "ok", + "country", + "slug", + "service", + "bill", + "currency", + "mode", + "tipPercent", + "tipAmount", + "total", + "recommendation", + "lastReviewed", + "canonicalUrl", + "calculatorUrl", + "methodologyUrl", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "description": "Machine-readable error code (e.g. NOT_FOUND, VALIDATION, TIMEOUT).", + "type": "string" + }, + "message": { + "description": "Short, agent-safe error message.", + "type": "string" + }, + "ok": { + "const": false, + "description": "False when the tool could not complete successfully.", + "type": "boolean" + } + }, + "required": [ + "ok", + "code", + "message" + ], + "type": "object" + } + ], + "description": "Tip calculation result or a structured error.", + "type": "object" +}
- Changed
get_tipping_rules1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "canonicalUrl": { + "description": "Canonical country page URL.", + "format": "uri", + "type": "string" + }, + "country": { + "description": "Display name of the destination.", + "type": "string" + }, + "lastReviewed": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "ISO date when guidance was last reviewed, when available." + }, + "methodologyUrl": { + "description": "How Tipping Rules reviews and sources guidance.", + "format": "uri", + "type": "string" + }, + "ok": { + "const": true, + "description": "True when country guidance was loaded.", + "type": "boolean" + }, + "situations": { + "description": "Key service recommendations (up to 8).", + "items": { + "additionalProperties": false, + "properties": { + "expectation": { + "description": "Overall tipping expectation context for the destination.", + "type": "string" + }, + "recommendation": { + "description": "Concise tipping recommendation for the service.", + "type": "string" + }, + "service": { + "description": "Service category label (e.g. Restaurant, Taxi).", + "type": "string" + } + }, + "required": [ + "service", + "recommendation", + "expectation" + ], + "type": "object" + }, + "type": "array" + }, + "slug": { + "description": "Country slug.", + "type": "string" + }, + "source": { + "const": "Tipping Rules", + "description": "Attribution for downstream citations.", + "type": "string" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Overall tipping expectation label, when available." + }, + "summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Short editorial summary of local tipping norms." + } + }, + "required": [ + "ok", + "country", + "slug", + "status", + "summary", + "situations", + "lastReviewed", + "canonicalUrl", + "methodologyUrl", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "description": "Machine-readable error code (e.g. NOT_FOUND, VALIDATION, TIMEOUT).", + "type": "string" + }, + "message": { + "description": "Short, agent-safe error message.", + "type": "string" + }, + "ok": { + "const": false, + "description": "False when the tool could not complete successfully.", + "type": "boolean" + } + }, + "required": [ + "ok", + "code", + "message" + ], + "type": "object" + } + ], + "description": "Country tipping guidance or a structured error.", + "type": "object" +}
- Changed
search_countries1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "count": { + "description": "Number of destinations returned (max 8).", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "methodologyUrl": { + "description": "How Tipping Rules reviews and sources guidance.", + "format": "uri", + "type": "string" + }, + "ok": { + "const": true, + "description": "True when search completed successfully.", + "type": "boolean" + }, + "query": { + "description": "Echo of the submitted search query.", + "type": "string" + }, + "results": { + "description": "Matching destinations ordered by relevance.", + "items": { + "additionalProperties": false, + "properties": { + "canonicalUrl": { + "description": "Canonical country page URL on tippingrules.com.", + "format": "uri", + "type": "string" + }, + "name": { + "description": "Display name of the destination.", + "type": "string" + }, + "region": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Region label from the catalog, when available." + }, + "slug": { + "description": "Country slug for follow-up tool calls.", + "type": "string" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Tipping expectation label, when available." + } + }, + "required": [ + "slug", + "name", + "status", + "region", + "canonicalUrl" + ], + "type": "object" + }, + "type": "array" + }, + "source": { + "const": "Tipping Rules", + "description": "Attribution for downstream citations.", + "type": "string" + } + }, + "required": [ + "ok", + "query", + "count", + "results", + "methodologyUrl", + "source" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "description": "Machine-readable error code (e.g. NOT_FOUND, VALIDATION, TIMEOUT).", + "type": "string" + }, + "message": { + "description": "Short, agent-safe error message.", + "type": "string" + }, + "ok": { + "const": false, + "description": "False when the tool could not complete successfully.", + "type": "boolean" + } + }, + "required": [ + "ok", + "code", + "message" + ], + "type": "object" + } + ], + "description": "Search results or a structured error.", + "type": "object" +}
3 tool updates
- First observed
calculate_tip - First observed
get_tipping_rules - First observed
search_countries
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Read-only Pearl place discovery, recommendations, and private member travel context.
Read-only public transit departures, stop search, and city coverage for bus and train users.
Search and explore a global travel points-of-interest catalog (cities, countries, POIs).
Read-only U.S. lab-test catalog, collection-site search, and reference-range context.
Related MCP Servers
- AlicenseAqualityCmaintenanceCheck visa requirements for 39,585 passport-destination pairs in 15 languages. Returns visa type, required documents, application process, and travel tips from 136 official government sources. Free quick checks without API key.52111MIT
- FlicenseAqualityCmaintenanceEnables querying Government of Canada travel advisories for 230 destinations, including searching, comparing, and filtering by risk level, with support for English and French.6-
- AlicenseNot gradedqualityBmaintenanceSearch and buy travel eSIMs for 200+ countries, with specialized China plans that deliver uncensored internet without a VPN. Exposes five read-only tools to search plans, check device eSIM compatibility, get plan details, get help, and generate a secure on-site checkout link.MIT
- AlicenseAqualityAmaintenanceEnables travel search workflows including airport lookup, route comparison, travel timing guidance, and external booking links with commission-eligible links.5481MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool has a clearly distinct role: searching for countries, retrieving tipping rules, and calculating tips. There is no overlap or ambiguity between them.
All tool names follow the same verb_noun snake_case pattern: calculate_tip, get_tipping_rules, search_countries. The naming is predictable and consistent.
With three focused tools, the set is lean but well-scoped for the domain. Each tool serves a necessary and distinct part of the tipping guidance workflow.
The server covers the core workflow of discovering a country, reading its tipping rules, and calculating a tip. A minor gap is the lack of a bulk 'list all countries' tool, but search by name or region sufficiently covers discovery.