CityAlert

Free live public-safety incident map: global crime, fire, disaster, weather and news feeds

Should I use this

Quality & Safety

A
Description quality
86%
Schema completeness
74%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • LOWTool 'get_crime_year' description lacks action verbin get_crime_year
  • LOWTool 'get_news' description lacks action verbin get_news
  • LOWTool 'submit_report' description lacks action verbin submit_report

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,091Tokens (tool definitions)
~1.1 KBTypical response size
Moderate attention impact (0.85% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "cityalert": {
      "url": "https://cityalert.live/api/mcp"
    }
  }
}

Remote endpoints

https://cityalert.live/api/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_regions

List CityAlert focus regions (key, label, center, zoom, bbox). Use region keys with get_incidents.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_incidents(region, category, groups, minSeverity, q, ...)

Merged live incidents from all feeds plus manual reports. Filter by region key, category, group, severity, source, or bbox. Anonymous and free-key calls get a shared ~1-minute snapshot; a pro/business x-api-key header (from cityalert.live/account) unlocks real-time refresh and higher limits.

Input Schema

{
  "type": "object",
  "properties": {
    "region": {
      "description": "Focus-region key, e.g. 'vancouver' (see list_regions)",
      "type": "string"
    },
    "category": {
      "description": "Incident category",
      "type": "string",
      "enum": [
        "crime",
        "fire",
        "disaster",
        "weather",
        "unrest",
        "health",
        "infra",
        "alert",
        "report"
      ]
    },
    "groups": {
      "description": "Normalized subtypes to include, e.g. ['violent','property','collision','wildfire']. See group keys in the /api/incidents OpenAPI doc.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "minSeverity": {
      "description": "Minimum severity (low < medium < high < critical)",
      "type": "string",
      "enum": [
        "low",
        "medium",
        "high",
        "critical"
      ]
    },
    "q": {
      "description": "Case-insensitive substring match on type/title/neighbourhood",
      "type": "string",
      "maxLength": 100
    },
    "source": {
      "description": "Feed source, e.g. 'usgs', 'gdacs', 'eccc', 'vpd', 'bcws', 'vernon-media', 'manual'",
      "type": "string"
    },
    "bbox": {
      "description": "[minLon, minLat, maxLon, maxLat]",
      "type": "array",
      "prefixItems": [
        {
          "type": "number"
        },
        {
          "type": "number"
        },
        {
          "type": "number"
        },
        {
          "type": "number"
        }
      ],
      "items": false,
      "minItems": 4,
      "maxItems": 4
    },
    "limit": {
      "description": "Max incidents to return (default 250)",
      "type": "integer",
      "minimum": 1,
      "maximum": 5000
    },
    "refresh": {
      "description": "Bypass the feed cache and re-fetch sources",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_trends

Historical aggregates: VPD crime by year/month/type (6y), USGS M4+ quakes per region (10y), GDACS global events (3y), report and live snapshot stats.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_crime_year(year, includeIncidents)

Full-year VPD crime data: totals and ranked neighbourhood stats. Vancouver only, 2003-present.

Input Schema

{
  "type": "object",
  "properties": {
    "year": {
      "type": "integer",
      "minimum": 2003,
      "maximum": 2026,
      "description": "Year, 2003 to present"
    },
    "includeIncidents": {
      "description": "Include every incident point (large; default false)",
      "type": "boolean"
    }
  },
  "required": [
    "year"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_news(place, refresh)

Per-region safety news items, or news for an arbitrary place name.

Input Schema

{
  "type": "object",
  "properties": {
    "place": {
      "description": "Place name for ad-hoc news, e.g. 'Kelowna'",
      "type": "string",
      "maxLength": 60
    },
    "refresh": {
      "description": "Bypass the news cache (pro/business keys only)",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡submit_report(title, lat, lon, category, severity, ...)

File a manual geolocated incident report (same as POST /api/reports).

Input Schema

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "lat": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "lon": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "category": {
      "type": "string",
      "enum": [
        "crime",
        "fire",
        "disaster",
        "weather",
        "unrest",
        "health",
        "infra",
        "alert",
        "report"
      ]
    },
    "severity": {
      "type": "string",
      "enum": [
        "low",
        "medium",
        "high",
        "critical"
      ]
    },
    "description": {
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "title",
    "lat",
    "lon"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_dashboard(id)

Read a saved dashboard by id (shareable, read-only).

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡create_dashboard(name, config)

Create a shareable dashboard. Returns {id, token} — the token grants write access via PUT /api/dashboards, so save it.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 100
    },
    "config": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "Dashboard config object, e.g. {areas, categories, defaultTab}"
    }
  },
  "required": [
    "config"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Recommended Prompts

retrieve_data
Get details about [item] from CityAlert
Expected tools: get_incidents
fetch_info
Fetch [information type] using CityAlert
Expected tools: get_incidents
list_items
List all [items] available in CityAlert
Expected tools: list_regions
browse_collection
Show me the [collection] from CityAlert
Expected tools: list_regions
explore_workflow
List available [items], then get details for each one using CityAlert
Expected tools: list_regionsget_incidents

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools
verifiedversion not recorded8 tools