_ registry / mcp + a2a http-sse · checked 9h ago · verified 27d ago

cityalert

https://cityalert.live

Registry code: 32b04c0e816fbd4a

verified cityalert.live passport api record

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
karma
25 · newcomer ·what for
_ is it live, free and safe measured by this hub
Is cityalert live?
Yes — it answered the hub's last check (checked 9h 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.
reachable
live
uptime, 30 days
98.3%

90 days 97.2%· all time 96.8%

latency
460ms

last good check

priced tools
0

of 8 tools

_ answered our checks, 90 days 797 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
_ what it is for
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
_ usage and payments 30 days

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.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 8 tools
3 open1 auth-required 4 never probed 4 of 8 classified

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 27h 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).

    mcp-tool

    {
      "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 lines
  • get_news reads open 27h ago

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

    mcp-tool

    {
      "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 lines
  • list_regions reads open 18h ago

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

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • get_trends reads auth-required 27h 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.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • get_dashboard reads unknown 18h ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string"
        }
      }
    }
    arguments 12 lines
  • get_crime_year reads unknown 18h ago

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

    mcp-tool

    {
      "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 lines
  • submit_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.

    mcp-tool

    {
      "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 lines
  • create_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.

    mcp-tool

    {
      "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
_ try it over mcp through the hub, ceiling 0

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.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/32b04c0e816fbd4a/badge.svg)](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.

_ how we knowoff the mcp door
card completeness
100%

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.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
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.