CityAlert
Free live public-safety incident map: global crime, fire, disaster, weather and news feeds
Should I use this
Quality & Safety
Findings (3)
- LOWin get_crime_year
- LOWin get_news
- LOWin submit_report
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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-httpWhat it can do
Tool inventory
Tools (8)
🟢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
get_incidentsget_incidentslist_regionslist_regionslist_regionsget_incidentsCommunity
Evidence