Skip to main content
Glama

cityparity — Cost-of-Living & Quality-of-Life Comparison

Look up family safety net for several cities

get_safety_net
Read-onlyIdempotent

Batch lookup of safety-net values for 1 to 20 cities at once: parental leave weeks + how it is paid, universal healthcare flag, vacation days, public holidays (public_holidays is the count the statute lists; public_holidays_effective is how many of those fall on a working day once you account for whether the country replaces a weekend holiday, so quote the effective figure whenever you compare two places on time off), plus each city's safety_net dimension score (0-100) for relative strength. This is the only tool that accepts many cities in one call: use it to line several places up on family / leave / healthcare benefits. On parental leave, quote parental_leave_summary rather than composing your own line from parental_leave_paid_pct: Ireland, Australia, the UK, Czechia and part of Sweden pay a flat weekly cash sum instead of a share of salary, so their headline percentage is 0 or partial and reading it alone would wrongly call their leave unpaid; Germany pays a percentage up to a monthly cap (parental_leave_capped) and pays nothing at all above a household-income ceiling. Check parental_leave_basis (percentage / flat / capped / mixed / unpaid) before making any claim about pay. On sick pay, quote sick_leave_policy rather than composing your own line from sick_leave.phases: it is the STATUTORY FLOOR for someone in their first year of service, phases run one AFTER another rather than stacking, and the durations carry units that differ by country (Slovenia counts working days, Denmark counts calendar days), so sick_leave.paid_weeks is deliberately null wherever the phases are measured against different reference periods and no single total exists. For one city's full profile (tax shape + costs + safety net together) call get_city_summary instead; for a two-city head-to-head that includes cost-of-living use compare_cities. Read-only, no side effects; returns a text summary plus structured JSON.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
citiesYesArray of city slugs (1-20). Use list_cities to discover valid slugs.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
citiesYes
not_foundNo
score_basisNo
methodology_urlYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds 'Read-only, no side effects; returns a text summary plus structured JSON', which reinforces the annotations and clarifies the output format. This provides useful behavioral context beyond what annotations alone convey, warranting a score above the midpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose ('Batch lookup of safety-net values...') and structured logically: first states scope and fields, then provides detailed interpretation notes, then gives sibling alternatives, and ends with behavioral summary. While somewhat lengthy due to necessary caveats (parental leave basis, sick leave notes), every sentence serves a purpose. It loses one point for verbosity in parts, but remains well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (reducing need to document return format), the description covers all critical aspects: major fields, interpretation nuances (public_holidays vs effective, parental leave percentages vs summary, sick leave policy), limits (1-20 cities), and relationships to sibling tools. It fully equips an AI agent to use the tool correctly and avoid common mistakes, making it highly complete.

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 input schema already has 100% coverage with a description for the 'cities' parameter, including constraints (1-20 items, string slugs) and a reference to list_cities for valid slugs. The description does not add significant new semantic meaning about the parameter itself; it repeats the valid slug source. Given baseline 3 for high schema coverage, the description adds marginal value.

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 clearly states this tool performs 'batch lookup of safety-net values for 1 to 20 cities at once', listing specific fields (parental leave, healthcare, vacation, holidays, safety_net score). It distinguishes itself from siblings by noting it is 'the only tool that accepts many cities in one call' and explicitly names alternatives (get_city_summary, compare_cities) for other use cases. The verb 'Look up' and resource 'safety-net for several cities' are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('line several places up on family / leave / healthcare benefits') and when not to (for one city full profile use get_city_summary, for two-city head-to-head with cost-of-living use compare_cities). It also includes detailed instructions on how to interpret fields correctly, such as quoting parental_leave_summary instead of composing from percentages, checking parental_leave_basis, and using sick_leave_policy. These caveats prevent common misinterpretations and make the usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.7/5.0
Disambiguation5/5

Each tool serves a distinct purpose: listing cities, summarizing one city, comparing two, ranking many, looking up tax regimes, and batch safety nets. Descriptions explicitly guide when to use each, eliminating ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., compare_cities, get_city_summary). The verbs are appropriate for the action, and there is no mixing of conventions.

Tool Count5/5

With 6 tools, the count is well-scoped for a cost-of-living comparison server. It covers essential operations without being too few or too many, fitting the typical 3-15 range.

Completeness4/5

The tool set covers discovery, summary, comparison, ranking, tax regimes, and safety nets. A minor gap is the lack of a detailed single-city cost breakdown (only headline costs in get_city_summary), but overall it's fairly complete.