Skip to content

Brainy Prices — UAE Cost of Living

by brainy.ae · remote · no sign-in to list tools · v2.0.0 · published by ae.brainy

Source-backed UAE costs: groceries, schools, housing, transport, utilities, telecom and relocation

Final · 1Changes · 23

26 tools: 1 do something that can't be undone, 23 change things and 2 only read.

Scanned Oct 21, 2026

4 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http grocery-prices https://prices.brainy.ae/mcp/v2

Findings

Matches of fixed checks, with the text they matched.

4 warn
  • The server marks "fuel_prices" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

    What this check looks for
  • The server marks "grocery_stores" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "grocery_stores" says "store": a word for a change.

    What this check looks for
  • The server marks "move_to_dubai" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "move_to_dubai" says "move": a word for a change.

    What this check looks for
  • The server marks "start_here" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "start_here" says "start": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

26 tools

Can't be undone 1Claude Code: ask
  • fuel_pricesUAE petrol/diesel prices this month and last, change, 50/70 L tank cost, history.1 finding

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "fuel_prices" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    UAE petrol/diesel prices this month and last, change, 50/70 L tank cost, history.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Changes things 23Claude Code: ask
  • commute_costMonthly/annual car commute cost (fuel+Salik), or published area routes.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Monthly/annual car commute cost (fuel+Salik), or published area routes. No parking.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • costs_by_areaDubai areas ranked by monthly cost: rent, fees, bills (+school).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Dubai areas ranked by monthly cost: rent, fees, bills (+school). Not full budgets.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • data_sourcesWhere each number comes from: publishers, licences, dates, paused sources.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Where each number comes from: publishers, licences, dates, paused sources.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • dewaDEWA electricity/water: tariff slabs, or bill estimate from kwh (+water, VAT, fee).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    DEWA electricity/water: tariff slabs, or bill estimate from kwh (+water, VAT, fee).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • end_of_service_gratuityUAE private-sector end-of-service gratuity estimate (Decree-Law 33/2021 art.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    UAE private-sector end-of-service gratuity estimate (Decree-Law 33/2021 art. 51): basic wage + dates → amount or range; not legal advice.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • fixed_monthly_costsMonthly fixed costs for a household profile, with assumptions.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Monthly fixed costs for a household profile, with assumptions. Not a full budget.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • free_zone_companiesFree zone company setup: package prices, annual/monthly cost, visas.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Free zone company setup: package prices, annual/monthly cost, visas.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • fx_ratesAED exchange rates (CBUAE, dated).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    AED exchange rates (CBUAE, dated). Not bank quotes.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • grocery_productsDubai supermarket prices: search by name; product_id for per-store pack/unit offers, dates, history.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Dubai supermarket prices: search by name; product_id for per-store pack/unit offers, dates, history. Not MOET.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • grocery_storesGrocery stores: delivery fees, free-delivery thresholds, minimum orders.1 finding

    Why it is in this group

    • The name "grocery_stores" says "store": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "grocery_stores" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "grocery_stores" says "store": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Grocery stores: delivery fees, free-delivery thresholds, minimum orders.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • health_insuranceDubai health insurance rules: who pays, basic plan band/benefits, fines.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Dubai health insurance rules: who pays, basic plan band/benefits, fines. Not quotes.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • housing_rentsRent in a Dubai area: registered annual/monthly medians and contract counts.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Rent in a Dubai area: registered annual/monthly medians and contract counts. Not listings.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • housing_salesSale prices by Dubai area: ready/off-plan registered medians.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Sale prices by Dubai area: ready/off-plan registered medians. Not listings.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • labour_calculatorUAE labour law estimates (Decree-Law 33/2021): overtime pay, annual leave, final settlement.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    UAE labour law estimates (Decree-Law 33/2021): overtime pay, annual leave, final settlement. Not legal advice.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • ministry_shop_pricesMOET-published shop prices of Dubai essentials by chain/category.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    MOET-published shop prices of Dubai essentials by chain/category.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • mobile_internet_plansUAE mobile and home internet plans: VAT-inclusive price, data, contract.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    UAE mobile and home internet plans: VAT-inclusive price, data, contract.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • move_to_dubaiMove to Dubai?1 finding

    Why it is in this group

    • The name "move_to_dubai" says "move": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "move_to_dubai" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "move_to_dubai" says "move": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Move to Dubai? Home vs Dubai net pay, taxes, FX, costs, savings. No country: models. Owner: household=business_owner + profit. Not tax advice.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • residence_visasUAE residence visas by route: payer, requirements, fees, medical/insurance bands.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    UAE residence visas by route: payer, requirements, fees, medical/insurance bands.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • schoolsDubai school fees: KHDA tuition by grade/year, bus fees, distance.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Dubai school fees: KHDA tuition by grade/year, bus fees, distance. q: school name; near: zone; school_id: detail. Year ≠ Grade; uniforms paused.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • shopper_price_reportsCommunity price reports by product/store, with date and promos.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Community price reports by product/store, with date and promos.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • start_hereCall first: coverage, the 5 most useful calls with ready arguments, data freshness and how to cite.1 finding

    Why it is in this group

    • The name "start_here" says "start": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "start_here" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "start_here" says "start": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Call first: coverage, the 5 most useful calls with ready arguments, data freshness and how to cite.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • tax_savings_by_countryTax saved by moving to Dubai, per country, typical pay.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Tax saved by moving to Dubai, per country, typical pay. Not tax advice.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • transport_faresTaxi fare estimate, or metro/bus fares, parking and toll tariffs.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Taxi fare estimate, or metro/bus fares, parking and toll tariffs. Not app quotes.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 2Claude Code: allow
  • costs_by_emirateCompare emirates: rent, utilities, schools.No findings

    Why it is in this group

    • The description's first verb is "compare": a word for reading.
    Description, as the server wrote it
    Compare emirates: rent, utilities, schools. Non-Dubai rent unknown.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • grocery_compare_listCheapest store for a shopping list: per-store subtotals, delivery fees, minimums.No findings

    Why it is in this group

    • The name "grocery_compare_list" says "compare": a word for reading.
    Description, as the server wrote it
    Cheapest store for a shopping list: per-store subtotals, delivery fees, minimums. Observed + labelled estimates.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 2.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http grocery-prices https://prices.brainy.ae/mcp/v2

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__grocery-prices__costs_by_emirate",
      "mcp__grocery-prices__grocery_compare_list"
    ],
    "ask": [
      "mcp__grocery-prices__commute_cost",
      "mcp__grocery-prices__costs_by_area",
      "mcp__grocery-prices__data_sources",
      "mcp__grocery-prices__dewa",
      "mcp__grocery-prices__end_of_service_gratuity",
      "mcp__grocery-prices__fixed_monthly_costs",
      "mcp__grocery-prices__free_zone_companies",
      "mcp__grocery-prices__fuel_prices",
      "mcp__grocery-prices__fx_rates",
      "mcp__grocery-prices__grocery_products",
      "mcp__grocery-prices__grocery_stores",
      "mcp__grocery-prices__health_insurance",
      "mcp__grocery-prices__housing_rents",
      "mcp__grocery-prices__housing_sales",
      "mcp__grocery-prices__labour_calculator",
      "mcp__grocery-prices__ministry_shop_prices",
      "mcp__grocery-prices__mobile_internet_plans",
      "mcp__grocery-prices__move_to_dubai",
      "mcp__grocery-prices__residence_visas",
      "mcp__grocery-prices__schools",
      "mcp__grocery-prices__shopper_price_reports",
      "mcp__grocery-prices__start_here",
      "mcp__grocery-prices__tax_savings_by_country",
      "mcp__grocery-prices__transport_fares"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as grocery-prices. Review it before you use it.