Skip to main content
Glama

earthquake-mcp-server

Server Details

Search USGS and EMSC seismic data — real-time feeds, event queries, and earthquake counts.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 40 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/earthquake-mcp-server
GitHub Stars
1
Server Listing
earthquake-mcp-server

TDQS

A4.5/5.0

Scored across 4 tools

Disambiguation4/5

The four tools target distinct purposes: statistical counting, record search, single-event detail by ID, and real-time feeds. The mild overlap between earthquake_count and earthquake_search (both accept similar filters, and search also returns totalCount) is explicitly addressed in the descriptions, which guide the agent to count first to gauge size.

Naming Consistency4/5

All names use a consistent snake_case with the earthquake_ prefix (earthquake_count, earthquake_search, earthquake_get_event, earthquake_get_feed). Minor deviation in that count/search use a single verb while the other two use verb_noun, but the pattern is readable and predictable.

Tool Count4/5

Four tools is well-scoped for a read-only earthquake catalog server, with each covering a distinct access pattern (count, search, detail, feed). It is slightly lean, but no tool feels redundant or missing a partner.

Completeness4/5

The read-only lifecycle is well covered: aggregate statistics, filtered search, per-event product detail, and real-time feeds. There are no obvious dead ends for querying, though station/network metadata or catalog-listing helpers are absent—minor gaps that agents can work around.

Available Tools

4 tools
earthquake_countCount EarthquakesA
Read-onlyIdempotent
Inspect

Count earthquakes matching filters without fetching full records. Use for statistical queries ("how many M5+ earthquakes in 2025?") or to gauge result size before calling earthquake_search. Omitting start_time counts only the last 30 days, so pass an explicit range for any period-specific question; queryEcho reports the window and filters the count actually covers. When exceeds_limit is true, the count exceeds 20,000 and a full search would be truncated — narrow filters before fetching. USGS returns the max_allowed cap (20,000); EMSC count endpoint does not return this field (max_allowed will be null). Counts can be scoped to a rectangular study area with min_latitude, max_latitude, min_longitude, and max_longitude — each independently optional. Combining the box with the lat/lon/radius circle intersects the two, counting only events inside both. Both catalogs include non-tectonic records, so a radius over a mining region counts quarry blasts alongside earthquakes — pass event_type="earthquake" on USGS to exclude them. USGS-specific filters (alert_level, event_type, min_felt, min_significance) are not sent when source=emsc — the response names them in ignoredFilters.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoData source. Both catalogs are global. "usgs" covers global events with PAGER, DYFI, and ShakeMap metadata. "emsc" is an independent global catalog operated by the European-Mediterranean Seismological Centre — use it to cross-check a count from a separate network. It has no PAGER, DYFI, or ShakeMap metadata; its station coverage is densest around Europe and the Mediterranean, so counts of small events differ most by region.usgs
end_timeNoEnd of time range as ISO 8601, in the same forms start_time accepts. Defaults to current time if omitted.
latitudeNoLatitude for radius search. Requires longitude and radius_km.
min_feltNoMinimum number of DYFI (Did You Feel It?) reports. Use to count events with confirmed public impact. Only available from USGS.
longitudeNoLongitude for radius search. Requires latitude and radius_km.
radius_kmNoSearch radius in kilometers from the lat/lon point. Max 20001.6, the ceiling USGS enforces — half the Earth's great-circle circumference. Converted to degrees for EMSC (1° ≈ 111.2 km).
event_typeNoFilter by upstream event classification, e.g. "earthquake" to exclude quarry blasts and explosions from the count, or "quarry blast" to count only those. Matched verbatim against the USGS catalog, which accepts any string and returns a count of zero for an unrecognized one. Only available from USGS.
start_timeNoStart of time range as ISO 8601 (e.g. "2026-01-01" or "2026-05-23T00:00:00"). A bare year expands to January 1st and an unpadded month or day is zero-padded, so both sources honor the same window. Defaults to 30 days before end_time (or before the current time) if omitted — applied server-side so USGS and EMSC honor the same window.
alert_levelNoMinimum PAGER alert level. PAGER estimates economic loss and casualties. "green" = minimal impact; "red" = extreme. Only available from USGS.
max_depth_kmNoMaximum depth in kilometers. Bounded to the documented -100 to 1000 km catalog envelope.
max_latitudeNoNorthern edge of a bounding-box search, in degrees.
min_depth_kmNoMinimum depth in kilometers. Bounded to the documented -100 to 1000 km catalog envelope. Shallow quakes (0–70 km) typically cause more surface damage than deep quakes (>300 km).
min_latitudeNoSouthern edge of a bounding-box search, in degrees. Independent of the other three box parameters — supply any of them. Must not exceed max_latitude when both are given.
max_longitudeNoEastern edge of a bounding-box search, in degrees.
max_magnitudeNoMaximum magnitude.
min_longitudeNoWestern edge of a bounding-box search, in degrees. Range extends beyond ±180 so a box can cross the antimeridian (e.g. min_longitude=170, max_longitude=190) — always keep min_longitude at or below max_longitude rather than inverting the pair.
min_magnitudeNoMinimum magnitude (Richter or equivalent). M2.5+ is felt by some people; M5+ can cause damage; M7+ is major.
min_significanceNoMinimum USGS significance score (0–2000+). Combines magnitude, felt reports, and PAGER estimates. Significant events typically score 600+. Only available from USGS.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNoNumber of events matching the query.
errorNoPresent when the call failed. Absent on success.
sourceNoData source used.
queryEchoNoEcho of the effective parameters the count covers, including server-resolved defaults. Read start_time and end_time to know which window the count spans — a filter absent here was not sent upstream.
max_allowedNoMaximum events the API would return for a full fetch. 20000 for USGS. Null for EMSC — the EMSC count endpoint does not return this field.
exceeds_limitNoTrue when count exceeds 20000 — a full earthquake_search would be truncated. For EMSC, evaluated against the known 20000 limit since max_allowed is not returned. Narrow filters to retrieve all matching events.
ignoredFiltersNoUSGS-only filters supplied in the input but not sent upstream because source=emsc does not support them. The count is NOT constrained by these — re-run with source=usgs to apply them. Absent when every supplied filter was applied.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the readOnly/openWorld/idempotent annotations: the 20,000 cap, exceeds_limit truncation semantics, the USGS vs EMSC max_allowed discrepancy, ignoredFilters for unsupported filters, and the default 30-day window. These are real operational traits not captured by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads what the tool does and the key default trap, then layers caveats. Dense but every sentence carries operational weight (caps, intersections, source divergence). Slightly long, but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An 18-parameter, filter-heavy count tool with an output schema is fully covered: the description explains the default window, the cap, exceed behavior, source-specific filter dropping, and spatial intersection — everything an agent needs to call it correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds meaning beyond the already 100%-covered schema: the bounding-box params are independently optional, the box intersects the circle, event_type='earthquake' excludes quarry blasts, and source=emsc triggers ignoredFilters for USGS-only params. This is genuine cross-parameter semantics the schema cannot express.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource with scope: 'Count earthquakes matching filters without fetching full records.' Explicitly contrasts with the sibling earthquake_search by positioning it as a gauge-before-fetch tool. An agent can distinguish count vs. get_event vs. search without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use ('statistical queries, or to gauge result size before calling earthquake_search'), names the sibling alternative, and specifies the start_time default trap. The exceeds_limit guidance tells the agent exactly what to do next (narrow filters), which is actionable routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

earthquake_get_eventGet Earthquake Event DetailA
Read-onlyIdempotent
Inspect

Fetch detail for a specific earthquake by USGS event ID. Returns the same normalized event a search result carries, plus a projection of the analysis products only the single-event response holds: PAGER impact alert and report link, ShakeMap peak intensity and ground motion, DYFI felt-report totals, the moment-tensor focal mechanism, landslide and liquefaction alerts, origin quality (azimuthal gap, station count, location uncertainty), and finite-fault rupture dimensions. Products are omitted when USGS produced none — a small automatic event typically has no detail at all, while a large reviewed one has most of it. Event IDs appear in the "id" field of earthquake_get_feed and earthquake_search results. This tool is USGS-only — EMSC events have no per-event detail endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesUSGS event ID, e.g. "hv74966427" or "us6000sznj". Found in the "id" field of earthquake_get_feed and earthquake_search results.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
eventNoFull earthquake event detail.
detailNoAnalysis products USGS attached to this event. Absent when the event carries none — that means no product was produced, not that impact was zero.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, open-world, but the description adds substantial context beyond that: products are omitted when USGS produced none, a small automatic event typically has no detail at all while a large reviewed one has most of it, and the response is a superset of the search-result normalized event. That variability is exactly what an agent needs to avoid misreading an empty response.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and purpose in the first clause, and the product enumeration, while long, each item earns its place by telling the agent which fields may be present. Slightly dense but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be fully explained, yet the description usefully characterizes which products appear and when they are absent. Combined with the ID provenance and USGS-only constraint, nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents the event_id format and its provenance, which the description largely repeats. Baseline 3 is appropriate; the description adds no syntax or validation detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fetch detail for a specific earthquake by USGS event ID') and immediately distinguishes it from search results by naming the single-event-only products it returns. The USGS-only scope further separates it from any EMSC-related sibling behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tells the agent where to get the required ID (the 'id' field of earthquake_get_feed and earthquake_search results) and gives an explicit exclusion: EMSC events have no per-event detail endpoint. That is both when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

earthquake_get_feedGet USGS Earthquake FeedA
Read-onlyIdempotent
Inspect

Fetch a USGS pre-computed real-time earthquake feed by magnitude tier and time window. These feeds are CDN-cached by USGS and faster and more available than the query API — use them for "what's happening now" queries. "all" includes microseisms (M<1); "significant" is a USGS curation based on magnitude, felt reports, and PAGER impact estimates. "hour" returns 0–10 events typically; "month" can exceed 10,000 for the "all" tier, so results are returned a page at a time: count is the page size, totalCount the whole feed, and nextCursor the input for the following page. The cursor is opaque and must be passed back verbatim — unlike earthquake_search, these feeds have no upstream paging parameter and USGS regenerates them about once a minute, so a numeric offset across two calls would skip or repeat events. For historical or filtered queries, use earthquake_search instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum events to return in this call. Default 100, max 1000. Applies to the first page; later pages carry the page size inside the cursor, so set it on the first call rather than changing it mid-sequence.
cursorNoOpaque token for the next page, taken verbatim from a previous call's nextCursor. Omit for the first page. Do not construct, parse, or edit it — it encodes a position in the feed snapshot and is rejected if malformed.
time_windowNoTime window for the feed. "hour" typically returns 0–10 events; "month" can exceed 10,000 for the "all" tier. Prefer "hour" or "day" for real-time status checks.day
magnitude_tierNoMinimum magnitude threshold for the feed. "all" includes microseisms (M<1). "1.0" is M1.0+. "2.5" is M2.5+. "4.5" is M4.5+. "significant" is a USGS curated selection based on magnitude, felt reports, and PAGER impact estimates — not purely magnitude-based.2.5

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNoNumber of events returned in this page, not the whole feed.
errorNoPresent when the call failed. Absent on success.
eventsNoEarthquake events for this page, newest first.
noticeNoRecovery guidance when the feed contains no events, or how to continue when a page was capped — narrowing the magnitude tier, widening the time window, paging with the cursor, or using earthquake_search for filtered queries. Absent when a single page covers the whole feed.
feed_urlNoSource feed URL.
truncatedNoTrue when the feed holds more events than this page returned. nextCursor carries the input for the following page.
nextCursorNoOpaque token to pass back as the cursor input for the next page. Present only when more events remain; absent means this was the last page.
totalCountNoNumber of events in the whole feed, across every page.
generated_atNoISO 8601 UTC timestamp when this feed was generated by USGS.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/idempotent, but the description adds substantial behavior beyond them: CDN caching at USGS, regeneration roughly once a minute, the fact that cursors are opaque and position-based (so numeric offsets would skip/repeat events), and typical result volumes per tier. This is the kind of context that changes how an agent paginates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose and the sibling contrast, then layers pagination and tier detail. Efficient overall, though the hour/month volume figures repeat the schema enum descriptions, which is mild redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paginated, read-only feed tool, the description covers paging mechanics, cursor handling, freshness, and alternatives. With an output schema present it does not need to enumerate return fields, and it doesn't.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description still adds value beyond the schema by explaining that limit applies to the first page and later pages carry page size inside the cursor, and that cursor must be passed back verbatim. The tier semantics largely restate the enum descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fetch a USGS pre-computed real-time earthquake feed by magnitude tier and time window') and explicitly contrasts itself with the sibling earthquake_search for historical/filtered queries. An agent can distinguish this from earthquake_count, earthquake_get_event, and earthquake_search immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use guidance ('use them for what's happening now queries') and an explicit alternative with its selection condition ('For historical or filtered queries, use earthquake_search instead'). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updates
    • Changedearthquake_count2 fields changed
      • removedOutput schema / properties / max_allowed / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / max_allowed / type
        Added value: +[
        +  "number",
        +  "null"
        +]
    • Changedearthquake_get_event14 fields changed
      • removedOutput schema / properties / event / properties / cdi / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / event / properties / cdi / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / event / properties / depth_km / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / event / properties / depth_km / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / event / properties / felt / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / event / properties / felt / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / event / properties / magnitude / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / event / properties / magnitude / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / event / properties / mmi / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / event / properties / mmi / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / event / properties / significance / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / event / properties / significance / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / event / properties / tsunami / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / event / properties / tsunami / type
        Added value: +[
        +  "number",
        +  "null"
        +]
    • Changedearthquake_get_feed14 fields changed
      • removedOutput schema / properties / events / items / properties / cdi / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / events / items / properties / cdi / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / events / items / properties / depth_km / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / events / items / properties / depth_km / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / events / items / properties / felt / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / events / items / properties / felt / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / events / items / properties / magnitude / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / events / items / properties / magnitude / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / events / items / properties / mmi / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / events / items / properties / mmi / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / events / items / properties / significance / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / events / items / properties / significance / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / events / items / properties / tsunami / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / events / items / properties / tsunami / type
        Added value: +[
        +  "number",
        +  "null"
        +]
    • Changedearthquake_search14 fields changed
      • removedOutput schema / properties / events / items / properties / cdi / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / events / items / properties / cdi / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / events / items / properties / depth_km / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / events / items / properties / depth_km / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / events / items / properties / felt / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / events / items / properties / felt / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / events / items / properties / magnitude / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / events / items / properties / magnitude / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / events / items / properties / mmi / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / events / items / properties / mmi / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / events / items / properties / significance / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / events / items / properties / significance / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / events / items / properties / tsunami / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / events / items / properties / tsunami / type
        Added value: +[
        +  "number",
        +  "null"
        +]
  2. 4 tool updates
    • Changedearthquake_count6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "count",
        +      "max_allowed",
        +      "source",
        +      "exceeds_limit"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `invalid_radius`: latitude or longitude provided without radius_km, or vice versa. `invalid_bounding_box`: min_latitude exceeds max_latitude, or min_longitude exceeds max_longitude. `source_unavailable`: Selected source API returns a 5xx or is unreachable. `source_timeout`: Selected source API did not answer before the request deadline. `upstream_rejected`: The source API rejected the query parameters and explained why in its response body. `upstream_rejected_no_reason`: The source API rejected the query but its response body carried no usable explanation. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "invalid_radius",
        +            "invalid_bounding_box",
        +            "source_unavailable",
        +            "source_timeout",
        +            "upstream_rejected",
        +            "upstream_rejected_no_reason"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "count",
        -  "max_allowed",
        -  "source",
        -  "exceeds_limit"
        -]
    • Changedearthquake_get_event6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "event"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: No event matches the provided event_id. `source_unavailable`: The USGS event API returns a 5xx, serves HTML, or is unreachable. `source_timeout`: The USGS event API did not answer before the request deadline. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found",
        +            "source_unavailable",
        +            "source_timeout"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "event"
        -]
    • Changedearthquake_get_feed6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "count",
        +      "generated_at",
        +      "events",
        +      "feed_url"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `feed_unavailable`: USGS feed endpoint returns a 5xx, HTML, or is unreachable. `feed_timeout`: USGS feed endpoint did not answer before the request deadline. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "feed_unavailable",
        +            "feed_timeout"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "count",
        -  "generated_at",
        -  "events",
        -  "feed_url"
        -]
    • Changedearthquake_search6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "count",
        +      "source",
        +      "events"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `invalid_radius`: latitude or longitude provided without radius_km, or vice versa. `invalid_bounding_box`: min_latitude exceeds max_latitude, or min_longitude exceeds max_longitude. `source_unavailable`: Selected source API returns a 5xx or is unreachable. `source_timeout`: Selected source API did not answer before the request deadline. `upstream_rejected`: The source API rejected the query parameters and explained why in its response body. `upstream_rejected_no_reason`: The source API rejected the query but its response body carried no usable explanation. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "invalid_radius",
        +            "invalid_bounding_box",
        +            "source_unavailable",
        +            "source_timeout",
        +            "upstream_rejected",
        +            "upstream_rejected_no_reason"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "count",
        -  "source",
        -  "events"
        -]
  3. 3 tool updates
    • Changedearthquake_get_event3 fields changed
      • changedOutput schema / properties / detail / properties / shakemap / properties / max_pga / description
        Previous value: -"Maximum modeled peak ground acceleration, in percent of g."New value: +"Maximum modeled peak ground acceleration, in g — a fraction of standard gravity, as USGS ShakeMap publishes it (0.4 is four tenths of g)."
      • addedOutput schema / properties / event / properties / event_certainty
        Added value: +{
        +  "description": "How certain the source is of event_type: \"known\" (asserted), \"suspected\", \"unknown\", or \"unreported\". EMSC publishes this as the first character of its event-type code — a suspected explosion is not a confirmed one, and this is the only field that says so. Absent for USGS, which publishes no certainty axis, and absent for an EMSC code outside the published nomenclature.",
        +  "enum": [
        +    "known",
        +    "suspected",
        +    "unknown",
        +    "unreported"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / event / properties / event_type / description
        Previous value: -"Upstream event classification. USGS spells it out — \"earthquake\", \"quarry blast\", \"explosion\", \"ice quake\" — while EMSC publishes a two-letter evtype code, \"ke\" for a known earthquake and \"ue\" for an unknown event. Not every record in either catalog is a tectonic earthquake. Absent when the source publishes no classification."New value: +"What kind of event this is, in one vocabulary whichever source served it — the QuakeML type names USGS publishes (\"earthquake\", \"quarry blast\", \"explosion\", \"ice quake\"). EMSC's two-character code is decoded to the same names, so the same event carries the same value from either source; how sure the source is rides on event_certainty instead. A code outside the published nomenclature is forwarded verbatim rather than guessed at. Not every record in either catalog is a tectonic earthquake. Absent when the source publishes no classification."
    • Changedearthquake_get_feed2 fields changed
      • addedOutput schema / properties / events / items / properties / event_certainty
        Added value: +{
        +  "description": "How certain the source is of event_type: \"known\" (asserted), \"suspected\", \"unknown\", or \"unreported\". EMSC publishes this as the first character of its event-type code — a suspected explosion is not a confirmed one, and this is the only field that says so. Absent for USGS, which publishes no certainty axis, and absent for an EMSC code outside the published nomenclature.",
        +  "enum": [
        +    "known",
        +    "suspected",
        +    "unknown",
        +    "unreported"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / events / items / properties / event_type / description
        Previous value: -"Upstream event classification. USGS spells it out — \"earthquake\", \"quarry blast\", \"explosion\", \"ice quake\" — while EMSC publishes a two-letter evtype code, \"ke\" for a known earthquake and \"ue\" for an unknown event. Not every record in either catalog is a tectonic earthquake. Absent when the source publishes no classification."New value: +"What kind of event this is, in one vocabulary whichever source served it — the QuakeML type names USGS publishes (\"earthquake\", \"quarry blast\", \"explosion\", \"ice quake\"). EMSC's two-character code is decoded to the same names, so the same event carries the same value from either source; how sure the source is rides on event_certainty instead. A code outside the published nomenclature is forwarded verbatim rather than guessed at. Not every record in either catalog is a tectonic earthquake. Absent when the source publishes no classification."
    • Changedearthquake_search5 fields changed
      • addedOutput schema / properties / countUnavailable
        Added value: +{
        +  "description": "True when the follow-up total-count query failed, so the total is unknown for this call rather than never requested. The returned events are complete and unaffected; only totalCount is missing. Retry earthquake_count with the same filters to recover the total. Absent whenever the count succeeded or was never needed.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / events / items / properties / event_certainty
        Added value: +{
        +  "description": "How certain the source is of event_type: \"known\" (asserted), \"suspected\", \"unknown\", or \"unreported\". EMSC publishes this as the first character of its event-type code — a suspected explosion is not a confirmed one, and this is the only field that says so. Absent for USGS, which publishes no certainty axis, and absent for an EMSC code outside the published nomenclature.",
        +  "enum": [
        +    "known",
        +    "suspected",
        +    "unknown",
        +    "unreported"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / events / items / properties / event_type / description
        Previous value: -"Upstream event classification. USGS spells it out — \"earthquake\", \"quarry blast\", \"explosion\", \"ice quake\" — while EMSC publishes a two-letter evtype code, \"ke\" for a known earthquake and \"ue\" for an unknown event. Not every record in either catalog is a tectonic earthquake. Absent when the source publishes no classification."New value: +"What kind of event this is, in one vocabulary whichever source served it — the QuakeML type names USGS publishes (\"earthquake\", \"quarry blast\", \"explosion\", \"ice quake\"). EMSC's two-character code is decoded to the same names, so the same event carries the same value from either source; how sure the source is rides on event_certainty instead. A code outside the published nomenclature is forwarded verbatim rather than guessed at. Not every record in either catalog is a tectonic earthquake. Absent when the source publishes no classification."
      • changedOutput schema / properties / totalCount / description
        Previous value: -"Total events matching the query before the limit was applied. Fetched via a follow-up count query when results are truncated at the limit; absent otherwise."New value: +"Total events matching the query before the limit was applied. Fetched via a follow-up count query when results are truncated at the limit. Absent when results were not capped, and when that follow-up query failed — countUnavailable separates the two."
      • changedOutput schema / properties / truncated / description
        Previous value: -"True when results were capped by the limit parameter and more events remain. totalCount carries the full match count when available, and nextOffset the input for the following page."New value: +"True when results were capped by the limit parameter. totalCount carries the full match count when available, and nextOffset the input for the following page. With countUnavailable set the total is unknown, so this flag means the page was filled, not that more events are confirmed to remain."
  4. 2 tool updates
    • Changedearthquake_count21 fields changed
      • changedInput schema / properties / end_time / description
        Previous value: -"End of time range as ISO 8601. Defaults to current time if omitted."New value: +"End of time range as ISO 8601, in the same forms start_time accepts. Defaults to current time if omitted."
      • addedInput schema / properties / end_time / pattern
        Added value: +"^\\d{4}(-\\d{1,2}(-\\d{1,2})?)?([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:?\\d{2})?)?$"
      • addedInput schema / properties / event_type / minLength
        Added value: +1
      • changedInput schema / properties / max_depth_km / description
        Previous value: -"Maximum depth in kilometers."New value: +"Maximum depth in kilometers. Bounded to the documented -100 to 1000 km catalog envelope."
      • addedInput schema / properties / max_depth_km / maximum
        Added value: +1000
      • addedInput schema / properties / max_depth_km / minimum
        Added value: +-100
      • addedInput schema / properties / max_latitude
        Added value: +{
        +  "description": "Northern edge of a bounding-box search, in degrees.",
        +  "maximum": 90,
        +  "minimum": -90,
        +  "type": "number"
        +}
      • addedInput schema / properties / max_longitude
        Added value: +{
        +  "description": "Eastern edge of a bounding-box search, in degrees.",
        +  "maximum": 360,
        +  "minimum": -360,
        +  "type": "number"
        +}
      • changedInput schema / properties / min_depth_km / description
        Previous value: -"Minimum depth in kilometers. Shallow quakes (0–70 km) typically cause more surface damage than deep quakes (>300 km)."New value: +"Minimum depth in kilometers. Bounded to the documented -100 to 1000 km catalog envelope. Shallow quakes (0–70 km) typically cause more surface damage than deep quakes (>300 km)."
      • addedInput schema / properties / min_depth_km / maximum
        Added value: +1000
      • addedInput schema / properties / min_depth_km / minimum
        Added value: +-100
      • addedInput schema / properties / min_latitude
        Added value: +{
        +  "description": "Southern edge of a bounding-box search, in degrees. Independent of the other three box parameters — supply any of them. Must not exceed max_latitude when both are given.",
        +  "maximum": 90,
        +  "minimum": -90,
        +  "type": "number"
        +}
      • addedInput schema / properties / min_longitude
        Added value: +{
        +  "description": "Western edge of a bounding-box search, in degrees. Range extends beyond ±180 so a box can cross the antimeridian (e.g. min_longitude=170, max_longitude=190) — always keep min_longitude at or below max_longitude rather than inverting the pair.",
        +  "maximum": 360,
        +  "minimum": -360,
        +  "type": "number"
        +}
      • changedInput schema / properties / radius_km / description
        Previous value: -"Search radius in kilometers from the lat/lon point. Converted to degrees for EMSC (1° ≈ 111.2 km)."New value: +"Search radius in kilometers from the lat/lon point. Max 20001.6, the ceiling USGS enforces — half the Earth's great-circle circumference. Converted to degrees for EMSC (1° ≈ 111.2 km)."
      • changedInput schema / properties / radius_km / maximum
        Previous value: -20002New value: +20001.6
      • changedInput schema / properties / start_time / description
        Previous value: -"Start of time range as ISO 8601 (e.g. \"2026-01-01\" or \"2026-05-23T00:00:00\"). Defaults to 30 days before end_time (or before the current time) if omitted — applied server-side so USGS and EMSC honor the same window."New value: +"Start of time range as ISO 8601 (e.g. \"2026-01-01\" or \"2026-05-23T00:00:00\"). A bare year expands to January 1st and an unpadded month or day is zero-padded, so both sources honor the same window. Defaults to 30 days before end_time (or before the current time) if omitted — applied server-side so USGS and EMSC honor the same window."
      • addedInput schema / properties / start_time / pattern
        Added value: +"^\\d{4}(-\\d{1,2}(-\\d{1,2})?)?([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:?\\d{2})?)?$"
      • addedOutput schema / properties / queryEcho / properties / max_latitude
        Added value: +{
        +  "description": "Northern bounding-box edge sent upstream, in degrees.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / queryEcho / properties / max_longitude
        Added value: +{
        +  "description": "Eastern bounding-box edge sent upstream, in degrees.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / queryEcho / properties / min_latitude
        Added value: +{
        +  "description": "Southern bounding-box edge sent upstream, in degrees.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / queryEcho / properties / min_longitude
        Added value: +{
        +  "description": "Western bounding-box edge sent upstream, in degrees.",
        +  "type": "number"
        +}
    • Changedearthquake_search21 fields changed
      • changedInput schema / properties / end_time / description
        Previous value: -"End of time range as ISO 8601. Defaults to current time if omitted."New value: +"End of time range as ISO 8601, in the same forms start_time accepts. Defaults to current time if omitted."
      • addedInput schema / properties / end_time / pattern
        Added value: +"^\\d{4}(-\\d{1,2}(-\\d{1,2})?)?([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:?\\d{2})?)?$"
      • addedInput schema / properties / event_type / minLength
        Added value: +1
      • changedInput schema / properties / max_depth_km / description
        Previous value: -"Maximum depth in kilometers."New value: +"Maximum depth in kilometers. Bounded to the documented -100 to 1000 km catalog envelope."
      • addedInput schema / properties / max_depth_km / maximum
        Added value: +1000
      • addedInput schema / properties / max_depth_km / minimum
        Added value: +-100
      • addedInput schema / properties / max_latitude
        Added value: +{
        +  "description": "Northern edge of a bounding-box search, in degrees.",
        +  "maximum": 90,
        +  "minimum": -90,
        +  "type": "number"
        +}
      • addedInput schema / properties / max_longitude
        Added value: +{
        +  "description": "Eastern edge of a bounding-box search, in degrees.",
        +  "maximum": 360,
        +  "minimum": -360,
        +  "type": "number"
        +}
      • changedInput schema / properties / min_depth_km / description
        Previous value: -"Minimum depth in kilometers. Shallow quakes (0–70 km) typically cause more surface damage than deep quakes (>300 km)."New value: +"Minimum depth in kilometers. Bounded to the documented -100 to 1000 km catalog envelope. Shallow quakes (0–70 km) typically cause more surface damage than deep quakes (>300 km)."
      • addedInput schema / properties / min_depth_km / maximum
        Added value: +1000
      • addedInput schema / properties / min_depth_km / minimum
        Added value: +-100
      • addedInput schema / properties / min_latitude
        Added value: +{
        +  "description": "Southern edge of a bounding-box search, in degrees. Independent of the other three box parameters — supply any of them. Must not exceed max_latitude when both are given.",
        +  "maximum": 90,
        +  "minimum": -90,
        +  "type": "number"
        +}
      • addedInput schema / properties / min_longitude
        Added value: +{
        +  "description": "Western edge of a bounding-box search, in degrees. Range extends beyond ±180 so a box can cross the antimeridian (e.g. min_longitude=170, max_longitude=190) — always keep min_longitude at or below max_longitude rather than inverting the pair.",
        +  "maximum": 360,
        +  "minimum": -360,
        +  "type": "number"
        +}
      • changedInput schema / properties / radius_km / description
        Previous value: -"Search radius in kilometers from the lat/lon point. 100 km covers a metro region; 500 km covers a large country. Converted to degrees for EMSC (1° ≈ 111.2 km)."New value: +"Search radius in kilometers from the lat/lon point. 100 km covers a metro region; 500 km covers a large country. Max 20001.6, the ceiling USGS enforces. Converted to degrees for EMSC (1° ≈ 111.2 km)."
      • changedInput schema / properties / radius_km / maximum
        Previous value: -20002New value: +20001.6
      • changedInput schema / properties / start_time / description
        Previous value: -"Start of time range as ISO 8601 (e.g. \"2026-01-01\" or \"2026-05-23T00:00:00\"). Defaults to 30 days before end_time (or before the current time) if omitted — applied server-side so USGS and EMSC honor the same window."New value: +"Start of time range as ISO 8601 (e.g. \"2026-01-01\" or \"2026-05-23T00:00:00\"). A bare year expands to January 1st and an unpadded month or day is zero-padded, so both sources honor the same window. Defaults to 30 days before end_time (or before the current time) if omitted — applied server-side so USGS and EMSC honor the same window."
      • addedInput schema / properties / start_time / pattern
        Added value: +"^\\d{4}(-\\d{1,2}(-\\d{1,2})?)?([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:?\\d{2})?)?$"
      • addedOutput schema / properties / queryEcho / properties / max_latitude
        Added value: +{
        +  "description": "Northern bounding-box edge sent upstream, in degrees.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / queryEcho / properties / max_longitude
        Added value: +{
        +  "description": "Eastern bounding-box edge sent upstream, in degrees.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / queryEcho / properties / min_latitude
        Added value: +{
        +  "description": "Southern bounding-box edge sent upstream, in degrees.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / queryEcho / properties / min_longitude
        Added value: +{
        +  "description": "Western bounding-box edge sent upstream, in degrees.",
        +  "type": "number"
        +}
  5. 4 tool updates
    • Changedearthquake_count2 fields changed
      • addedInput schema / properties / event_type
        Added value: +{
        +  "description": "Filter by upstream event classification, e.g. \"earthquake\" to exclude quarry blasts and explosions from the count, or \"quarry blast\" to count only those. Matched verbatim against the USGS catalog, which accepts any string and returns a count of zero for an unrecognized one. Only available from USGS.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / queryEcho / properties / event_type
        Added value: +{
        +  "description": "Event-type filter sent upstream. Absent for EMSC — not supported there.",
        +  "type": "string"
        +}
    • Changedearthquake_get_event2 fields changed
      • addedOutput schema / properties / detail
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Analysis products USGS attached to this event. Absent when the event carries none — that means no product was produced, not that impact was zero.",
        +  "properties": {
        +    "dyfi": {
        +      "additionalProperties": false,
        +      "description": "Felt-report summary. Absent when no DYFI product exists for the event.",
        +      "properties": {
        +        "map_url": {
        +          "description": "URL of the rendered DYFI intensity map image.",
        +          "type": "string"
        +        },
        +        "max_cdi": {
        +          "description": "Maximum Community Decimal Intensity derived from those reports (0–12 scale).",
        +          "type": "number"
        +        },
        +        "responses": {
        +          "description": "Number of \"Did You Feel It?\" reports the public submitted.",
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "finite_fault": {
        +      "additionalProperties": false,
        +      "description": "Finite-fault rupture model. Produced only for large events.",
        +      "properties": {
        +        "model_url": {
        +          "description": "URL of the finite-fault rupture model file.",
        +          "type": "string"
        +        },
        +        "rupture_length_km": {
        +          "description": "Modeled rupture length along strike, in kilometers.",
        +          "type": "number"
        +        },
        +        "rupture_width_km": {
        +          "description": "Modeled rupture width down dip, in kilometers.",
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "ground_failure": {
        +      "additionalProperties": false,
        +      "description": "Secondary-hazard alert levels. Absent when no ground-failure model was run.",
        +      "properties": {
        +        "landslide_alert": {
        +          "description": "Landslide hazard alert level — \"green\", \"yellow\", \"orange\", or \"red\".",
        +          "type": "string"
        +        },
        +        "liquefaction_alert": {
        +          "description": "Liquefaction hazard alert level — \"green\", \"yellow\", \"orange\", or \"red\".",
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "losspager": {
        +      "additionalProperties": false,
        +      "description": "PAGER impact assessment. Estimated fatality and economic-loss brackets live in a separate content file and are not part of this response — fetch report_url for them.",
        +      "properties": {
        +        "alert_level": {
        +          "description": "PAGER impact alert level — \"green\", \"yellow\", \"orange\", or \"red\".",
        +          "type": "string"
        +        },
        +        "report_url": {
        +          "description": "URL of the PAGER one-page PDF summary of estimated impact.",
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "moment_tensor": {
        +      "additionalProperties": false,
        +      "description": "Focal-mechanism solution. Absent for events with no moment-tensor inversion.",
        +      "properties": {
        +        "derived_depth_km": {
        +          "description": "Centroid depth in kilometers derived from the moment-tensor inversion.",
        +          "type": "number"
        +        },
        +        "nodal_plane_1": {
        +          "additionalProperties": false,
        +          "description": "First nodal plane of the focal mechanism. Either plane can be the true fault.",
        +          "properties": {
        +            "dip": {
        +              "description": "Fault plane dip in degrees from horizontal (0–90).",
        +              "type": "number"
        +            },
        +            "rake": {
        +              "description": "Slip direction in degrees (-180 to 180). Near 90 is reverse faulting, near -90 normal, near 0 or 180 strike-slip.",
        +              "type": "number"
        +            },
        +            "strike": {
        +              "description": "Fault plane strike in degrees clockwise from north (0–360).",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "strike",
        +            "dip",
        +            "rake"
        +          ],
        +          "type": "object"
        +        },
        +        "nodal_plane_2": {
        +          "additionalProperties": false,
        +          "description": "Second nodal plane — the auxiliary solution, indistinguishable from the first on seismic data alone.",
        +          "properties": {
        +            "dip": {
        +              "description": "Fault plane dip in degrees from horizontal (0–90).",
        +              "type": "number"
        +            },
        +            "rake": {
        +              "description": "Slip direction in degrees (-180 to 180). Near 90 is reverse faulting, near -90 normal, near 0 or 180 strike-slip.",
        +              "type": "number"
        +            },
        +            "strike": {
        +              "description": "Fault plane strike in degrees clockwise from north (0–360).",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "strike",
        +            "dip",
        +            "rake"
        +          ],
        +          "type": "object"
        +        },
        +        "scalar_moment_nm": {
        +          "description": "Scalar seismic moment in newton-metres — the physical size of the rupture.",
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "origin": {
        +      "additionalProperties": false,
        +      "description": "Location-quality metrics for the preferred origin.",
        +      "properties": {
        +        "azimuthal_gap_deg": {
        +          "description": "Largest azimuthal gap between stations, in degrees. Gaps above ~180 make the location poorly constrained.",
        +          "type": "number"
        +        },
        +        "depth_error_km": {
        +          "description": "Depth uncertainty in kilometers.",
        +          "type": "number"
        +        },
        +        "horizontal_error_km": {
        +          "description": "Horizontal location uncertainty in kilometers.",
        +          "type": "number"
        +        },
        +        "num_stations_used": {
        +          "description": "Number of seismic stations used in the location solution.",
        +          "type": "number"
        +        },
        +        "review_status": {
        +          "description": "Review state of the origin solution as the contributing network published it.",
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "shakemap": {
        +      "additionalProperties": false,
        +      "description": "ShakeMap modeled ground-motion summary. Absent when no ShakeMap was produced.",
        +      "properties": {
        +        "intensity_map_url": {
        +          "description": "URL of the rendered ShakeMap intensity map image.",
        +          "type": "string"
        +        },
        +        "max_mmi": {
        +          "description": "Maximum modeled shaking intensity across the ShakeMap grid (Modified Mercalli).",
        +          "type": "number"
        +        },
        +        "max_pga": {
        +          "description": "Maximum modeled peak ground acceleration, in percent of g.",
        +          "type": "number"
        +        },
        +        "max_pgv": {
        +          "description": "Maximum modeled peak ground velocity, in cm/s.",
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / event / properties / event_type
        Added value: +{
        +  "description": "Upstream event classification. USGS spells it out — \"earthquake\", \"quarry blast\", \"explosion\", \"ice quake\" — while EMSC publishes a two-letter evtype code, \"ke\" for a known earthquake and \"ue\" for an unknown event. Not every record in either catalog is a tectonic earthquake. Absent when the source publishes no classification.",
        +  "type": "string"
        +}
    • Changedearthquake_get_feed1 field changed
      • addedOutput schema / properties / events / items / properties / event_type
        Added value: +{
        +  "description": "Upstream event classification. USGS spells it out — \"earthquake\", \"quarry blast\", \"explosion\", \"ice quake\" — while EMSC publishes a two-letter evtype code, \"ke\" for a known earthquake and \"ue\" for an unknown event. Not every record in either catalog is a tectonic earthquake. Absent when the source publishes no classification.",
        +  "type": "string"
        +}
    • Changedearthquake_search3 fields changed
      • addedInput schema / properties / event_type
        Added value: +{
        +  "description": "Filter by upstream event classification, e.g. \"earthquake\" to exclude quarry blasts and explosions, or \"quarry blast\" to see only those. Matched verbatim against the USGS catalog, which accepts any string and returns zero matches for an unrecognized one. Only available from USGS.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / events / items / properties / event_type
        Added value: +{
        +  "description": "Upstream event classification. USGS spells it out — \"earthquake\", \"quarry blast\", \"explosion\", \"ice quake\" — while EMSC publishes a two-letter evtype code, \"ke\" for a known earthquake and \"ue\" for an unknown event. Not every record in either catalog is a tectonic earthquake. Absent when the source publishes no classification.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / queryEcho / properties / event_type
        Added value: +{
        +  "description": "Event-type filter sent upstream. Absent for EMSC — not supported there.",
        +  "type": "string"
        +}
  6. 4 tool updates
    • Changedearthquake_count2 fields changed
      • changedInput schema / properties / source / description
        Previous value: -"Data source. \"usgs\" covers global events with PAGER, DYFI, and ShakeMap metadata. \"emsc\" covers the European-Mediterranean region."New value: +"Data source. Both catalogs are global. \"usgs\" covers global events with PAGER, DYFI, and ShakeMap metadata. \"emsc\" is an independent global catalog operated by the European-Mediterranean Seismological Centre — use it to cross-check a count from a separate network. It has no PAGER, DYFI, or ShakeMap metadata; its station coverage is densest around Europe and the Mediterranean, so counts of small events differ most by region."
      • addedOutput schema / properties / ignoredFilters
        Added value: +{
        +  "description": "USGS-only filters supplied in the input but not sent upstream because source=emsc does not support them. The count is NOT constrained by these — re-run with source=usgs to apply them. Absent when every supplied filter was applied.",
        +  "items": {
        +    "description": "Name of an input filter that was not applied.",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedearthquake_get_event14 fields changed
      • changedOutput schema / properties / event / properties / alert / description
        Previous value: -"PAGER estimated impact alert level. Null if not computed. USGS only."New value: +"PAGER estimated impact alert level. Null when USGS ran no PAGER assessment, and always null for EMSC, which publishes no such field."
      • addedOutput schema / properties / event / properties / auth
        Added value: +{
        +  "description": "Code of the agency or network the source names as authoritative for this solution, e.g. \"NEIC\", \"BMKG\", \"NDI\" from EMSC or \"us\", \"ci\", \"ak\" from USGS. Absent when the source reports none.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / event / properties / cdi / description
        Previous value: -"Maximum reported intensity (Community Decimal Intensity, 0–12 scale). USGS only."New value: +"Maximum reported intensity (Community Decimal Intensity, 0–12 scale), derived from DYFI responses. Null when USGS computed no DYFI intensity, and always null for EMSC, which publishes no such field."
      • changedOutput schema / properties / event / properties / felt / description
        Previous value: -"Number of DYFI (Did You Feel It?) responses. Null if no reports. USGS only."New value: +"Number of DYFI (Did You Feel It?) responses. Null when USGS has received no reports for the event, and always null for EMSC, which publishes no DYFI field — a null is not evidence the event went unfelt."
      • changedOutput schema / properties / event / properties / mmi / description
        Previous value: -"Maximum ShakeMap instrumental intensity (Modified Mercalli, 0–12 scale). USGS only."New value: +"Maximum ShakeMap instrumental intensity (Modified Mercalli, 0–12 scale). Null when USGS produced no ShakeMap for the event, and always null for EMSC, which publishes no such field."
      • changedOutput schema / properties / event / properties / significance / description
        Previous value: -"USGS significance score (0–2000+). Combines magnitude, felt reports, PAGER. USGS only."New value: +"USGS significance score (0–2000+). Combines magnitude, felt reports, PAGER. Null when USGS computed no score, and always null for EMSC, which publishes no such field."
      • addedOutput schema / properties / event / properties / source_catalog
        Added value: +{
        +  "description": "Upstream catalog this solution came from, e.g. \"EMSC-RTS\" (EMSC real-time seismicity, revised as analysis continues). Absent for USGS, which publishes no catalog identifier on event records.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / event / properties / status / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "automatic",
        +      "reviewed",
        +      "deleted"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / event / properties / status / description
        Previous value: -"Review status. Automatic detections may be revised."New value: +"Human-review state: \"automatic\" (posted by automatic processing, not yet verified by a person), \"reviewed\" (examined by an analyst), or \"deleted\". Null when the source publishes no review status — EMSC does not, so treat an EMSC solution as unverified and subject to revision rather than final."
      • removedOutput schema / properties / event / properties / status / enum
        Removed value: -[
        -  "automatic",
        -  "reviewed",
        -  "deleted"
        -]
      • removedOutput schema / properties / event / properties / status / type
        Removed value: -"string"
      • addedOutput schema / properties / event / properties / tsunami / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / event / properties / tsunami / description
        Previous value: -"1 if a tsunami warning was issued; 0 otherwise. USGS only; 0 for EMSC events."New value: +"USGS tsunami flag: 1 for large events in oceanic regions, 0 otherwise. It is not a warning — USGS states the flag does not indicate whether a tsunami did or will exist; check NOAA (tsunami.gov) for actual alert status. Null when the source publishes no such flag, as EMSC does not."
      • removedOutput schema / properties / event / properties / tsunami / type
        Removed value: -"number"
    • Changedearthquake_get_feed14 fields changed
      • changedOutput schema / properties / events / items / properties / alert / description
        Previous value: -"PAGER estimated impact alert level. Null if not computed. USGS only."New value: +"PAGER estimated impact alert level. Null when USGS ran no PAGER assessment, and always null for EMSC, which publishes no such field."
      • addedOutput schema / properties / events / items / properties / auth
        Added value: +{
        +  "description": "Code of the agency or network the source names as authoritative for this solution, e.g. \"NEIC\", \"BMKG\", \"NDI\" from EMSC or \"us\", \"ci\", \"ak\" from USGS. Absent when the source reports none.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / events / items / properties / cdi / description
        Previous value: -"Maximum reported intensity (Community Decimal Intensity, 0–12 scale). USGS only."New value: +"Maximum reported intensity (Community Decimal Intensity, 0–12 scale), derived from DYFI responses. Null when USGS computed no DYFI intensity, and always null for EMSC, which publishes no such field."
      • changedOutput schema / properties / events / items / properties / felt / description
        Previous value: -"Number of DYFI (Did You Feel It?) responses. Null if no reports. USGS only."New value: +"Number of DYFI (Did You Feel It?) responses. Null when USGS has received no reports for the event, and always null for EMSC, which publishes no DYFI field — a null is not evidence the event went unfelt."
      • changedOutput schema / properties / events / items / properties / mmi / description
        Previous value: -"Maximum ShakeMap instrumental intensity (Modified Mercalli, 0–12 scale). USGS only."New value: +"Maximum ShakeMap instrumental intensity (Modified Mercalli, 0–12 scale). Null when USGS produced no ShakeMap for the event, and always null for EMSC, which publishes no such field."
      • changedOutput schema / properties / events / items / properties / significance / description
        Previous value: -"USGS significance score (0–2000+). Combines magnitude, felt reports, PAGER. USGS only."New value: +"USGS significance score (0–2000+). Combines magnitude, felt reports, PAGER. Null when USGS computed no score, and always null for EMSC, which publishes no such field."
      • addedOutput schema / properties / events / items / properties / source_catalog
        Added value: +{
        +  "description": "Upstream catalog this solution came from, e.g. \"EMSC-RTS\" (EMSC real-time seismicity, revised as analysis continues). Absent for USGS, which publishes no catalog identifier on event records.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / events / items / properties / status / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "automatic",
        +      "reviewed",
        +      "deleted"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / events / items / properties / status / description
        Previous value: -"Review status. Automatic detections may be revised."New value: +"Human-review state: \"automatic\" (posted by automatic processing, not yet verified by a person), \"reviewed\" (examined by an analyst), or \"deleted\". Null when the source publishes no review status — EMSC does not, so treat an EMSC solution as unverified and subject to revision rather than final."
      • removedOutput schema / properties / events / items / properties / status / enum
        Removed value: -[
        -  "automatic",
        -  "reviewed",
        -  "deleted"
        -]
      • removedOutput schema / properties / events / items / properties / status / type
        Removed value: -"string"
      • addedOutput schema / properties / events / items / properties / tsunami / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / events / items / properties / tsunami / description
        Previous value: -"1 if a tsunami warning was issued; 0 otherwise. USGS only; 0 for EMSC events."New value: +"USGS tsunami flag: 1 for large events in oceanic regions, 0 otherwise. It is not a warning — USGS states the flag does not indicate whether a tsunami did or will exist; check NOAA (tsunami.gov) for actual alert status. Null when the source publishes no such flag, as EMSC does not."
      • removedOutput schema / properties / events / items / properties / tsunami / type
        Removed value: -"number"
    • Changedearthquake_search16 fields changed
      • changedInput schema / properties / source / description
        Previous value: -"Data source. \"usgs\" covers global events with PAGER, DYFI, and ShakeMap metadata. \"emsc\" covers the European-Mediterranean region with an independent catalog — useful for cross-verification or European-focused queries."New value: +"Data source. Both catalogs are global. \"usgs\" covers global events with PAGER, DYFI, and ShakeMap metadata. \"emsc\" is an independent global catalog operated by the European-Mediterranean Seismological Centre — use it to cross-check any event, anywhere, against a separate network. It publishes no PAGER, DYFI, or ShakeMap metadata and no per-event detail endpoint; its station coverage is densest around Europe and the Mediterranean."
      • changedOutput schema / properties / events / items / properties / alert / description
        Previous value: -"PAGER estimated impact alert level. Null if not computed. USGS only."New value: +"PAGER estimated impact alert level. Null when USGS ran no PAGER assessment, and always null for EMSC, which publishes no such field."
      • addedOutput schema / properties / events / items / properties / auth
        Added value: +{
        +  "description": "Code of the agency or network the source names as authoritative for this solution, e.g. \"NEIC\", \"BMKG\", \"NDI\" from EMSC or \"us\", \"ci\", \"ak\" from USGS. Absent when the source reports none.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / events / items / properties / cdi / description
        Previous value: -"Maximum reported intensity (Community Decimal Intensity, 0–12 scale). USGS only."New value: +"Maximum reported intensity (Community Decimal Intensity, 0–12 scale), derived from DYFI responses. Null when USGS computed no DYFI intensity, and always null for EMSC, which publishes no such field."
      • changedOutput schema / properties / events / items / properties / felt / description
        Previous value: -"Number of DYFI (Did You Feel It?) responses. Null if no reports. USGS only."New value: +"Number of DYFI (Did You Feel It?) responses. Null when USGS has received no reports for the event, and always null for EMSC, which publishes no DYFI field — a null is not evidence the event went unfelt."
      • changedOutput schema / properties / events / items / properties / mmi / description
        Previous value: -"Maximum ShakeMap instrumental intensity (Modified Mercalli, 0–12 scale). USGS only."New value: +"Maximum ShakeMap instrumental intensity (Modified Mercalli, 0–12 scale). Null when USGS produced no ShakeMap for the event, and always null for EMSC, which publishes no such field."
      • changedOutput schema / properties / events / items / properties / significance / description
        Previous value: -"USGS significance score (0–2000+). Combines magnitude, felt reports, PAGER. USGS only."New value: +"USGS significance score (0–2000+). Combines magnitude, felt reports, PAGER. Null when USGS computed no score, and always null for EMSC, which publishes no such field."
      • addedOutput schema / properties / events / items / properties / source_catalog
        Added value: +{
        +  "description": "Upstream catalog this solution came from, e.g. \"EMSC-RTS\" (EMSC real-time seismicity, revised as analysis continues). Absent for USGS, which publishes no catalog identifier on event records.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / events / items / properties / status / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "automatic",
        +      "reviewed",
        +      "deleted"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / events / items / properties / status / description
        Previous value: -"Review status. Automatic detections may be revised."New value: +"Human-review state: \"automatic\" (posted by automatic processing, not yet verified by a person), \"reviewed\" (examined by an analyst), or \"deleted\". Null when the source publishes no review status — EMSC does not, so treat an EMSC solution as unverified and subject to revision rather than final."
      • removedOutput schema / properties / events / items / properties / status / enum
        Removed value: -[
        -  "automatic",
        -  "reviewed",
        -  "deleted"
        -]
      • removedOutput schema / properties / events / items / properties / status / type
        Removed value: -"string"
      • addedOutput schema / properties / events / items / properties / tsunami / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / events / items / properties / tsunami / description
        Previous value: -"1 if a tsunami warning was issued; 0 otherwise. USGS only; 0 for EMSC events."New value: +"USGS tsunami flag: 1 for large events in oceanic regions, 0 otherwise. It is not a warning — USGS states the flag does not indicate whether a tsunami did or will exist; check NOAA (tsunami.gov) for actual alert status. Null when the source publishes no such flag, as EMSC does not."
      • removedOutput schema / properties / events / items / properties / tsunami / type
        Removed value: -"number"
      • addedOutput schema / properties / ignoredFilters
        Added value: +{
        +  "description": "USGS-only filters supplied in the input but not sent upstream because source=emsc does not support them. The result set is NOT constrained by these — re-run with source=usgs to apply them. Absent when every supplied filter was applied.",
        +  "items": {
        +    "description": "Name of an input filter that was not applied.",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  7. 3 tool updates
    • Changedearthquake_count1 field changed
      • addedOutput schema / properties / queryEcho
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Echo of the effective parameters the count covers, including server-resolved defaults. Read start_time and end_time to know which window the count spans — a filter absent here was not sent upstream.",
        +  "properties": {
        +    "alert_level": {
        +      "description": "PAGER alert filter sent upstream. Absent for EMSC — not supported there.",
        +      "type": "string"
        +    },
        +    "end_time": {
        +      "description": "Effective query end time. Absent when omitted from input — the upstream defaults to the current time.",
        +      "type": "string"
        +    },
        +    "latitude": {
        +      "description": "Radius-search latitude sent upstream.",
        +      "type": "number"
        +    },
        +    "longitude": {
        +      "description": "Radius-search longitude sent upstream.",
        +      "type": "number"
        +    },
        +    "max_depth_km": {
        +      "description": "Maximum depth filter sent upstream.",
        +      "type": "number"
        +    },
        +    "max_magnitude": {
        +      "description": "Maximum magnitude filter sent upstream.",
        +      "type": "number"
        +    },
        +    "min_depth_km": {
        +      "description": "Minimum depth filter sent upstream.",
        +      "type": "number"
        +    },
        +    "min_felt": {
        +      "description": "DYFI felt-report filter sent upstream. Absent for EMSC — not supported there.",
        +      "type": "number"
        +    },
        +    "min_magnitude": {
        +      "description": "Minimum magnitude filter sent upstream.",
        +      "type": "number"
        +    },
        +    "min_significance": {
        +      "description": "Significance filter sent upstream. Absent for EMSC — not supported there.",
        +      "type": "number"
        +    },
        +    "radius_km": {
        +      "description": "Search radius in km sent upstream (converted to degrees for EMSC).",
        +      "type": "number"
        +    },
        +    "source": {
        +      "description": "Data source queried.",
        +      "enum": [
        +        "usgs",
        +        "emsc"
        +      ],
        +      "type": "string"
        +    },
        +    "start_time": {
        +      "description": "Effective query start time sent upstream — server-resolved to a 30-day window when omitted from input.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source"
        +  ],
        +  "type": "object"
        +}
    • Changedearthquake_get_feed8 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "Opaque token for the next page, taken verbatim from a previous call's nextCursor. Omit for the first page. Do not construct, parse, or edit it — it encodes a position in the feed snapshot and is rejected if malformed.",
        +  "type": "string"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Maximum events to return in this call. Default 100, max 1000. Applies to the first page; later pages carry the page size inside the cursor, so set it on the first call rather than changing it mid-sequence.",
        +  "maximum": 1000,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedOutput schema / properties / count / description
        Previous value: -"Number of events in the feed."New value: +"Number of events returned in this page, not the whole feed."
      • changedOutput schema / properties / events / description
        Previous value: -"Earthquake events, newest first."New value: +"Earthquake events for this page, newest first."
      • addedOutput schema / properties / nextCursor
        Added value: +{
        +  "description": "Opaque token to pass back as the cursor input for the next page. Present only when more events remain; absent means this was the last page.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / notice / description
        Previous value: -"Recovery guidance when the feed contains no events — suggests narrowing the magnitude tier, widening the time window, or using earthquake_search for filtered queries. Absent when the feed contains events."New value: +"Recovery guidance when the feed contains no events, or how to continue when a page was capped — narrowing the magnitude tier, widening the time window, paging with the cursor, or using earthquake_search for filtered queries. Absent when a single page covers the whole feed."
      • addedOutput schema / properties / totalCount
        Added value: +{
        +  "description": "Number of events in the whole feed, across every page.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / truncated
        Added value: +{
        +  "description": "True when the feed holds more events than this page returned. nextCursor carries the input for the following page.",
        +  "type": "boolean"
        +}
    • Changedearthquake_search5 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum events to return. Default 100. Large limits (>1000) may result in slow responses. Max 20000."New value: +"Maximum events to return per call. Default 100. Large limits (>1000) may result in slow responses. Max 20000. Combine with offset to retrieve match sets larger than one call can return."
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Index of the first event to return, counting from 1 — offset=1 is the first match (both upstream APIs reject 0). Omit for the first page, then pass the nextOffset value from a capped result to fetch the next one. Ordering is set by order_by, so keep order_by, limit, and every filter identical across pages.",
        +  "maximum": 9007199254740991,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / nextOffset
        Added value: +{
        +  "description": "Value to pass as the offset input to retrieve the next page, with every other input unchanged. Present only when more events remain; absent means this was the last page.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / queryEcho / properties / offset
        Added value: +{
        +  "description": "1-based paging offset sent upstream. Absent when the first page was fetched.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / truncated / description
        Previous value: -"True when results were capped by the limit parameter and more events likely exist. totalCount carries the full match count when available."New value: +"True when results were capped by the limit parameter and more events remain. totalCount carries the full match count when available, and nextOffset the input for the following page."
  8. 4 tool updates
    • Changedearthquake_count1 field changed
      • changedInput schema / properties / start_time / description
        Previous value: -"Start of time range as ISO 8601 (e.g. \"2026-01-01\" or \"2026-05-23T00:00:00\"). Defaults to 30 days before end_time if omitted."New value: +"Start of time range as ISO 8601 (e.g. \"2026-01-01\" or \"2026-05-23T00:00:00\"). Defaults to 30 days before end_time (or before the current time) if omitted — applied server-side so USGS and EMSC honor the same window."
    • Changedearthquake_get_event3 fields changed
      • addedOutput schema / properties / event / properties / magnitude / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / event / properties / magnitude / description
        Previous value: -"Preferred magnitude value."New value: +"Preferred magnitude value. Null when no magnitude was computed for the event (the title renders it as \"M ?\")."
      • removedOutput schema / properties / event / properties / magnitude / type
        Removed value: -"number"
    • Changedearthquake_get_feed3 fields changed
      • addedOutput schema / properties / events / items / properties / magnitude / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / events / items / properties / magnitude / description
        Previous value: -"Preferred magnitude value."New value: +"Preferred magnitude value. Null when no magnitude was computed for the event (the title renders it as \"M ?\")."
      • removedOutput schema / properties / events / items / properties / magnitude / type
        Removed value: -"number"
    • Changedearthquake_search7 fields changed
      • changedInput schema / properties / start_time / description
        Previous value: -"Start of time range as ISO 8601 (e.g. \"2026-01-01\" or \"2026-05-23T00:00:00\"). Defaults to 30 days before end_time if omitted."New value: +"Start of time range as ISO 8601 (e.g. \"2026-01-01\" or \"2026-05-23T00:00:00\"). Defaults to 30 days before end_time (or before the current time) if omitted — applied server-side so USGS and EMSC honor the same window."
      • addedOutput schema / properties / events / items / properties / magnitude / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / events / items / properties / magnitude / description
        Previous value: -"Preferred magnitude value."New value: +"Preferred magnitude value. Null when no magnitude was computed for the event (the title renders it as \"M ?\")."
      • removedOutput schema / properties / events / items / properties / magnitude / type
        Removed value: -"number"
      • addedOutput schema / properties / queryEcho
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Echo of the effective parameters sent to the upstream API, including server-resolved defaults. Use to diagnose unexpected or empty results — a filter absent here was not sent upstream.",
        +  "properties": {
        +    "alert_level": {
        +      "description": "PAGER alert filter sent upstream. Absent for EMSC — not supported there.",
        +      "type": "string"
        +    },
        +    "end_time": {
        +      "description": "Effective query end time. Absent when omitted from input — the upstream defaults to the current time.",
        +      "type": "string"
        +    },
        +    "latitude": {
        +      "description": "Radius-search latitude sent upstream.",
        +      "type": "number"
        +    },
        +    "limit": {
        +      "description": "Effective result limit sent upstream.",
        +      "type": "number"
        +    },
        +    "longitude": {
        +      "description": "Radius-search longitude sent upstream.",
        +      "type": "number"
        +    },
        +    "max_depth_km": {
        +      "description": "Maximum depth filter sent upstream.",
        +      "type": "number"
        +    },
        +    "max_magnitude": {
        +      "description": "Maximum magnitude filter sent upstream.",
        +      "type": "number"
        +    },
        +    "min_depth_km": {
        +      "description": "Minimum depth filter sent upstream.",
        +      "type": "number"
        +    },
        +    "min_felt": {
        +      "description": "DYFI felt-report filter sent upstream. Absent for EMSC — not supported there.",
        +      "type": "number"
        +    },
        +    "min_magnitude": {
        +      "description": "Minimum magnitude filter sent upstream.",
        +      "type": "number"
        +    },
        +    "min_significance": {
        +      "description": "Significance filter sent upstream. Absent for EMSC — not supported there.",
        +      "type": "number"
        +    },
        +    "order_by": {
        +      "description": "Sort order sent upstream.",
        +      "type": "string"
        +    },
        +    "radius_km": {
        +      "description": "Search radius in km sent upstream (converted to degrees for EMSC).",
        +      "type": "number"
        +    },
        +    "source": {
        +      "description": "Data source queried.",
        +      "enum": [
        +        "usgs",
        +        "emsc"
        +      ],
        +      "type": "string"
        +    },
        +    "start_time": {
        +      "description": "Effective query start time sent upstream — server-resolved to a 30-day window when omitted from input.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "limit",
        +    "order_by"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / totalCount / description
        Previous value: -"Total events matching the query before the limit was applied. Absent when the upstream API does not report a total count."New value: +"Total events matching the query before the limit was applied. Fetched via a follow-up count query when results are truncated at the limit; absent otherwise."
      • changedOutput schema / properties / truncated / description
        Previous value: -"True when results were capped by the limit parameter and more events likely exist. Use earthquake_count to get the total match count."New value: +"True when results were capped by the limit parameter and more events likely exist. totalCount carries the full match count when available."
  9. 2 tool updates
    • Changedearthquake_get_feed1 field changed
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Recovery guidance when the feed contains no events — suggests narrowing the magnitude tier, widening the time window, or using earthquake_search for filtered queries. Absent when the feed contains events.",
        +  "type": "string"
        +}
    • Changedearthquake_search3 fields changed
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Recovery guidance when results are empty or capped — how to broaden filters or get the full count. Absent when the result set is non-empty and within the limit.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / totalCount
        Added value: +{
        +  "description": "Total events matching the query before the limit was applied. Absent when the upstream API does not report a total count.",
        +  "type": "number"
        +}
      • removedOutput schema / properties / total_count
        Removed value: -{
        -  "description": "Total events matching the query before the limit was applied. Absent when the upstream API does not report total count.",
        -  "type": "number"
        -}
  10. 3 tool updates
    • Changedearthquake_get_event3 fields changed
      • addedOutput schema / properties / event / properties / depth_km / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / event / properties / depth_km / description
        Previous value: -"Hypocenter depth in kilometers. Shallow (<70 km), intermediate (70–300 km), or deep (>300 km)."New value: +"Hypocenter depth in kilometers. Shallow (<70 km), intermediate (70–300 km), or deep (>300 km). Null for historical events where depth was not measured."
      • removedOutput schema / properties / event / properties / depth_km / type
        Removed value: -"number"
    • Changedearthquake_get_feed3 fields changed
      • addedOutput schema / properties / events / items / properties / depth_km / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / events / items / properties / depth_km / description
        Previous value: -"Hypocenter depth in kilometers. Shallow (<70 km), intermediate (70–300 km), or deep (>300 km)."New value: +"Hypocenter depth in kilometers. Shallow (<70 km), intermediate (70–300 km), or deep (>300 km). Null for historical events where depth was not measured."
      • removedOutput schema / properties / events / items / properties / depth_km / type
        Removed value: -"number"
    • Changedearthquake_search3 fields changed
      • addedOutput schema / properties / events / items / properties / depth_km / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / events / items / properties / depth_km / description
        Previous value: -"Hypocenter depth in kilometers. Shallow (<70 km), intermediate (70–300 km), or deep (>300 km)."New value: +"Hypocenter depth in kilometers. Shallow (<70 km), intermediate (70–300 km), or deep (>300 km). Null for historical events where depth was not measured."
      • removedOutput schema / properties / events / items / properties / depth_km / type
        Removed value: -"number"
  11. 4 tool updates
    • First observedearthquake_count
    • First observedearthquake_get_event
    • First observedearthquake_get_feed
    • First observedearthquake_search

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides access to the USGS Earthquake Catalog for querying earthquake events via the FDSNWS API, enabling natural language questions about earthquake data.
    7 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying seismic station metadata, regional earthquake catalogs, and federated waveform data availability across FDSN web services, letting users locate seismometers, retrieve local seismicity, and identify data holdings through direct tool calls or natural language.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.