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 by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over the last 24 hours
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/earthquake-mcp-server
GitHub Stars
3
Server Listing
earthquake-mcp-server
ChatGPT
–
Claude
–

TDQS

A4.6/5.0

Scored across 4 tools

Disambiguation5/5

Each tool occupies a distinct niche: count sizes a query, search returns event records, get_event fetches one record with deeper products, and get_feed serves CDN-cached real-time tiers. Descriptions explicitly route the agent between the two list-returning tools (feed for "what's happening now", search for historical/filtered queries), so overlap is minimal and actively mitigated.

Naming Consistency5/5

All four tools follow the same earthquake_<verb>_<noun> pattern (count_events, get_event, get_feed, search_events). Verb choice is semantically consistent — get for single-record fetches, search/count for catalog queries — with no mixed casing or style drift.

Tool Count5/5

Four tools is a tight, well-scoped surface for an earthquake catalog server: one each for counting, searching, single-event detail, and real-time feeds. No tool appears redundant, and nothing obviously needed is crammed into an overloaded tool description.

Completeness4/5

The core lifecycle — size a query, search/paginate, fetch one event with optional products, and pull live feeds — is fully covered, including paging beyond the 20,000 threshold. Minor gaps remain (no multi-ID batch fetch, no catalog/source metadata or station/network lookup), but these are workarounds rather than dead ends.

Available Tools

4 tools
earthquake_count_eventsCount EarthquakesA
Read-onlyIdempotent
Inspect

Count matches without event records, or size an earthquake_search_events query. Omitting start_time uses 30 days; pass explicit bounds for historical periods. queryEcho reports applied filters/window; ignoredFilters names unsupported EMSC inputs. Circle and independently optional box edges intersect. Both catalogs include non-tectonic events; event_type="earthquake" excludes them on USGS. exceeds_limit marks the 20,000-event single-request threshold, not a retrieval ceiling: search supports offset paging beyond it. max_allowed is 20,000 for USGS, null for EMSC.

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
min_cdiNoMinimum DYFI (Did You Feel It?) community intensity (1–12): the strongest shaking people reported for the event. An event without DYFI reports never matches. Only available from USGS.
min_mmiNoMinimum ShakeMap intensity on the Modified Mercalli scale (1–12): the strongest shaking USGS modeled for the event, e.g. 7 for very strong shaking. Finds shaking a magnitude floor or alert_level misses. An event without a ShakeMap never matches; product_type "shakemap" requires one at any intensity. Only available from USGS.
end_timeNoEnd of time range as ISO 8601, in the same forms start_time accepts. Date-only values mean midnight at the start of the named day, not the whole day. 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; a comma-separated list such as "earthquake,explosion" counts any of them. USGS matches case-insensitively and counts zero for a value it does not list, which the notice then names. 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, with date-only values resolved to midnight (T00:00:00) on both sources. Explicit time and timezone suffixes are preserved. 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.
product_typeNoRequired product type, e.g. "moment-tensor" (hyphenated, unlike the moment_tensor detail group); USGS only, matched case-insensitively. Blank means omitted.
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.
review_statusNoUSGS review status: automatic or reviewed. Blank means omitted; unsupported by EMSC.
magnitude_typeNoMagnitude type, e.g. "mb" or "mww"; both sources. USGS matches case-insensitively; EMSC matches its own lowercase types ("mb", "mw") case-sensitively and has no "mww". Blank means omitted.
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

NameRequiredDescription
countNoNumber of events matching the query.
errorNoPresent when the call failed. Absent on success.
noticeNoOn a USGS count of zero, names each supplied event_type, magnitude_type, or product_type value USGS does not list, which matches no events, with the listed value it likely meant. Absent otherwise.
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_allowedNoUpstream single-request threshold: 20000 for USGS; null because EMSC count omits it. Offset paging can retrieve larger sets.
exceeds_limitNoCount exceeds the single-request threshold (20000 for EMSC despite null max_allowed). Use search offset paging or narrower filters.
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.6/5.0
Behavior5/5

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

Annotations only declare readOnly/idempotent/openWorld; the description adds genuinely non-obvious behavior: exceeds_limit is a per-request threshold rather than a retrieval ceiling because search supports offset paging, max_allowed is 20,000 on USGS and null on EMSC, circle and box edges intersect rather than override, and both catalogs include non-tectonic events that event_type="earthquake" removes only on USGS. These are operational traits an agent could not infer from the 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?

Information is tightly packed and front-loaded: purpose first, then defaults, then output-field semantics, then limits. The telegraphic phrasing ("Count matches without event records", clause-chained sentences about queryEcho/ignoredFilters) is efficient but costs some readability, so it is not flawless.

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 23-parameter, both-source counting tool with an output schema and safety annotations already in place, the description covers the remaining decision-relevant gaps: default time window, cross-source divergences (ignoredFilters, max_allowed null), filter intersection semantics, and how to go past the per-request cap.

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%, so the baseline is 3; the description earns above that by documenting cross-parameter semantics the schema does not, notably that radius and box constraints intersect and that omitting start_time triggers a server-side 30-day default applied identically on both sources. It does not restate individual parameter bounds, which is correct given the rich 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?

"Count matches without event records, or size an earthquake_search_events query" gives a specific verb (count), the resource (events matching filters), and explicitly positions the tool relative to its sibling search_events. An agent can distinguish count vs. retrieve without opening either schema.

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

Usage Guidelines4/5

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

It names the alternative (earthquake_search_events) and the condition that selects it (sizing/counting vs. retrieving records), and clarifies that omitting start_time applies a 30-day window while historical periods need explicit bounds. It stops short of saying when NOT to use this tool (e.g., when the agent needs per-event metadata such as PAGER/DYFI products), which the sibling names imply but do not state.

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 one earthquake by event ID: a USGS ID, or an EMSC ID (an origin date and seven-digit sequence, e.g. "20190706_0000043"). Returns the same normalized event a search result carries. For a USGS event it adds 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, depth type), and finite-fault rupture dimensions. Product groups are omitted when no projected field is available — a small automatic event typically carries only origin quality, while a large reviewed one has most of it. Opt into more with include: alternative origin solutions, magnitude solutions, phase arrivals, the USGS aftershock forecast, or the PAGER loss estimates behind the alert with population exposure by shaking intensity; a requested group that is not returned is listed in unavailable_includes. EMSC publishes none of these products, so an EMSC event has no detail and lists every requested group as not_published. Event IDs appear in the "id" field of earthquake_get_feed and earthquake_search_events results; a USGS event's associated_ids are also accepted.

NameRequiredDescriptionDefault
includeNoOptional groups: origins (every contributed origin solution, no extra request), magnitudes and arrivals (one shared phase-data download; every arrival of the preferred origin, nearest first), aftershock_forecast (one extra request), pager (fatality and economic-loss brackets with probabilities, and people exposed at each intensity by country; two or three extra requests). Omit for the default response.
event_idYesUSGS event ID, e.g. "hv74966427" or "us6000sznj", or EMSC event ID, e.g. "20190706_0000043". Found in the "id" field of earthquake_get_feed and earthquake_search_events results.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
eventNoFull earthquake event detail.
pagerNoUSGS PAGER loss estimates and population exposure; values change with each PAGER update.
detailNoProjected USGS analysis products. Absent when no projected field is available; absence does not mean impact was zero.
originsNoEvery origin product, preferred first. Present when requested and published.
arrivalsNoAll phase arrivals of the preferred origin, sorted by distance ascending.
magnitudesNoMagnitude solutions from the preferred phase-data product, in document order.
aftershock_forecastNoUSGS Operational Aftershock Forecast; probabilities change with each update.
unavailable_includesNoRequested groups not returned, with the reason. Absent when all were returned.

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the read-only/idempotent annotations, the description discloses important behavioral details: USGS events may include PAGER, ShakeMap, DYFI, moment tensor, landslide/liquefaction, origin quality, and finite-fault data; omitted groups appear in unavailable_includes; EMSC events list requested groups as not_published; and include groups may trigger extra requests.

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

Conciseness5/5

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

The description is long but appropriately dense for a complex single-event tool with many optional product groups. The core operation and key caveats are front-loaded, and every sentence contributes useful selection or invocation context.

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?

Given the tool complexity, the available annotations, and the presence of an output schema, the description is complete enough for an agent to choose this tool, form a valid event_id, select include groups, and understand likely omissions or EMSC limitations.

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?

Although schema coverage is already 100%, the description adds substantial meaning beyond the schema: it explains what each include group represents, when groups may be absent, how unavailable_includes and not_published behave, and that associated_ids are also accepted as event identifiers.

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?

The description states a specific verb and resource — fetching one earthquake by event ID — and clearly distinguishes this from the feed/search/count sibling tools by explaining that it returns a single normalized event plus detail products unavailable in search results.

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

Usage Guidelines4/5

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

It gives strong context for when to use the tool: event IDs come from earthquake_get_feed and earthquake_search_events, and the include parameter controls optional detail groups. It does not explicitly state when not to use it or name search/feed as alternatives for discovery, but the intended role is clear.

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. Each page returns limit events (default 15, at most 1,000), fewer only on the last page. The cursor is opaque and must be passed back verbatim — unlike earthquake_search_events, these feeds retain the first-read generation for up to 15 minutes, subject to capacity eviction and restart. An expired cursor requires a fresh first read. For historical or filtered queries, use earthquake_search_events instead.

NameRequiredDescriptionDefault
limitNoEvents to return per page. Default 15; a larger value returns at most 1,000 and says so. Applies to the first page; later pages carry the page size inside the cursor and ignore limit, so set it on the first call.
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

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.
noticeNoGuidance when a first-page limit was clamped to 1,000 (requested and applied values), when the feed or cursor position holds no events (a wider window, lower tier, or earthquake_search_events), or when more pages remain (paging with the cursor). Absent when none applies.
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.6/5.0
Behavior5/5

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

Annotations only declare read-only, open-world, idempotent, so the description carries real weight and does: CDN caching and availability characteristics, page-by-page delivery with count/totalCount/nextCursor semantics, and an opaque cursor that must be passed verbatim. It discloses a non-obvious lifecycle constraint — the snapshot retains first-read generation for up to 15 minutes, subject to capacity eviction and restart, with expired cursors needing a fresh first read — which an agent could not infer from annotations or schema.

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?

Purpose and the sibling routing are front-loaded in the first two sentences, which is exactly right. The remainder is one dense paragraph that repeats several facts already in the schema (limit default and cap, hour/month volumes, enum meanings), costing some economy without obscuring the key points.

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 need not be explained, and the description still covers pagination contract, cursor lifetime, and the alternative tool. For a zero-required-parameter feed reader, nothing an agent needs to call it 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 description coverage is 100% and the parameter docs already explain limit, cursor opacity, and both enums, so the baseline is 3. The description largely restates those facts (default 15, 1,000 cap, hour returning 0–10 events, month exceeding 10,000) rather than adding new meaning; the genuinely additive cursor-expiry detail belongs to behavior, not parameter semantics.

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 — fetching a USGS pre-computed real-time earthquake feed — plus the two dimensions that scope it (magnitude tier and time window). It explicitly contrasts itself with earthquake_search_events, so an agent can distinguish it from the query-API sibling without opening either schema.

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: "what's happening now" queries, because the feeds are CDN-cached and faster/more available than the query API. It also gives the when-not-to and names the alternative: "For historical or filtered queries, use earthquake_search_events instead." Both sides of the routing decision are stated.

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

earthquake_search_eventsSearch EarthquakesA
Read-onlyIdempotent
Inspect

Search USGS or independent global EMSC seismic catalogs by time, magnitude, depth, area and source-specific filters. Both include non-tectonic events; event_type="earthquake" excludes them on USGS. Circle and independently optional box edges intersect. Unsupported EMSC filters appear in ignoredFilters. Size queries with earthquake_count_events. Returns limit events per call (at most 1,000), fewer only on the last page. Continue with offset=nextOffset and unchanged filters/order. totalCount is the full match total when known; countUnavailable marks a failed count lookup, so the total is unknown. Paging can retrieve matches beyond 20,000.

NameRequiredDescriptionDefault
limitNoEvents to return per call. Default 15; a larger value returns at most 1,000 and says so. Combine with offset to retrieve match sets larger than one call can return.
offsetNoIndex 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.
sourceNoUSGS includes PAGER, DYFI and ShakeMap; EMSC (European-Mediterranean Seismological Centre) is an independent global catalog, with densest station coverage around Europe/Mediterranean and no such impact products. earthquake_get_event accepts IDs from either source.usgs
min_cdiNoMinimum DYFI (Did You Feel It?) community intensity (1–12): the strongest shaking people reported for the event. An event without DYFI reports never matches. Only available from USGS.
min_mmiNoMinimum ShakeMap intensity on the Modified Mercalli scale (1–12): the strongest shaking USGS modeled for the event, e.g. 7 for very strong shaking. Finds shaking a magnitude floor or alert_level misses. An event without a ShakeMap never matches; product_type "shakemap" requires one at any intensity. Only available from USGS.
end_timeNoEnd of time range as ISO 8601, in the same forms start_time accepts. Date-only values mean midnight at the start of the named day, not the whole day. 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 find events with confirmed public impact. Only available from USGS.
order_byNoSort order. "time" returns newest first; "magnitude" returns largest first.time
longitudeNoLongitude for radius search. Requires latitude and radius_km.
radius_kmNoSearch 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).
event_typeNoFilter by upstream event classification, e.g. "earthquake" to exclude quarry blasts and explosions, or "quarry blast" to see only those; a comma-separated list such as "earthquake,explosion" matches any of them. USGS matches case-insensitively and returns zero matches for a value it does not list, which the notice then names. 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, with date-only values resolved to midnight (T00:00:00) on both sources. Explicit time and timezone suffixes are preserved. 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.
product_typeNoRequired product type, e.g. "moment-tensor" (hyphenated, unlike the moment_tensor detail group); USGS only, matched case-insensitively. Blank means omitted.
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.
review_statusNoUSGS review status: automatic or reviewed. Blank means omitted; unsupported by EMSC.
magnitude_typeNoMagnitude type, e.g. "mb" or "mww"; both sources. USGS matches case-insensitively; EMSC matches its own lowercase types ("mb", "mw") case-sensitively and has no "mww". Blank means omitted.
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

NameRequiredDescription
countNoNumber of events returned.
errorNoPresent when the call failed. Absent on success.
eventsNoMatching earthquake events.
noticeNoGuidance when limit was clamped to 1,000 (requested and applied values), when results are empty (how to broaden filters, or on USGS each supplied event_type, magnitude_type, or product_type value USGS does not list, with the listed value it likely meant), or when more pages remain (the next offset). Absent when none applies.
sourceNoData source used.
queryEchoNoEcho 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.
truncatedNoPage filled the applied limit and more matches remain or may remain. Continue with nextOffset. Without totalCount, more events may remain but are not confirmed.
nextOffsetNoNext 1-based offset; keep other inputs unchanged. Present if more events remain or may remain with unknown total; absent on last page.
totalCountNoFull match total, inferred from a nonempty short upstream page (or empty first page), otherwise counted for full pages. Absent for empty later pages or failed counts; countUnavailable marks failures.
ignoredFiltersNoUSGS-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.
countUnavailableNoTrue if the count lookup failed; events are unaffected, totalCount unknown. Retry earthquake_count_events with identical filters. Absent if count succeeded or was unnecessary.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld/idempotent, yet the description still adds substantial behavior: both catalogs include non-tectonic events, event_type="earthquake" filters them on USGS, circle and box filters intersect, unsupported EMSC filters surface in ignoredFilters, and results are capped at 1,000 per call. It also explains totalCount/countUnavailable and that paging can reach beyond 20,000 matches — exactly the operational context annotations cannot convey.

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?

Purpose is front-loaded in the first sentence and almost every following sentence carries operational information. It drifts toward telegraphic fragments ("Circle and independently optional box edges intersect") that trade clarity for density, but there is little genuine filler.

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 26-parameter, zero-required search tool with an output schema and full annotation coverage, the description covers everything an agent needs: scoping, source differences, filter interaction, result caps, pagination protocol, and total-count ambiguity. Return-value structure is legitimately left to the output schema.

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%, so all 26 parameters are already documented in structured fields; the baseline is 3. The description does add genuine cross-parameter meaning — geographic filters intersecting rather than overriding, the need to hold filters and order_by constant across pages, and EMSC dropping unsupported filters — but it does not add per-parameter guidance beyond what the schema already carries.

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?

The opening sentence names a specific verb (Search) and resource (USGS / EMSC seismic catalogs) plus the filter axes (time, magnitude, depth, area), which clearly distinguishes it from earthquake_count_events, earthquake_get_event and earthquake_get_feed. An agent can identify this as the general-purpose catalog query tool without opening the schema.

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

Usage Guidelines4/5

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

It explicitly routes the agent to earthquake_count_events for sizing and gives concrete paging instructions (continue with offset=nextOffset, keep filters/order unchanged). What it lacks is any statement of when to prefer this over earthquake_get_feed or earthquake_get_event, so the sibling differentiation is partial rather than complete.

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_count_events9 fields changed
      • changedInput schema / properties / event_type / description
        Previous value: -"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."New value: +"Filter by upstream event classification, e.g. \"earthquake\" to exclude quarry blasts and explosions from the count, or \"quarry blast\" to count only those; a comma-separated list such as \"earthquake,explosion\" counts any of them. USGS matches case-insensitively and counts zero for a value it does not list, which the notice then names. Only available from USGS."
      • changedInput schema / properties / magnitude_type / description
        Previous value: -"Magnitude type, e.g. \"mb\" or \"mww\"; both sources. Blank means omitted."New value: +"Magnitude type, e.g. \"mb\" or \"mww\"; both sources. USGS matches case-insensitively; EMSC matches its own lowercase types (\"mb\", \"mw\") case-sensitively and has no \"mww\". Blank means omitted."
      • addedInput schema / properties / min_cdi
        Added value: +{
        +  "description": "Minimum DYFI (Did You Feel It?) community intensity (1–12): the strongest shaking people reported for the event. An event without DYFI reports never matches. Only available from USGS.",
        +  "maximum": 12,
        +  "minimum": 1,
        +  "type": "number"
        +}
      • addedInput schema / properties / min_mmi
        Added value: +{
        +  "description": "Minimum ShakeMap intensity on the Modified Mercalli scale (1–12): the strongest shaking USGS modeled for the event, e.g. 7 for very strong shaking. Finds shaking a magnitude floor or alert_level misses. An event without a ShakeMap never matches; product_type \"shakemap\" requires one at any intensity. Only available from USGS.",
        +  "maximum": 12,
        +  "minimum": 1,
        +  "type": "number"
        +}
      • changedInput schema / properties / product_type / description
        Previous value: -"Required product type, e.g. \"moment-tensor\"; USGS only. Blank means omitted."New value: +"Required product type, e.g. \"moment-tensor\" (hyphenated, unlike the moment_tensor detail group); USGS only, matched case-insensitively. Blank means omitted."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_range`: Minimum magnitude or depth exceeds its maximum, or start_time is after end_time. `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."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_range`: Minimum magnitude or depth exceeds its maximum, or start_time is after end_time. `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, serves HTML or an unreadable body, 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."
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "On a USGS count of zero, names each supplied event_type, magnitude_type, or product_type value USGS does not list, which matches no events, with the listed value it likely meant. Absent otherwise.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / queryEcho / properties / min_cdi
        Added value: +{
        +  "description": "Applied minimum DYFI community intensity (CDI); absent for EMSC.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / queryEcho / properties / min_mmi
        Added value: +{
        +  "description": "Applied minimum ShakeMap intensity (MMI); absent for EMSC.",
        +  "type": "number"
        +}
    • Changedearthquake_get_event9 fields changed
      • changedInput schema / properties / include / description
        Previous value: -"Optional groups: origins (every contributed origin solution, no extra request), magnitudes and arrivals (one shared phase-data download; every arrival of the preferred origin, nearest first), aftershock_forecast (one extra request). Omit for the default response."New value: +"Optional groups: origins (every contributed origin solution, no extra request), magnitudes and arrivals (one shared phase-data download; every arrival of the preferred origin, nearest first), aftershock_forecast (one extra request), pager (fatality and economic-loss brackets with probabilities, and people exposed at each intensity by country; two or three extra requests). Omit for the default response."
      • changedInput schema / properties / include / items / enum
        Previous value: -[
        -  "origins",
        -  "magnitudes",
        -  "arrivals",
        -  "aftershock_forecast"
        -]New value: +[
        +  "origins",
        +  "magnitudes",
        +  "arrivals",
        +  "aftershock_forecast",
        +  "pager"
        +]
      • changedOutput schema / properties / detail / properties / losspager / description
        Previous value: -"PAGER assessment; fatality/economic-loss brackets are in report_url, not this projection. Absent without projected fields."New value: +"PAGER alert and report link. The fatality and economic-loss brackets behind the alert, and population exposure, come from the pager include group of earthquake_get_event. Absent without projected fields."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `event_deleted`: USGS reports that the requested event was deleted. `not_found`: No USGS or EMSC event matches the provided event_id. `source_unavailable`: The USGS or EMSC event API returns a 5xx, serves HTML, or is unreachable. `source_timeout`: The USGS or EMSC event API did not answer before the request deadline. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `event_deleted`: USGS reports that the requested event was deleted. `not_found`: No USGS or EMSC event matches the provided event_id. `source_unavailable`: The USGS or EMSC event API returns a 5xx, serves HTML or an unreadable body, or is unreachable. `source_timeout`: The USGS or EMSC event API did not answer before the request deadline. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / event / properties / mmi / description
        Previous value: -"Maximum ShakeMap Modified Mercalli intensity (0–12); null without a ShakeMap or for EMSC."New value: +"Maximum ShakeMap Modified Mercalli intensity (1–12); null without a ShakeMap, when the ShakeMap computed no intensity, or for EMSC."
      • changedOutput schema / properties / event / properties / status / description
        Previous value: -"Review state: automatic (unverified), reviewed (analyst checked), or deleted. Null if unpublished (EMSC); such solutions remain unverified and subject to revision."New value: +"Review state: automatic (unverified), reviewed (analyst checked), or deleted. Null if unpublished (EMSC, or a USGS record without one of these values); such solutions remain unverified and subject to revision."
      • addedOutput schema / properties / pager
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "USGS PAGER loss estimates and population exposure; values change with each PAGER update.",
        +  "properties": {
        +    "economic": {
        +      "additionalProperties": false,
        +      "description": "Estimated economic losses.",
        +      "properties": {
        +        "bins": {
        +          "description": "Every bracket in upstream order.",
        +          "items": {
        +            "additionalProperties": false,
        +            "description": "One probability bracket.",
        +            "properties": {
        +              "color": {
        +                "description": "Alert color of this bracket. Absent when unpublished.",
        +                "type": "string"
        +              },
        +              "max": {
        +                "description": "Upper bound, exclusive, in millions of USD.",
        +                "type": "number"
        +              },
        +              "min": {
        +                "description": "Lower bound, inclusive, in millions of USD.",
        +                "type": "number"
        +              },
        +              "probability": {
        +                "description": "Probability (0–1) that the outcome falls in this bracket.",
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "min",
        +              "max",
        +              "probability"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "level": {
        +          "description": "Alert level this estimate sets — \"green\", \"yellow\", \"orange\", or \"red\"; the event alert is the higher of the two estimates. Absent when unpublished.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "bins"
        +      ],
        +      "type": "object"
        +    },
        +    "exposure": {
        +      "additionalProperties": false,
        +      "description": "Estimated population exposed to each shaking intensity.",
        +      "properties": {
        +        "countries": {
        +          "description": "Every country row in published order, all-zero rows included; empty when PAGER lists none.",
        +          "items": {
        +            "additionalProperties": false,
        +            "description": "One country row.",
        +            "properties": {
        +              "country_code": {
        +                "description": "Two-letter country code as PAGER publishes it; \"UK\" marks areas assigned to no country, not the United Kingdom (GB).",
        +                "type": "string"
        +              },
        +              "population": {
        +                "description": "Estimated people exposed at each intensity in this country.",
        +                "items": {
        +                  "type": "number"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "country_code",
        +              "population"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "mmi": {
        +          "description": "Modified Mercalli intensity of each column, in published order.",
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "population": {
        +          "description": "Estimated people exposed at each intensity, all areas combined.",
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "mmi",
        +        "population",
        +        "countries"
        +      ],
        +      "type": "object"
        +    },
        +    "fatality": {
        +      "additionalProperties": false,
        +      "description": "Estimated shaking-related fatalities.",
        +      "properties": {
        +        "bins": {
        +          "description": "Every bracket in upstream order.",
        +          "items": {
        +            "additionalProperties": false,
        +            "description": "One probability bracket.",
        +            "properties": {
        +              "color": {
        +                "description": "Alert color of this bracket. Absent when unpublished.",
        +                "type": "string"
        +              },
        +              "max": {
        +                "description": "Upper bound, exclusive, in deaths.",
        +                "type": "number"
        +              },
        +              "min": {
        +                "description": "Lower bound, inclusive, in deaths.",
        +                "type": "number"
        +              },
        +              "probability": {
        +                "description": "Probability (0–1) that the outcome falls in this bracket.",
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "min",
        +              "max",
        +              "probability"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "level": {
        +          "description": "Alert level this estimate sets — \"green\", \"yellow\", \"orange\", or \"red\"; the event alert is the higher of the two estimates. Absent when unpublished.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "bins"
        +      ],
        +      "type": "object"
        +    },
        +    "impact": {
        +      "description": "PAGER impact statements in published order; absent when none is published.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "fatality",
        +    "economic",
        +    "exposure"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / unavailable_includes / items / properties / group / enum
        Previous value: -[
        -  "origins",
        -  "magnitudes",
        -  "arrivals",
        -  "aftershock_forecast"
        -]New value: +[
        +  "origins",
        +  "magnitudes",
        +  "arrivals",
        +  "aftershock_forecast",
        +  "pager"
        +]
      • changedOutput schema / properties / unavailable_includes / items / properties / reason / description
        Previous value: -"not_published: the event has no product for it. fetch_failed: the product exists but could not be fetched or parsed."New value: +"not_published: the event has no product for it, or its product lacks the files the group reads. fetch_failed: the product exists but could not be fetched or parsed."
    • Changedearthquake_get_feed3 fields changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_cursor`: The feed cursor is malformed. `cursor_expired`: The retained generation expired, was evicted, or does not belong to this tenant and feed. `snapshot_too_large`: The feed exceeds retained storage capacity. `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."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_cursor`: The feed cursor is malformed. `cursor_expired`: The retained generation expired, was evicted, or does not belong to this tenant and feed. `snapshot_too_large`: The feed exceeds retained storage capacity. `feed_unavailable`: USGS feed endpoint returns a 5xx, serves HTML or an unreadable body, 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."
      • changedOutput schema / properties / events / items / properties / mmi / description
        Previous value: -"Maximum ShakeMap Modified Mercalli intensity (0–12); null without a ShakeMap or for EMSC."New value: +"Maximum ShakeMap Modified Mercalli intensity (1–12); null without a ShakeMap, when the ShakeMap computed no intensity, or for EMSC."
      • changedOutput schema / properties / events / items / properties / status / description
        Previous value: -"Review state: automatic (unverified), reviewed (analyst checked), or deleted. Null if unpublished (EMSC); such solutions remain unverified and subject to revision."New value: +"Review state: automatic (unverified), reviewed (analyst checked), or deleted. Null if unpublished (EMSC, or a USGS record without one of these values); such solutions remain unverified and subject to revision."
    • Changedearthquake_search_events11 fields changed
      • changedInput schema / properties / event_type / description
        Previous value: -"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."New value: +"Filter by upstream event classification, e.g. \"earthquake\" to exclude quarry blasts and explosions, or \"quarry blast\" to see only those; a comma-separated list such as \"earthquake,explosion\" matches any of them. USGS matches case-insensitively and returns zero matches for a value it does not list, which the notice then names. Only available from USGS."
      • changedInput schema / properties / magnitude_type / description
        Previous value: -"Magnitude type, e.g. \"mb\" or \"mww\"; both sources. Blank means omitted."New value: +"Magnitude type, e.g. \"mb\" or \"mww\"; both sources. USGS matches case-insensitively; EMSC matches its own lowercase types (\"mb\", \"mw\") case-sensitively and has no \"mww\". Blank means omitted."
      • addedInput schema / properties / min_cdi
        Added value: +{
        +  "description": "Minimum DYFI (Did You Feel It?) community intensity (1–12): the strongest shaking people reported for the event. An event without DYFI reports never matches. Only available from USGS.",
        +  "maximum": 12,
        +  "minimum": 1,
        +  "type": "number"
        +}
      • addedInput schema / properties / min_mmi
        Added value: +{
        +  "description": "Minimum ShakeMap intensity on the Modified Mercalli scale (1–12): the strongest shaking USGS modeled for the event, e.g. 7 for very strong shaking. Finds shaking a magnitude floor or alert_level misses. An event without a ShakeMap never matches; product_type \"shakemap\" requires one at any intensity. Only available from USGS.",
        +  "maximum": 12,
        +  "minimum": 1,
        +  "type": "number"
        +}
      • changedInput schema / properties / product_type / description
        Previous value: -"Required product type, e.g. \"moment-tensor\"; USGS only. Blank means omitted."New value: +"Required product type, e.g. \"moment-tensor\" (hyphenated, unlike the moment_tensor detail group); USGS only, matched case-insensitively. Blank means omitted."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_range`: Minimum magnitude or depth exceeds its maximum, or start_time is after end_time. `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."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_range`: Minimum magnitude or depth exceeds its maximum, or start_time is after end_time. `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, serves HTML or an unreadable body, 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."
      • changedOutput schema / properties / events / items / properties / mmi / description
        Previous value: -"Maximum ShakeMap Modified Mercalli intensity (0–12); null without a ShakeMap or for EMSC."New value: +"Maximum ShakeMap Modified Mercalli intensity (1–12); null without a ShakeMap, when the ShakeMap computed no intensity, or for EMSC."
      • changedOutput schema / properties / events / items / properties / status / description
        Previous value: -"Review state: automatic (unverified), reviewed (analyst checked), or deleted. Null if unpublished (EMSC); such solutions remain unverified and subject to revision."New value: +"Review state: automatic (unverified), reviewed (analyst checked), or deleted. Null if unpublished (EMSC, or a USGS record without one of these values); such solutions remain unverified and subject to revision."
      • changedOutput schema / properties / notice / description
        Previous value: -"Guidance when limit was clamped to 1,000 (requested and applied values), when results are empty (how to broaden filters), or when more pages remain (the next offset). Absent when none applies."New value: +"Guidance when limit was clamped to 1,000 (requested and applied values), when results are empty (how to broaden filters, or on USGS each supplied event_type, magnitude_type, or product_type value USGS does not list, with the listed value it likely meant), or when more pages remain (the next offset). Absent when none applies."
      • addedOutput schema / properties / queryEcho / properties / min_cdi
        Added value: +{
        +  "description": "Applied minimum DYFI community intensity (CDI); absent for EMSC.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / queryEcho / properties / min_mmi
        Added value: +{
        +  "description": "Applied minimum ShakeMap intensity (MMI); absent for EMSC.",
        +  "type": "number"
        +}
  2. 3 tool updates
    • Changedearthquake_get_event10 fields changed
      • changedInput schema / properties / event_id / description
        Previous value: -"USGS event ID, e.g. \"hv74966427\" or \"us6000sznj\". Found in the \"id\" field of earthquake_get_feed and earthquake_search_events results."New value: +"USGS event ID, e.g. \"hv74966427\" or \"us6000sznj\", or EMSC event ID, e.g. \"20190706_0000043\". Found in the \"id\" field of earthquake_get_feed and earthquake_search_events results."
      • addedInput schema / properties / include
        Added value: +{
        +  "description": "Optional groups: origins (every contributed origin solution, no extra request), magnitudes and arrivals (one shared phase-data download; every arrival of the preferred origin, nearest first), aftershock_forecast (one extra request). Omit for the default response.",
        +  "items": {
        +    "enum": [
        +      "origins",
        +      "magnitudes",
        +      "arrivals",
        +      "aftershock_forecast"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / aftershock_forecast
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "USGS Operational Aftershock Forecast; probabilities change with each update.",
        +  "properties": {
        +    "advisory_window": {
        +      "description": "Window USGS headlines in its advisory, e.g. \"1 Week\".",
        +      "type": "string"
        +    },
        +    "created": {
        +      "description": "ISO 8601 UTC time the forecast was issued.",
        +      "type": "string"
        +    },
        +    "expires": {
        +      "description": "ISO 8601 UTC expiry of the forecast.",
        +      "type": "string"
        +    },
        +    "next_update": {
        +      "description": "ISO 8601 UTC time of the next scheduled update; absent once updates stop.",
        +      "type": "string"
        +    },
        +    "windows": {
        +      "description": "Forecast windows in upstream order.",
        +      "items": {
        +        "additionalProperties": false,
        +        "description": "One forecast window.",
        +        "properties": {
        +          "above_mainshock": {
        +            "additionalProperties": false,
        +            "description": "Chance of an aftershock as large as the mainshock; absent when unpublished.",
        +            "properties": {
        +              "magnitude": {
        +                "description": "Mainshock magnitude.",
        +                "type": "number"
        +              },
        +              "probability": {
        +                "description": "Probability (0–1) of an aftershock at or above the mainshock magnitude.",
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "magnitude",
        +              "probability"
        +            ],
        +            "type": "object"
        +          },
        +          "bins": {
        +            "description": "Magnitude bins in upstream order.",
        +            "items": {
        +              "additionalProperties": false,
        +              "description": "One magnitude bin.",
        +              "properties": {
        +                "count_median": {
        +                  "description": "Median expected count.",
        +                  "type": "number"
        +                },
        +                "count_p95_max": {
        +                  "description": "Upper bound of the 95% count range.",
        +                  "type": "number"
        +                },
        +                "count_p95_min": {
        +                  "description": "Lower bound of the 95% count range.",
        +                  "type": "number"
        +                },
        +                "magnitude": {
        +                  "description": "Minimum magnitude of this bin.",
        +                  "type": "number"
        +                },
        +                "probability": {
        +                  "description": "Probability (0–1) of at least one aftershock at or above it.",
        +                  "type": "number"
        +                }
        +              },
        +              "required": [
        +                "magnitude",
        +                "probability"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "end": {
        +            "description": "ISO 8601 UTC window end.",
        +            "type": "string"
        +          },
        +          "label": {
        +            "description": "Window label, e.g. \"1 Day\", \"1 Week\".",
        +            "type": "string"
        +          },
        +          "start": {
        +            "description": "ISO 8601 UTC window start (the forecast issue time, not now).",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "start",
        +          "end",
        +          "bins"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "advisory_window",
        +    "created",
        +    "expires",
        +    "windows"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / arrivals
        Added value: +{
        +  "description": "All phase arrivals of the preferred origin, sorted by distance ascending.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "One phase arrival joined to its pick.",
        +    "properties": {
        +      "azimuth_deg": {
        +        "description": "Azimuth from epicenter to station, degrees.",
        +        "type": "number"
        +      },
        +      "channel": {
        +        "description": "SEED channel code.",
        +        "type": "string"
        +      },
        +      "distance_deg": {
        +        "description": "Epicentral distance, degrees.",
        +        "type": "number"
        +      },
        +      "location": {
        +        "description": "SEED location code as published; \"\" and \"--\" both mean blank.",
        +        "type": "string"
        +      },
        +      "network": {
        +        "description": "SEED network code.",
        +        "type": "string"
        +      },
        +      "phase": {
        +        "description": "Phase name, e.g. P, Pn, S.",
        +        "type": "string"
        +      },
        +      "station": {
        +        "description": "SEED station code.",
        +        "type": "string"
        +      },
        +      "time": {
        +        "description": "ISO 8601 UTC pick time.",
        +        "type": "string"
        +      },
        +      "time_residual_s": {
        +        "description": "Travel-time residual, seconds.",
        +        "type": "number"
        +      },
        +      "time_weight": {
        +        "description": "Weight of the arrival time in the location.",
        +        "type": "number"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / detail / properties / origin / properties / depth_type
        Added value: +{
        +  "description": "How the depth was set, as published, e.g. \"from location\" or \"operator assigned\" (fixed, not solved for).",
        +  "type": "string"
        +}
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `event_deleted`: USGS reports that the requested event was deleted. `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."New value: +"Machine-readable failure mode. Declared by this tool: `event_deleted`: USGS reports that the requested event was deleted. `not_found`: No USGS or EMSC event matches the provided event_id. `source_unavailable`: The USGS or EMSC event API returns a 5xx, serves HTML, or is unreachable. `source_timeout`: The USGS or EMSC event API did not answer before the request deadline. Other values are possible when a failure originates below the handler."
      • addedOutput schema / properties / event / properties / associated_ids
        Added value: +{
        +  "description": "Other network IDs USGS lists for this event, in upstream order; earthquake_get_event accepts them. Absent when USGS lists none, and for EMSC events.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / magnitudes
        Added value: +{
        +  "description": "Magnitude solutions from the preferred phase-data product, in document order.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "One event-level magnitude solution.",
        +    "properties": {
        +      "agency": {
        +        "description": "Agency that computed the magnitude.",
        +        "type": "string"
        +      },
        +      "evaluation_mode": {
        +        "description": "QuakeML evaluation mode: manual or automatic.",
        +        "type": "string"
        +      },
        +      "evaluation_status": {
        +        "description": "QuakeML evaluation status, e.g. reviewed.",
        +        "type": "string"
        +      },
        +      "is_preferred": {
        +        "description": "True for the document's preferred magnitude.",
        +        "type": "boolean"
        +      },
        +      "station_count": {
        +        "description": "Stations contributing to this magnitude.",
        +        "type": "number"
        +      },
        +      "type": {
        +        "description": "Magnitude type, e.g. Mww, mb, Ml.",
        +        "type": "string"
        +      },
        +      "value": {
        +        "description": "Magnitude value.",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "is_preferred"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / origins
        Added value: +{
        +  "description": "Every origin product, preferred first. Present when requested and published.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "One origin solution from an origin product.",
        +    "properties": {
        +      "azimuthal_gap_deg": {
        +        "description": "Largest azimuthal gap, degrees.",
        +        "type": "number"
        +      },
        +      "depth_error_km": {
        +        "description": "Depth uncertainty, km.",
        +        "type": "number"
        +      },
        +      "depth_km": {
        +        "description": "Hypocenter depth, km.",
        +        "type": "number"
        +      },
        +      "depth_type": {
        +        "description": "How the depth was set, as published, e.g. \"from location\" or \"operator assigned\".",
        +        "type": "string"
        +      },
        +      "evaluation_status": {
        +        "description": "QuakeML evaluation status, e.g. final.",
        +        "type": "string"
        +      },
        +      "event_id": {
        +        "description": "Contributing network's ID for the event.",
        +        "type": "string"
        +      },
        +      "horizontal_error_km": {
        +        "description": "Horizontal location uncertainty, km.",
        +        "type": "number"
        +      },
        +      "is_preferred": {
        +        "description": "True for the origin USGS prefers (listed first).",
        +        "type": "boolean"
        +      },
        +      "latitude": {
        +        "description": "Epicenter latitude, decimal degrees.",
        +        "type": "number"
        +      },
        +      "longitude": {
        +        "description": "Epicenter longitude, decimal degrees.",
        +        "type": "number"
        +      },
        +      "magnitude": {
        +        "description": "Magnitude published with this origin.",
        +        "type": "number"
        +      },
        +      "magnitude_type": {
        +        "description": "Magnitude type, e.g. mww, mb, Mi.",
        +        "type": "string"
        +      },
        +      "minimum_distance_deg": {
        +        "description": "Distance to the nearest station, degrees.",
        +        "type": "number"
        +      },
        +      "num_phases_used": {
        +        "description": "Phases used in the location.",
        +        "type": "number"
        +      },
        +      "num_stations_used": {
        +        "description": "Stations used in the location.",
        +        "type": "number"
        +      },
        +      "review_status": {
        +        "description": "Review status as published by the network.",
        +        "type": "string"
        +      },
        +      "source": {
        +        "description": "Network that contributed this origin product.",
        +        "type": "string"
        +      },
        +      "standard_error_s": {
        +        "description": "RMS travel-time residual, seconds.",
        +        "type": "number"
        +      },
        +      "time": {
        +        "description": "ISO 8601 UTC origin time.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "is_preferred"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / unavailable_includes
        Added value: +{
        +  "description": "Requested groups not returned, with the reason. Absent when all were returned.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "One requested group that was not returned.",
        +    "properties": {
        +      "group": {
        +        "description": "The requested group.",
        +        "enum": [
        +          "origins",
        +          "magnitudes",
        +          "arrivals",
        +          "aftershock_forecast"
        +        ],
        +        "type": "string"
        +      },
        +      "reason": {
        +        "description": "not_published: the event has no product for it. fetch_failed: the product exists but could not be fetched or parsed.",
        +        "enum": [
        +          "not_published",
        +          "fetch_failed"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "group",
        +      "reason"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedearthquake_get_feed8 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"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."New value: +"Events to return per page. Default 15; a larger value returns at most 1,000 and says so. Applies to the first page; later pages carry the page size inside the cursor and ignore limit, so set it on the first call."
      • removedInput schema / properties / limit / maximum
        Removed value: -1000
      • addedInput schema / properties / limit / multipleOf
        Added value: +1
      • changedInput schema / properties / limit / type
        Previous value: -"integer"New value: +"number"
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_cursor`: The feed cursor is malformed. `cursor_expired`: The retained generation expired, was evicted, or does not belong to this tenant and feed. `snapshot_too_large`: The feed exceeds retained storage capacity. `result_too_large`: One event or page metadata cannot fit the response budget. `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."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_cursor`: The feed cursor is malformed. `cursor_expired`: The retained generation expired, was evicted, or does not belong to this tenant and feed. `snapshot_too_large`: The feed exceeds retained storage capacity. `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."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "invalid_cursor",
        -  "cursor_expired",
        -  "snapshot_too_large",
        -  "result_too_large",
        -  "feed_unavailable",
        -  "feed_timeout"
        -]New value: +[
        +  "invalid_cursor",
        +  "cursor_expired",
        +  "snapshot_too_large",
        +  "feed_unavailable",
        +  "feed_timeout"
        +]
      • addedOutput schema / properties / events / items / properties / associated_ids
        Added value: +{
        +  "description": "Other network IDs USGS lists for this event, in upstream order; earthquake_get_event accepts them. Absent when USGS lists none, and for EMSC events.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / notice / description
        Previous 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_events for filtered queries. Absent when a single page covers the whole feed."New value: +"Guidance when a first-page limit was clamped to 1,000 (requested and applied values), when the feed or cursor position holds no events (a wider window, lower tier, or earthquake_search_events), or when more pages remain (paging with the cursor). Absent when none applies."
    • Changedearthquake_search_events11 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum events to return per call. Default 100. Accepts up to 20000; fetches at most 100 candidates and returns a byte-bounded page. Combine with offset to retrieve match sets larger than one call can return."New value: +"Events to return per call. Default 15; a larger value returns at most 1,000 and says so. Combine with offset to retrieve match sets larger than one call can return."
      • removedInput schema / properties / limit / maximum
        Removed value: -20000
      • addedInput schema / properties / limit / multipleOf
        Added value: +1
      • changedInput schema / properties / limit / type
        Previous value: -"integer"New value: +"number"
      • changedInput schema / properties / source / description
        Previous value: -"USGS includes PAGER, DYFI and ShakeMap; EMSC (European-Mediterranean Seismological Centre) is an independent global catalog, with densest station coverage around Europe/Mediterranean and no such impact products. Event-detail tool accepts USGS IDs only."New value: +"USGS includes PAGER, DYFI and ShakeMap; EMSC (European-Mediterranean Seismological Centre) is an independent global catalog, with densest station coverage around Europe/Mediterranean and no such impact products. earthquake_get_event accepts IDs from either source."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_range`: Minimum magnitude or depth exceeds its maximum, or start_time is after end_time. `result_too_large`: One event or page metadata cannot fit the response budget. `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."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_range`: Minimum magnitude or depth exceeds its maximum, or start_time is after end_time. `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."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "invalid_range",
        -  "result_too_large",
        -  "invalid_radius",
        -  "invalid_bounding_box",
        -  "source_unavailable",
        -  "source_timeout",
        -  "upstream_rejected",
        -  "upstream_rejected_no_reason"
        -]New value: +[
        +  "invalid_range",
        +  "invalid_radius",
        +  "invalid_bounding_box",
        +  "source_unavailable",
        +  "source_timeout",
        +  "upstream_rejected",
        +  "upstream_rejected_no_reason"
        +]
      • addedOutput schema / properties / events / items / properties / associated_ids
        Added value: +{
        +  "description": "Other network IDs USGS lists for this event, in upstream order; earthquake_get_event accepts them. Absent when USGS lists none, and for EMSC events.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / notice / description
        Previous value: -"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."New value: +"Guidance when limit was clamped to 1,000 (requested and applied values), when results are empty (how to broaden filters), or when more pages remain (the next offset). Absent when none applies."
      • changedOutput schema / properties / queryEcho / properties / limit / description
        Previous value: -"Effective result limit sent upstream."New value: +"Applied result limit sent upstream, after any clamp."
      • changedOutput schema / properties / truncated / description
        Previous value: -"Page capped by limit, candidates or bytes. Continue with nextOffset. Without totalCount, more events may remain but are not confirmed."New value: +"Page filled the applied limit and more matches remain or may remain. Continue with nextOffset. Without totalCount, more events may remain but are not confirmed."
  3. 4 tool updates
    • Changedearthquake_count_events22 fields changed
      • addedInput schema / properties / magnitude_type
        Added value: +{
        +  "description": "Magnitude type, e.g. \"mb\" or \"mww\"; both sources. Blank means omitted.",
        +  "type": "string"
        +}
      • addedInput schema / properties / product_type
        Added value: +{
        +  "description": "Required product type, e.g. \"moment-tensor\"; USGS only. Blank means omitted.",
        +  "type": "string"
        +}
      • addedInput schema / properties / review_status
        Added value: +{
        +  "description": "USGS review status: automatic or reviewed. Blank means omitted; unsupported by EMSC.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"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."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_range`: Minimum magnitude or depth exceeds its maximum, or start_time is after end_time. `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."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "invalid_radius",
        -  "invalid_bounding_box",
        -  "source_unavailable",
        -  "source_timeout",
        -  "upstream_rejected",
        -  "upstream_rejected_no_reason"
        -]New value: +[
        +  "invalid_range",
        +  "invalid_radius",
        +  "invalid_bounding_box",
        +  "source_unavailable",
        +  "source_timeout",
        +  "upstream_rejected",
        +  "upstream_rejected_no_reason"
        +]
      • changedOutput schema / properties / exceeds_limit / description
        Previous value: -"True when count exceeds 20000 — a full earthquake_search_events would be truncated. For EMSC, evaluated against the known 20000 limit since max_allowed is not returned. Narrow filters to retrieve all matching events."New value: +"Count exceeds the single-request threshold (20000 for EMSC despite null max_allowed). Use search offset paging or narrower filters."
      • changedOutput schema / properties / max_allowed / description
        Previous value: -"Maximum events the API would return for a full fetch. 20000 for USGS. Null for EMSC — the EMSC count endpoint does not return this field."New value: +"Upstream single-request threshold: 20000 for USGS; null because EMSC count omits it. Offset paging can retrieve larger sets."
      • changedOutput schema / properties / queryEcho / properties / alert_level / description
        Previous value: -"PAGER alert filter sent upstream. Absent for EMSC — not supported there."New value: +"Applied minimum PAGER alert; absent for EMSC."
      • changedOutput schema / properties / queryEcho / properties / end_time / description
        Previous value: -"Effective query end time. Absent when omitted from input — the upstream defaults to the current time."New value: +"Applied end time; absent means upstream current-time default."
      • changedOutput schema / properties / queryEcho / properties / event_type / description
        Previous value: -"Event-type filter sent upstream. Absent for EMSC — not supported there."New value: +"Applied event type; absent for EMSC."
      • changedOutput schema / properties / queryEcho / properties / latitude / description
        Previous value: -"Radius-search latitude sent upstream."New value: +"Circle latitude, degrees."
      • changedOutput schema / properties / queryEcho / properties / longitude / description
        Previous value: -"Radius-search longitude sent upstream."New value: +"Circle longitude, degrees."
      • addedOutput schema / properties / queryEcho / properties / magnitude_type
        Added value: +{
        +  "description": "Applied magnitude type.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / queryEcho / properties / max_depth_km / description
        Previous value: -"Maximum depth filter sent upstream."New value: +"Applied maximum depth, km."
      • changedOutput schema / properties / queryEcho / properties / max_magnitude / description
        Previous value: -"Maximum magnitude filter sent upstream."New value: +"Applied maximum magnitude."
      • changedOutput schema / properties / queryEcho / properties / min_depth_km / description
        Previous value: -"Minimum depth filter sent upstream."New value: +"Applied minimum depth, km."
      • changedOutput schema / properties / queryEcho / properties / min_felt / description
        Previous value: -"DYFI felt-report filter sent upstream. Absent for EMSC — not supported there."New value: +"Applied minimum DYFI response count; absent for EMSC."
      • changedOutput schema / properties / queryEcho / properties / min_magnitude / description
        Previous value: -"Minimum magnitude filter sent upstream."New value: +"Applied minimum magnitude."
      • changedOutput schema / properties / queryEcho / properties / min_significance / description
        Previous value: -"Significance filter sent upstream. Absent for EMSC — not supported there."New value: +"Applied minimum significance; absent for EMSC."
      • addedOutput schema / properties / queryEcho / properties / product_type
        Added value: +{
        +  "description": "Applied required product; USGS only.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / queryEcho / properties / review_status
        Added value: +{
        +  "description": "Applied review status; USGS only.",
        +  "enum": [
        +    "automatic",
        +    "reviewed"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / queryEcho / properties / start_time / description
        Previous value: -"Effective query start time sent upstream — server-resolved to a 30-day window when omitted from input."New value: +"Applied start time; defaults to 30 days before end/now."
    • Changedearthquake_get_event36 fields changed
      • addedInput schema / properties / event_id / minLength
        Added value: +1
      • changedOutput schema / properties / detail / description
        Previous value: -"Analysis products USGS attached to this event. Absent when the event carries none — that means no product was produced, not that impact was zero."New value: +"Projected USGS analysis products. Absent when no projected field is available; absence does not mean impact was zero."
      • changedOutput schema / properties / detail / properties / dyfi / description
        Previous value: -"Felt-report summary. Absent when no DYFI product exists for the event."New value: +"Felt-report summary. Absent without projected fields."
      • changedOutput schema / properties / detail / properties / dyfi / properties / responses / description
        Previous value: -"Number of \"Did You Feel It?\" reports the public submitted."New value: +"Public DYFI (Did You Feel It?) report count."
      • changedOutput schema / properties / detail / properties / finite_fault / description
        Previous value: -"Finite-fault rupture model. Produced only for large events."New value: +"Finite-fault rupture model for large events; absent without projected fields."
      • changedOutput schema / properties / detail / properties / ground_failure / description
        Previous value: -"Secondary-hazard alert levels. Absent when no ground-failure model was run."New value: +"Secondary-hazard alert levels. Absent without projected fields."
      • changedOutput schema / properties / detail / properties / losspager / description
        Previous value: -"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."New value: +"PAGER assessment; fatality/economic-loss brackets are in report_url, not this projection. Absent without projected fields."
      • changedOutput schema / properties / detail / properties / moment_tensor / description
        Previous value: -"Focal-mechanism solution. Absent for events with no moment-tensor inversion."New value: +"Focal mechanism; absent without projected fields."
      • changedOutput schema / properties / detail / properties / moment_tensor / properties / derived_depth_km / description
        Previous value: -"Centroid depth in kilometers derived from the moment-tensor inversion."New value: +"Moment-tensor centroid depth, km."
      • changedOutput schema / properties / detail / properties / moment_tensor / properties / nodal_plane_1 / description
        Previous value: -"First nodal plane of the focal mechanism. Either plane can be the true fault."New value: +"First nodal plane; either plane may be the fault."
      • changedOutput schema / properties / detail / properties / moment_tensor / properties / nodal_plane_1 / properties / rake / description
        Previous value: -"Slip direction in degrees (-180 to 180). Near 90 is reverse faulting, near -90 normal, near 0 or 180 strike-slip."New value: +"Slip direction, degrees (-180..180): ~90 reverse, ~-90 normal, ~0/180 strike-slip."
      • changedOutput schema / properties / detail / properties / moment_tensor / properties / nodal_plane_2 / description
        Previous value: -"Second nodal plane — the auxiliary solution, indistinguishable from the first on seismic data alone."New value: +"Auxiliary nodal plane; seismic data alone cannot distinguish the true fault."
      • changedOutput schema / properties / detail / properties / moment_tensor / properties / nodal_plane_2 / properties / rake / description
        Previous value: -"Slip direction in degrees (-180 to 180). Near 90 is reverse faulting, near -90 normal, near 0 or 180 strike-slip."New value: +"Slip direction, degrees (-180..180): ~90 reverse, ~-90 normal, ~0/180 strike-slip."
      • changedOutput schema / properties / detail / properties / moment_tensor / properties / scalar_moment_nm / description
        Previous value: -"Scalar seismic moment in newton-metres — the physical size of the rupture."New value: +"Scalar seismic moment, newton-metres."
      • changedOutput schema / properties / detail / properties / origin / description
        Previous value: -"Location-quality metrics for the preferred origin."New value: +"Location-quality metrics for the preferred origin; absent without projected fields."
      • changedOutput schema / properties / detail / properties / origin / properties / azimuthal_gap_deg / description
        Previous value: -"Largest azimuthal gap between stations, in degrees. Gaps above ~180 make the location poorly constrained."New value: +"Largest station azimuthal gap, degrees; >~180 means poorly constrained location."
      • changedOutput schema / properties / detail / properties / origin / properties / review_status / description
        Previous value: -"Review state of the origin solution as the contributing network published it."New value: +"Origin review state published by its network."
      • changedOutput schema / properties / detail / properties / shakemap / description
        Previous value: -"ShakeMap modeled ground-motion summary. Absent when no ShakeMap was produced."New value: +"ShakeMap modeled ground-motion summary. Absent without projected fields."
      • addedOutput schema / properties / detail / properties / shakemap / properties / code_version
        Added value: +{
        +  "description": "ShakeMap producer code version reported by USGS.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / detail / properties / shakemap / properties / max_pga / description
        Previous 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)."New value: +"Maximum modeled peak ground acceleration, in g (fraction of standard gravity)."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"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."New value: +"Machine-readable failure mode. Declared by this tool: `event_deleted`: USGS reports that the requested event was deleted. `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."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "not_found",
        -  "source_unavailable",
        -  "source_timeout"
        -]New value: +[
        +  "event_deleted",
        +  "not_found",
        +  "source_unavailable",
        +  "source_timeout"
        +]
      • changedOutput schema / properties / event / properties / alert / description
        Previous value: -"PAGER estimated impact alert level. Null when USGS ran no PAGER assessment, and always null for EMSC, which publishes no such field."New value: +"PAGER estimated impact; null without an assessment or for EMSC."
      • changedOutput schema / properties / event / properties / auth / description
        Previous value: -"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."New value: +"Authoritative agency/network code (EMSC auth or USGS net); absent if unpublished."
      • changedOutput schema / properties / event / properties / cdi / description
        Previous 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."New value: +"Maximum DYFI Community Decimal Intensity (0–12); null if uncomputed or unsupported (EMSC)."
      • 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). Null for historical events where depth was not measured."New value: +"Hypocenter depth in km; null if unmeasured."
      • changedOutput schema / properties / event / properties / event_certainty / description
        Previous value: -"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."New value: +"EMSC classification certainty: known (asserted), suspected, unknown, or unreported. Suspected is not confirmed. Absent for USGS and unrecognized EMSC codes."
      • changedOutput schema / properties / event / properties / event_type / description
        Previous 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."New value: +"QuakeML classification (earthquake, quarry blast, explosion, etc.). EMSC codes decode to USGS names; unknown codes pass through verbatim. Certainty is separate. Absent if unpublished; either catalog includes non-tectonic events."
      • changedOutput schema / properties / event / properties / felt / description
        Previous 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."New value: +"DYFI (Did You Feel It?) response count; null if no USGS reports or source has no DYFI (EMSC). Null does not mean unfelt."
      • changedOutput schema / properties / event / properties / magnitude / description
        Previous value: -"Preferred magnitude value. Null when no magnitude was computed for the event (the title renders it as \"M ?\")."New value: +"Preferred magnitude; null if not computed (title: \"M ?\")."
      • changedOutput schema / properties / event / properties / mmi / description
        Previous 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."New value: +"Maximum ShakeMap Modified Mercalli intensity (0–12); null without a ShakeMap or for EMSC."
      • changedOutput schema / properties / event / properties / significance / description
        Previous 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."New value: +"USGS significance (0–2000+), combining magnitude, felt reports and PAGER; null if uncomputed or for EMSC."
      • changedOutput schema / properties / event / properties / source_catalog / description
        Previous value: -"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."New value: +"Solution catalog, e.g. EMSC-RTS (real-time, subject to revision). Absent for USGS."
      • changedOutput schema / properties / event / properties / status / description
        Previous 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."New value: +"Review state: automatic (unverified), reviewed (analyst checked), or deleted. Null if unpublished (EMSC); such solutions remain unverified and subject to revision."
      • changedOutput schema / properties / event / properties / title / description
        Previous value: -"Human-readable event summary, e.g. \"M 6.0 - 13 km S of Honaunau-Napoopoo, Hawaii\"."New value: +"Event summary, e.g. \"M 6.0 - Hawaii\"."
      • changedOutput schema / properties / event / properties / tsunami / description
        Previous 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."New value: +"USGS tsunami flag: 1 for large oceanic events, 0 otherwise; null if unpublished (EMSC). Not a warning or evidence of a tsunami; check NOAA tsunami.gov for alerts."
    • Changedearthquake_get_feed14 fields changed
      • changedOutput schema / properties / events / items / properties / alert / description
        Previous value: -"PAGER estimated impact alert level. Null when USGS ran no PAGER assessment, and always null for EMSC, which publishes no such field."New value: +"PAGER estimated impact; null without an assessment or for EMSC."
      • changedOutput schema / properties / events / items / properties / auth / description
        Previous value: -"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."New value: +"Authoritative agency/network code (EMSC auth or USGS net); absent if unpublished."
      • changedOutput schema / properties / events / items / properties / cdi / description
        Previous 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."New value: +"Maximum DYFI Community Decimal Intensity (0–12); null if uncomputed or unsupported (EMSC)."
      • 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). Null for historical events where depth was not measured."New value: +"Hypocenter depth in km; null if unmeasured."
      • changedOutput schema / properties / events / items / properties / event_certainty / description
        Previous value: -"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."New value: +"EMSC classification certainty: known (asserted), suspected, unknown, or unreported. Suspected is not confirmed. Absent for USGS and unrecognized EMSC codes."
      • changedOutput schema / properties / events / items / properties / event_type / description
        Previous 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."New value: +"QuakeML classification (earthquake, quarry blast, explosion, etc.). EMSC codes decode to USGS names; unknown codes pass through verbatim. Certainty is separate. Absent if unpublished; either catalog includes non-tectonic events."
      • changedOutput schema / properties / events / items / properties / felt / description
        Previous 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."New value: +"DYFI (Did You Feel It?) response count; null if no USGS reports or source has no DYFI (EMSC). Null does not mean unfelt."
      • changedOutput schema / properties / events / items / properties / magnitude / description
        Previous value: -"Preferred magnitude value. Null when no magnitude was computed for the event (the title renders it as \"M ?\")."New value: +"Preferred magnitude; null if not computed (title: \"M ?\")."
      • changedOutput schema / properties / events / items / properties / mmi / description
        Previous 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."New value: +"Maximum ShakeMap Modified Mercalli intensity (0–12); null without a ShakeMap or for EMSC."
      • changedOutput schema / properties / events / items / properties / significance / description
        Previous 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."New value: +"USGS significance (0–2000+), combining magnitude, felt reports and PAGER; null if uncomputed or for EMSC."
      • changedOutput schema / properties / events / items / properties / source_catalog / description
        Previous value: -"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."New value: +"Solution catalog, e.g. EMSC-RTS (real-time, subject to revision). Absent for USGS."
      • changedOutput schema / properties / events / items / properties / status / description
        Previous 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."New value: +"Review state: automatic (unverified), reviewed (analyst checked), or deleted. Null if unpublished (EMSC); such solutions remain unverified and subject to revision."
      • changedOutput schema / properties / events / items / properties / title / description
        Previous value: -"Human-readable event summary, e.g. \"M 6.0 - 13 km S of Honaunau-Napoopoo, Hawaii\"."New value: +"Event summary, e.g. \"M 6.0 - Hawaii\"."
      • changedOutput schema / properties / events / items / properties / tsunami / description
        Previous 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."New value: +"USGS tsunami flag: 1 for large oceanic events, 0 otherwise; null if unpublished (EMSC). Not a warning or evidence of a tsunami; check NOAA tsunami.gov for alerts."
    • Changedearthquake_search_events39 fields changed
      • addedInput schema / properties / magnitude_type
        Added value: +{
        +  "description": "Magnitude type, e.g. \"mb\" or \"mww\"; both sources. Blank means omitted.",
        +  "type": "string"
        +}
      • addedInput schema / properties / product_type
        Added value: +{
        +  "description": "Required product type, e.g. \"moment-tensor\"; USGS only. Blank means omitted.",
        +  "type": "string"
        +}
      • addedInput schema / properties / review_status
        Added value: +{
        +  "description": "USGS review status: automatic or reviewed. Blank means omitted; unsupported by EMSC.",
        +  "type": "string"
        +}
      • changedInput schema / properties / source / description
        Previous 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."New value: +"USGS includes PAGER, DYFI and ShakeMap; EMSC (European-Mediterranean Seismological Centre) is an independent global catalog, with densest station coverage around Europe/Mediterranean and no such impact products. Event-detail tool accepts USGS IDs only."
      • changedOutput schema / properties / countUnavailable / description
        Previous value: -"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_events with the same filters to recover the total. Absent whenever the count succeeded or was never needed."New value: +"True if the count lookup failed; events are unaffected, totalCount unknown. Retry earthquake_count_events with identical filters. Absent if count succeeded or was unnecessary."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `result_too_large`: One event or page metadata cannot fit the response budget. `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."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_range`: Minimum magnitude or depth exceeds its maximum, or start_time is after end_time. `result_too_large`: One event or page metadata cannot fit the response budget. `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."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "result_too_large",
        -  "invalid_radius",
        -  "invalid_bounding_box",
        -  "source_unavailable",
        -  "source_timeout",
        -  "upstream_rejected",
        -  "upstream_rejected_no_reason"
        -]New value: +[
        +  "invalid_range",
        +  "result_too_large",
        +  "invalid_radius",
        +  "invalid_bounding_box",
        +  "source_unavailable",
        +  "source_timeout",
        +  "upstream_rejected",
        +  "upstream_rejected_no_reason"
        +]
      • changedOutput schema / properties / events / items / properties / alert / description
        Previous value: -"PAGER estimated impact alert level. Null when USGS ran no PAGER assessment, and always null for EMSC, which publishes no such field."New value: +"PAGER estimated impact; null without an assessment or for EMSC."
      • changedOutput schema / properties / events / items / properties / auth / description
        Previous value: -"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."New value: +"Authoritative agency/network code (EMSC auth or USGS net); absent if unpublished."
      • changedOutput schema / properties / events / items / properties / cdi / description
        Previous 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."New value: +"Maximum DYFI Community Decimal Intensity (0–12); null if uncomputed or unsupported (EMSC)."
      • 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). Null for historical events where depth was not measured."New value: +"Hypocenter depth in km; null if unmeasured."
      • changedOutput schema / properties / events / items / properties / event_certainty / description
        Previous value: -"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."New value: +"EMSC classification certainty: known (asserted), suspected, unknown, or unreported. Suspected is not confirmed. Absent for USGS and unrecognized EMSC codes."
      • changedOutput schema / properties / events / items / properties / event_type / description
        Previous 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."New value: +"QuakeML classification (earthquake, quarry blast, explosion, etc.). EMSC codes decode to USGS names; unknown codes pass through verbatim. Certainty is separate. Absent if unpublished; either catalog includes non-tectonic events."
      • changedOutput schema / properties / events / items / properties / felt / description
        Previous 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."New value: +"DYFI (Did You Feel It?) response count; null if no USGS reports or source has no DYFI (EMSC). Null does not mean unfelt."
      • changedOutput schema / properties / events / items / properties / magnitude / description
        Previous value: -"Preferred magnitude value. Null when no magnitude was computed for the event (the title renders it as \"M ?\")."New value: +"Preferred magnitude; null if not computed (title: \"M ?\")."
      • changedOutput schema / properties / events / items / properties / mmi / description
        Previous 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."New value: +"Maximum ShakeMap Modified Mercalli intensity (0–12); null without a ShakeMap or for EMSC."
      • changedOutput schema / properties / events / items / properties / significance / description
        Previous 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."New value: +"USGS significance (0–2000+), combining magnitude, felt reports and PAGER; null if uncomputed or for EMSC."
      • changedOutput schema / properties / events / items / properties / source_catalog / description
        Previous value: -"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."New value: +"Solution catalog, e.g. EMSC-RTS (real-time, subject to revision). Absent for USGS."
      • changedOutput schema / properties / events / items / properties / status / description
        Previous 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."New value: +"Review state: automatic (unverified), reviewed (analyst checked), or deleted. Null if unpublished (EMSC); such solutions remain unverified and subject to revision."
      • changedOutput schema / properties / events / items / properties / title / description
        Previous value: -"Human-readable event summary, e.g. \"M 6.0 - 13 km S of Honaunau-Napoopoo, Hawaii\"."New value: +"Event summary, e.g. \"M 6.0 - Hawaii\"."
      • changedOutput schema / properties / events / items / properties / tsunami / description
        Previous 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."New value: +"USGS tsunami flag: 1 for large oceanic events, 0 otherwise; null if unpublished (EMSC). Not a warning or evidence of a tsunami; check NOAA tsunami.gov for alerts."
      • changedOutput schema / properties / nextOffset / description
        Previous value: -"Value to pass as the offset input to retrieve the next page, with every other input unchanged. Present when more events remain or may remain with an unknown total; absent means this was the last page."New value: +"Next 1-based offset; keep other inputs unchanged. Present if more events remain or may remain with unknown total; absent on last page."
      • changedOutput schema / properties / queryEcho / properties / alert_level / description
        Previous value: -"PAGER alert filter sent upstream. Absent for EMSC — not supported there."New value: +"Applied minimum PAGER alert; absent for EMSC."
      • changedOutput schema / properties / queryEcho / properties / end_time / description
        Previous value: -"Effective query end time. Absent when omitted from input — the upstream defaults to the current time."New value: +"Applied end time; absent means upstream current-time default."
      • changedOutput schema / properties / queryEcho / properties / event_type / description
        Previous value: -"Event-type filter sent upstream. Absent for EMSC — not supported there."New value: +"Applied event type; absent for EMSC."
      • changedOutput schema / properties / queryEcho / properties / latitude / description
        Previous value: -"Radius-search latitude sent upstream."New value: +"Circle latitude, degrees."
      • changedOutput schema / properties / queryEcho / properties / longitude / description
        Previous value: -"Radius-search longitude sent upstream."New value: +"Circle longitude, degrees."
      • addedOutput schema / properties / queryEcho / properties / magnitude_type
        Added value: +{
        +  "description": "Applied magnitude type.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / queryEcho / properties / max_depth_km / description
        Previous value: -"Maximum depth filter sent upstream."New value: +"Applied maximum depth, km."
      • changedOutput schema / properties / queryEcho / properties / max_magnitude / description
        Previous value: -"Maximum magnitude filter sent upstream."New value: +"Applied maximum magnitude."
      • changedOutput schema / properties / queryEcho / properties / min_depth_km / description
        Previous value: -"Minimum depth filter sent upstream."New value: +"Applied minimum depth, km."
      • changedOutput schema / properties / queryEcho / properties / min_felt / description
        Previous value: -"DYFI felt-report filter sent upstream. Absent for EMSC — not supported there."New value: +"Applied minimum DYFI response count; absent for EMSC."
      • changedOutput schema / properties / queryEcho / properties / min_magnitude / description
        Previous value: -"Minimum magnitude filter sent upstream."New value: +"Applied minimum magnitude."
      • changedOutput schema / properties / queryEcho / properties / min_significance / description
        Previous value: -"Significance filter sent upstream. Absent for EMSC — not supported there."New value: +"Applied minimum significance; absent for EMSC."
      • addedOutput schema / properties / queryEcho / properties / product_type
        Added value: +{
        +  "description": "Applied required product; USGS only.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / queryEcho / properties / review_status
        Added value: +{
        +  "description": "Applied review status; USGS only.",
        +  "enum": [
        +    "automatic",
        +    "reviewed"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / queryEcho / properties / start_time / description
        Previous value: -"Effective query start time sent upstream — server-resolved to a 30-day window when omitted from input."New value: +"Applied start time; defaults to 30 days before end/now."
      • 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 when results were not capped, and when that follow-up query failed — countUnavailable separates the two."New value: +"Full match total, inferred from a nonempty short upstream page (or empty first page), otherwise counted for full pages. Absent for empty later pages or failed counts; countUnavailable marks failures."
      • changedOutput schema / properties / truncated / description
        Previous value: -"True when results were capped by the requested limit, candidate limit, or response byte budget. 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."New value: +"Page capped by limit, candidates or bytes. Continue with nextOffset. Without totalCount, more events may remain but are not confirmed."
  4. 6 tool updates
    • Removedearthquake_count
    • Addedearthquake_count_events
    • Changedearthquake_get_event1 field changed
      • changedInput schema / properties / event_id / description
        Previous value: -"USGS event ID, e.g. \"hv74966427\" or \"us6000sznj\". Found in the \"id\" field of earthquake_get_feed and earthquake_search results."New value: +"USGS event ID, e.g. \"hv74966427\" or \"us6000sznj\". Found in the \"id\" field of earthquake_get_feed and earthquake_search_events results."
    • Changedearthquake_get_feed3 fields changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"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."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_cursor`: The feed cursor is malformed. `cursor_expired`: The retained generation expired, was evicted, or does not belong to this tenant and feed. `snapshot_too_large`: The feed exceeds retained storage capacity. `result_too_large`: One event or page metadata cannot fit the response budget. `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."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "feed_unavailable",
        -  "feed_timeout"
        -]New value: +[
        +  "invalid_cursor",
        +  "cursor_expired",
        +  "snapshot_too_large",
        +  "result_too_large",
        +  "feed_unavailable",
        +  "feed_timeout"
        +]
      • changedOutput schema / properties / notice / description
        Previous 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."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_events for filtered queries. Absent when a single page covers the whole feed."
    • Removedearthquake_search
    • Addedearthquake_search_events
  5. 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"
        +]
  6. 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"
        -]
  7. 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."
  8. 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"
        +}
  9. 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"
        +}
  10. 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"
        +}
  11. 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."
  12. 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."

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides access to the USGS Earthquake Catalog for querying earthquake events via the FDSNWS API, enabling natural language questions about earthquake data.
    302 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to search global seismic event data from the European-Mediterranean Seismological Centre's FDSN API, filtering by UTC time range, magnitude, and geographic area, and to retrieve the most recent earthquakes above a minimum magnitude.
    492 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.