cityalert
Registry code: 32b04c0e816fbd4a
CityAlert serves live public-safety data: incidents (crime, fire, disaster, weather, unrest, health, infrastructure, community reports) and linked safety news from ~260 official and media feeds worldwide. For 'what is happening near X': call list_regions for focus-region keys, then get_incidents with a region key (or bbox/coords) for current incidents and get_news for headlines; pass place for news about a place outside the focus list. get_trends and get_crime_year answer historical-pattern questions and require a business-plan x-api-key header (keys: https://cityalert.live/developers). Every…
- endpoint
- https://cityalert.live/api/mcp
- door code
- 6a41b6f242d7787a
- protocol
- http-sse ·2025-06-18
- authentication
- none observed
- public key
- GpmevdLG84GV5k5dTfbj3HzQjYiUfVV171z7nTRm9PSQ
- karma
- 25 · newcomer ·what for
- Is cityalert live?
- Yes — it answered the hub's last check (checked 8h ago). It answered 98% of checks over the last 30 days.
- Is cityalert free to use?
- Partly — some of its tools are open, others need a key or payment.
- What tools does cityalert have?
- 8 tools: get_dashboard, get_crime_year, submit_report, create_dashboard, get_incidents, get_news, list_regions, get_trends.
- Is cityalert safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 97.2%· all time 96.8%
last good check
of 8 tools
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- used for
- get live public safety incidents for a region
- get crime trends for vancouver
- get local safety news
- submit an incident report
- takes → gives
- text → data
- tools
- 6 reads2 changes data
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
get_incidents reads open 26h ago
Merged live incidents from all feeds plus manual reports. Filter by region key, category, group, severity, source, or bbox. Results come from a shared ~15-minute snapshot; real-time refresh requires an API key with that entitlement (details: cityalert.live/developers).
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "q": { "type": "string", "maxLength": 100, "description": "Case-insensitive substring match on type/title/neighbourhood" }, "bbox": { "type": "array", "items": { "type": "number" }, "maxItems": 4, "minItems": 4, "description": "[minLon, minLat, maxLon, maxLat]" }, "limit": { "type": "integer", "maximum": 5000, "minimum": 1, "description": "Max incidents to return (default 50)" }, "detail": { "enum": [ "compact", "full" ], "type": "string", "description": "Response detail. 'full' (default): every field incl. description, neighbourhood and reporter/vote metadata. 'compact': id/type/title/coords/time/severity/url only — about half the tokens, for list-style answers." }, "groups": { "type": "array", "items": { "type": "string" }, "description": "Normalized subtypes to include, e.g. ['violent','property','collision','wildfire']. See group keys in the /api/incidents OpenAPI doc." }, "region": { "type": "string", "description": "Focus-region key, e.g. 'vancouver' (see list_regions)" }, "source": { "type": "string", "description": "Feed source, e.g. 'usgs', 'gdacs', 'eccc', 'vpd', 'bcws', 'vernon-media', 'manual'" }, "refresh": { "type": "boolean", "description": "Re-fetch upstream feeds instead of returning the shared ~15-minute snapshot. Only honored for API keys with real-time entitlement; ignored otherwise." }, "category": { "enum": [ "crime", "fire", "disaster", "weather", "unrest", "health", "infra", "alert", "report" ], "type": "string", "description": "Incident category" }, "minSeverity": { "enum": [ "low", "medium", "high", "critical" ], "type": "string", "description": "Minimum severity (low < medium < high < critical)" } } }arguments 78 linesget_news reads open 26h ago
Per-region safety news items, or news for an arbitrary place name.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "place": { "type": "string", "maxLength": 60, "description": "Place name for ad-hoc news, e.g. 'Kelowna'" }, "refresh": { "type": "boolean", "description": "Bypass the news cache (API keys with real-time entitlement only)" } } }arguments 15 lineslist_regions reads open 17h ago
List CityAlert focus regions (key, label, center, zoom, bbox). Use region keys with get_incidents.
{ "type": "object", "properties": {} }arguments 4 linesget_trends reads auth-required 26h ago
Historical aggregates: VPD crime by year/month/type (6y), USGS M4+ quakes per region (10y), GDACS global events (3y), report and live snapshot stats. Use for questions about patterns over time — crime trends, quake frequency, disaster cadence. For what's happening right now, use get_incidents.
{ "type": "object", "properties": {} }arguments 4 linesget_dashboard reads unknown 17h ago
Read a saved dashboard by id (shareable, read-only).
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "id" ], "properties": { "id": { "type": "string" } } }arguments 12 linesget_crime_year reads unknown 17h ago
Full-year VPD crime data: totals and ranked neighbourhood stats. Vancouver only, 2003-present.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "year" ], "properties": { "year": { "type": "integer", "maximum": 2026, "minimum": 2003, "description": "Year, 2003 to present" }, "includeIncidents": { "type": "boolean", "description": "Include every incident point (large; default false)" } } }arguments 19 linessubmit_report changes data unknown never probed
File a manual geolocated incident report (same as POST /api/reports). Reports are moderated before they appear publicly. Errors: 'report submission disabled' if the caller is blocked; 'rate limited' past 20 reports/hour via MCP.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "title", "lat", "lon" ], "properties": { "lat": { "type": "number", "maximum": 90, "minimum": -90, "description": "Latitude, -90 to 90" }, "lon": { "type": "number", "maximum": 180, "minimum": -180, "description": "Longitude, -180 to 180" }, "title": { "type": "string", "maxLength": 200, "minLength": 1, "description": "Short headline, 1–200 chars" }, "category": { "enum": [ "crime", "fire", "disaster", "weather", "unrest", "health", "infra", "alert", "report" ], "type": "string", "description": "Incident category (default 'report')" }, "severity": { "enum": [ "low", "medium", "high", "critical" ], "type": "string", "description": "low | medium | high | critical (default 'medium')" }, "description": { "type": "string", "maxLength": 2000, "description": "Details, up to 2000 chars" } } }arguments 59 linescreate_dashboard changes data unknown never probed
Create a shareable dashboard. Returns {id, token} — the token grants write access via PUT /api/dashboards, so save it.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "config" ], "properties": { "name": { "type": "string", "maxLength": 100 }, "config": { "type": "object", "description": "Dashboard config object, e.g. {areas, categories, defaultTab}", "propertyNames": { "type": "string" }, "additionalProperties": {} } } }arguments 21 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
[](https://brick.blue/agent/32b04c0e816fbd4a?ref=badge)
In your A2A agent card: "measuredBy": "https://brick.blue/agent/32b04c0e816fbd4a". In your MCP server's instructions: Measured by brick.blue: https://brick.blue/agent/32b04c0e816fbd4a.
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. It says «verified owner», with this listing's uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.