Skip to main content
Glama

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

Server Details

Cost-of-living & quality-of-life comparison: take-home pay, equivalent salary, safety-net deltas.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.7/5 across 6 of 6 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a distinct purpose: compare_cities for head-to-head, get_city_summary for single city profile, get_inbound_tax_regime for special tax regimes, get_safety_net for batch safety net, list_cities for listing available cities, and rank_cities for ranking. No overlap.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (e.g., compare_cities, get_city_summary, list_cities). No mixing of styles or abbreviations.

Tool Count5/5

6 tools is appropriate for the domain of cost-of-living and quality-of-life comparisons. Each tool covers a specific need without being too many or too few.

Completeness4/5

The set covers single city, head-to-head, ranking, listing, special tax regimes, and batch safety net. Minor gap: no direct multi-city cost comparison beyond ranking, but the composite score in rank_cities partially addresses this.

Available Tools

6 tools
compare_citiesCompare two cities for a householdA
Read-onlyIdempotent
Inspect

Compare two cities for one household: take-home pay, full cost breakdown, the equivalent target salary needed to match source net cash, non-cash lifestyle deltas (vacation, parental leave, healthcare), and a 0-100 quality score on five weighted dimensions. Use this for a head-to-head between two named cities; for a single city call get_city_summary, and to rank many cities call rank_cities. Read-only, no side effects; returns a text summary plus structured JSON. RSU income is NOT a parameter; RSU is treated as source-only because grants typically do not follow you across employers.

ParametersJSON Schema
NameRequiredDescriptionDefault
livingNoHousing and spending assumptions. Omit to use defaults: rent, 2 bedrooms, typical spending.
advancedNoOptional fine-tuning: retirement contribution, age bracket, trips home, transit mode, and inbound tax regime. Omit to use defaults.
householdNoFamily structure: working-age partner and dependent children. Omit for a single person with no kids.
source_cityYesCity slug for the user's current city. Use list_cities to discover valid slugs (e.g. 'nyc', 'seattle', 'tokyo').
target_cityYesCity slug for the destination city.
gross_salaryYesUser's annual gross salary in the SOURCE city's local currency (e.g. USD for Seattle, NOK for Oslo).
score_weightsNoOverride the composite-score weights. Defaults: financial 30, healthcare 20, vacation 15, childcare 15, safety_net 20.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
sourceYes
targetYes
equivalenceYes
quality_scoreYes
non_cash_deltasYes
Behavior5/5

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

The description states 'Read-only, no side effects; returns a text summary plus structured JSON,' which aligns with annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false). It adds context on output format and the RSU treatment, going beyond 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?

The description is concise (two paragraphs) with front-loaded purpose and usage guidance. Every sentence adds value, and there is no redundancy.

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 the tool's complexity (nested objects, many parameters), the description provides a high-level overview, usage guidance, and return format. The existing output schema covers return values, so this is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds meaningful context beyond schema by explaining the overall comparison logic and the RSU omission, though it does not detail every parameter.

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 it compares two cities for a household, including detailed financial and lifestyle factors. It distinguishes from siblings by explicitly naming alternative tools: get_city_summary for a single city and rank_cities for multiple cities.

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 explicitly states when to use this tool (head-to-head comparison) and when to use alternatives (single city: get_city_summary, ranking: rank_cities). It also notes that RSU income is not a parameter, providing clear usage guidance.

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

get_city_summaryGet a one-city profileA
Read-onlyIdempotent
Inspect

Concise profile of one city: currency, tax shape (bracket count + top rate + payroll/national insurance), headline costs (rent / groceries / transit / childcare), safety-net values (parental leave, vacation, universal healthcare), and data freshness. Lighter than compare_cities; use when the user is asking about one place rather than a comparison. Read-only, no side effects; returns a text summary plus structured JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity slug. Use list_cities to discover valid slugs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
taxYes
nameYes
slugYes
countryYes
currencyYes
safety_netYes
cost_snapshotYes
govt_benefitsYes
data_year_rangeYes
methodology_urlYes
compensation_indexYes
inbound_tax_regimeYes
data_last_updated_fieldYes
Behavior5/5

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

States 'Read-only, no side effects', aligning with annotations (readOnlyHint, destructiveHint false, idempotentHint true). Also mentions return format: 'text summary plus structured JSON', adding beyond 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?

Two sentences: first lists contents concisely, second gives usage guidance and behavior. Every sentence adds value, no redundancy.

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 output schema exists (not shown), no need to detail return values. Covers purpose, usage, behavior, and context adequately for a single-parameter tool.

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 covers the sole 'city' parameter with a description and usage hint (list_cities). Description does not add further semantics beyond schema, so baseline 3.

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?

Clearly states it provides a 'concise profile of one city' with specific data categories. Distinguishes from sibling 'compare_cities' by noting it is 'lighter' and for single-city queries.

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?

Explicitly says 'use when the user is asking about one place rather than a comparison' and contrasts with 'compare_cities', giving clear when-to-use and alternative guidance.

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

get_inbound_tax_regimeLook up inbound-worker tax regime for a cityA
Read-onlyIdempotent
Inspect

Look up a city's inbound-worker tax regime, the special reduced-tax schemes for relocating workers that general cost-of-living tools do not surface. Returns null when the country has no modeled regime (most cities). Modeled regimes: Italy impatriati (Milan, Rome), Portugal IFICI (Lisbon, Porto), Belgium expat (Brussels), Poland B2B ryczałt (Warsaw, Kraków), Greece inbound (Athens). Each entry includes the mechanic (reduction percentage or flat rate), duration, income cap if any, and a conservative eligibility hint. Read-only, no side effects; returns a text summary plus structured JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity slug. Use list_cities to discover valid slugs. Most cities return regime=null because their country has no special inbound-worker tax regime.

Output Schema

ParametersJSON Schema
NameRequiredDescription
cityYes
slugYes
regimeYes
countryYes
disclaimerNo
methodology_urlYes
Behavior4/5

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

Annotations already provide readOnlyHint and idempotentHint, but the description adds 'no side effects' and details the return format (text summary plus structured JSON with mechanic, duration, etc.), going beyond the structured fields.

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 concise, well-structured, and front-loaded with the core purpose. Every sentence provides essential information without redundancy.

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 the single parameter, excellent annotations, and mention of output schema, the description fully covers what the tool does, its inputs, outputs, and behavior. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single required parameter 'city'. The description adds crucial context: city slug required, use list_cities for valid slugs, and that most cities return null. This significantly aids correct usage.

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 the tool looks up a city's inbound-worker tax regime, a specialized function not covered by general cost-of-living tools. It distinguishes itself from sibling tools like compare_cities or get_city_summary by focusing on this niche.

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

Usage Guidelines4/5

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

The description explains when to use (for special reduced-tax schemes) and explicitly notes that most cities return null. It lists modeled regimes but does not explicitly state alternatives or when not to use, though context is clear.

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

get_safety_netLook up family safety net for several citiesA
Read-onlyIdempotent
Inspect

Batch lookup of safety-net values — parental leave weeks + paid percentage, universal healthcare flag, vacation days, public holidays — for 1 to 20 cities at once, 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. 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.

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

Output Schema

ParametersJSON Schema
NameRequiredDescription
citiesYes
not_foundNo
methodology_urlYes
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description adds value by explicitly stating 'Read-only, no side effects' and describing the return format (text summary plus structured JSON). This provides additional behavioral context beyond 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?

The description is three sentences with no redundant information. It front-loads the core action ('Batch lookup of safety-net values') and efficiently covers purpose, usage guidelines, and behavioral traits.

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 the presence of an output schema (not shown but mentioned), the description sufficiently explains the tool's capabilities, including what fields are returned and the output format. It also covers usage context and alternatives, making it complete for an AI agent.

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 has 100% coverage for the single parameter 'cities', already describing it as an array of city slugs (1-20) and referencing list_cities. The description repeats this information without adding new meaning, so it provides marginal additional 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 it performs a batch lookup of safety-net values for multiple cities, lists the specific fields (parental leave weeks, paid percentage, universal healthcare flag, vacation days, public holidays, dimension score), and distinguishes itself from siblings by noting it's the only tool that accepts many cities in one call.

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 explicitly provides when to use this tool versus alternatives: use get_city_summary for one city's full profile, use compare_cities for a two-city head-to-head with cost-of-living. It also mentions using list_cities to discover valid slugs as a prerequisite.

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

list_citiesList supported cities by countryA
Read-onlyIdempotent
Inspect

List all city slugs supported by cityparity, grouped by country. Call this first to discover valid slugs before any other tool; the optional country filter narrows to one country. Read-only, no side effects; returns a text summary plus structured JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoOptional case-insensitive country filter. Use the canonical name as stored in city_data.country (e.g. "Norway", "USA", "United Kingdom"). If omitted, returns all countries.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
groupsYes
country_countYes
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds that it returns a text summary plus structured JSON, which provides useful behavioral context beyond 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?

Two sentences, no redundant words. The first sentence states purpose, the second provides usage guidance and behavioral info. Perfectly concise and front-loaded.

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?

For a simple list tool with one optional param and output schema, the description covers purpose, usage, safety, return format, and relationship to siblings. No gaps identified.

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 baseline is 3. The description adds the phrase 'narrows to one country' which reinforces the country filter's effect, but this is a minor addition over the schema description.

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 it lists city slugs grouped by country, using a specific verb and resource. It distinguishes from siblings by positioning itself as the first call to discover valid slugs before other tools.

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?

Explicitly advises to call this first to discover valid slugs before any other tool, and mentions the optional country filter. This gives clear context on when and how to use it, differentiating from siblings.

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

rank_citiesRank cities by composite quality scoreA
Read-onlyIdempotent
Inspect

Rank supported cities by composite quality-of-life score across five weighted dimensions (financial, healthcare, vacation, childcare, safety_net). Returns top N (default 10), with filters for country, countries, region (europe/asia/north_america/south_america/oceania), has_universal_healthcare, include_cities, and exclude_cities. Use this to shortlist across many cities; for a head-to-head between two named cities use compare_cities. The same scenario is applied to every city so scores are directly comparable (default: single person, 2BR rent, $100k USD-equivalent gross). Read-only, no side effects; returns a text summary plus structured JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return. Default 10.
filterNoRestrict which cities are ranked, by country, region, universal-healthcare flag, or explicit include/exclude slug lists. Omit to rank all supported cities.
weightsNoOverride the composite-score weights. Defaults: financial 30, healthcare 20, vacation 15, childcare 15, safety_net 20.
scenarioNoOverride the default ranking scenario. The same scenario is applied to every city so scores are comparable.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rankedYes
skippedYes
weightsYes
consideredYes
scenario_usedYes
methodology_urlYes
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint. Description adds 'Read-only, no side effects; returns a text summary plus structured JSON.' This confirms behavior and output format.

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?

Description is concise with front-loaded purpose. Every sentence adds value: purpose, filters, usage guidance, scenario comparability, and read-only nature. No wasted words.

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 4 parameters (some nested), no required params, full schema coverage, and presence of output schema, the description covers purpose, usage, behavior, and parameters sufficiently. It addresses the tool's complexity well.

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 description coverage is 100%, so the description doesn't add much beyond the schema. It summarizes filters and defaults but does not provide new parameter semantics.

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 it ranks cities by a composite quality-of-life score across five weighted dimensions, with filters and defaults. It distinguishes from sibling tool 'compare_cities' by stating use for shortlisting vs head-to-head.

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?

Explicitly says 'Use this to shortlist across many cities; for a head-to-head between two named cities use compare_cities.' This provides clear guidance on when to use and when to use an alternative.

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

Discussions

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

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources