Skip to main content
Glama

Server Details

Read-only travel tipping for 140 destinations: search, country rules, and tip calculator.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

3 tools
calculate_tipCalculate tipA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
billYesBill amount in local currency units (positive number).
countryYesCountry slug or name for local tipping norms.
serviceNoService category. Prefer restaurant, bar, taxi, delivery, hotelStaff, or tourGuides.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 rulesA
Read-onlyIdempotent
Inspect

Get concise tipping guidance for a country: status, summary, key service recommendations, last reviewed date, and the canonical country URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryYesCountry slug (preferred) or country name, e.g. japan or Japan.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 destinationsA
Read-onlyIdempotent
Inspect

Search Tipping Rules destinations by name or region. Returns matching countries with status and canonical country page URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesCountry name, alias, or region fragment to search.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 3 tool updates
    • Changedcalculate_tip1 field changed
      • changedOutput 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"
        +}
    • Changedget_tipping_rules1 field changed
      • changedOutput 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"
        +}
    • Changedsearch_countries1 field changed
      • changedOutput 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"
        +}
  2. 3 tool updates
    • First observedcalculate_tip
    • First observedget_tipping_rules
    • First observedsearch_countries

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Check 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.
    5
    211
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Search 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
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4/5.0
Disambiguation5/5

Each tool has a clearly distinct role: searching for countries, retrieving tipping rules, and calculating tips. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow the same verb_noun snake_case pattern: calculate_tip, get_tipping_rules, search_countries. The naming is predictable and consistent.

Tool Count5/5

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.

Completeness4/5

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.

Resources