← The evidence ledger
Evidence row 293473
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 7f2f24cb-237a-4877-9e3d-9c91bd21c789
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 9f4c82e139ca6d5e95d53aa19b653e093646ee89d7efeb9917ace07b048e37a5
- Leaf
- 0x44e9dc194531140035fd0835d17943fd7a0bd268d5f0cf188c53eaca0e146302
What was observed
{
"count": 6,
"tools": [
{
"description": "ONE PROPERTY, PAST 365 DAYS. Property Snapshot by Address: Past Storm Leads plus County Forecast Label. Use for recent storms at one exact address: its own reported and radar-detected storm events within a tight radius (about 150 m), with the county's current forecast label as secondary context. Input is an address with county and state, or lat/lon. Not the full archive (use get_property_storm_history_report, Storm History by Address, which searches a wider 5-mile radius so counts will differ), not a county summary (use get_storm_history), and not forecasts (use get_risk_forecast, ML Storm Forecast by Address). For paid single-address data, call get_weather_data with dataset=address and addresses=true ($0.05 flat per address; needs an Atlas United Data API key or an x402 payment).",
"inputSchema": {
"properties": {
"address": {
"description": "Street address.",
"type": "string"
},
"county": {
"description": "County name without the word 'County', e.g. Dallas.",
"type": "string"
},
"lat": {
"description": "Latitude.",
"type": "number"
},
"lon": {
"description": "Longitude.",
"type": "number"
},
"state": {
"description": "2-letter US state code, e.g. TX.",
"type": "string"
}
},
"type": "object"
},
"name": "get_address_report"
},
{
"description": "ONE POINT, NOW TO 48 HOURS. Model-Based Weather by Address: point weather for any U.S. coordinate or street address, with current conditions, active severe weather alerts and a short-term rain outlook. Use for what the weather is or will be at a location; add hours_ahead=0-48 for Model-Based Hourly Forecast by Address. Not for storm history or storm-risk forecasts (use get_address_report, get_property_storm_history_report, get_storm_history or get_risk_forecast). FREE by default: the lean response needs no account. details=true returns the full pull, billed $0.0002 per call (not per address).",
"inputSchema": {
"properties": {
"address": {
"description": "Street address. Real server-side geocoding -- no separate geocoding step needed.",
"type": "string"
},
"details": {
"default": false,
"description": "true = full pull, $0.0002/call, requires an API key or x402 payment. false (default) = free lean response.",
"type": "boolean"
},
"hours_ahead": {
"description": "Forecast 0-48h out instead of current conditions -- snaps to the nearest available forecast hour, response's forecast_hour_used says exactly what you got.",
"maximum": 48,
"minimum": 0,
"type": "integer"
},
"lat": {
"description": "Latitude, alternative to address.",
"type": "number"
},
"lon": {
"description": "Longitude, alternative to address.",
"type": "number"
},
"x_payment": {
"description": "Optional signed x402 payment payload, used instead of an API key when details=true.",
"type": "string"
}
},
"type": "object"
},
"name": "get_current_weather"
},
{
"description": "ONE PROPERTY, 2003 TO PRESENT. Storm History by Address: Reported and Radar-Detected Events Since 2003. Use when the user wants the full citable record for a single address, or a date-of-loss lookup: 11 event categories (hail, wind, flood, lightning, tornado, hurricane, winter storm, extreme heat/cold, drought, wildfire, coastal) in one report. Input is a street address or lat/lon. Not the 365-day snapshot (use get_address_report) and not a county summary (use get_storm_history). Free preview shows the report-line count and exact price before anything is paid. Paid report: $0.05 per line, $10.00 minimum per report. Optional date_of_loss anchors the report around one date and lists the events reported or radar-detected on and around it, for reference; it is not a determination of whether any claim is valid. Address and date of loss are sent in a POST body, which keeps them out of URLs and logs.",
"inputSchema": {
"properties": {
"address": {
"description": "Street address. Real server-side geocoding -- no separate geocoding step needed.",
"type": "string"
},
"addresses": {
"default": false,
"description": "false = free preview (line count + price). true = the real full report -- requires the user's own Atlas United Data API account key, or an x402 payment.",
"type": "boolean"
},
"date_of_loss": {
"description": "Optional, YYYY-MM-DD. Anchors the report around this date.",
"type": "string"
},
"lat": {
"description": "Latitude, alternative to address.",
"type": "number"
},
"lon": {
"description": "Longitude, alternative to address.",
"type": "number"
},
"radius_mi": {
"description": "Search radius in miles. Default 5, max 25.",
"type": "number"
},
"x_payment": {
"description": "Optional signed x402 payment payload, used instead of an API key.",
"type": "string"
}
},
"type": "object"
},
"name": "get_property_storm_history_report"
},
{
"description": "COUNTY LEVEL, FREE, FUTURE (next 24 hours to 10 days). ML Storm Forecast by Address. Use when the question is which storms could affect a county soon: counts of addresses in the forecast path, the storm types forecast and the estimated cost (the county's A-F grade is shown as a secondary label). Input is state plus county. Per-peril machine-learning models, refreshed 4 times a day. Could happen, not will. Not for past storms (use get_storm_history, get_address_report or get_property_storm_history_report) and not for current weather (use get_current_weather). The paid pull (addresses=true, $0.05 per address) returns one record per address with structure_value (USD replacement cost), people (estimated occupants), full_address, lat, lon, county, storm_type, forecast_time and risk_label. For the paid pull, call get_weather_data with dataset=risk and addresses=true (needs an Atlas United Data API key or an x402 payment).",
"inputSchema": {
"properties": {
"county": {
"description": "County name without the word 'County', e.g. Dallas.",
"type": "string"
},
"peril": {
"description": "Narrows the forecast to one storm type -- check a free preview's storm_types for real values available in this window.",
"type": "string"
},
"state": {
"description": "2-letter US state code, e.g. TX.",
"type": "string"
},
"window": {
"description": "Forecast window. Default 24h.",
"enum": [
"24h",
"48h",
"3d",
"5d",
"7d",
"10d"
],
"type": "string"
}
},
"required": [
"state",
"county"
],
"type": "object"
},
"name": "get_risk_forecast"
},
{
"description": "COUNTY LEVEL, FREE, PAST 365 DAYS. Past Storm Leads by Address: Reported and Radar-Detected, Last 365 Days. Use when the question is how much storm activity a county has had in the past year: event counts, storm types, measured severity ranges and repeat properties. Input is state plus county, never a street address. Not for one property (use get_address_report), not for the 2003-to-present record (use get_property_storm_history_report), not for future storms (use get_risk_forecast). Not a damage assessment. For the paid address-level list, call get_weather_data with dataset=storms and addresses=true ($0.05 per address; needs an Atlas United Data API key or an x402 payment).",
"inputSchema": {
"properties": {
"county": {
"description": "County name without the word 'County', e.g. Dallas.",
"type": "string"
},
"days": {
"description": "Look-back window in days (up to 365).",
"type": "integer"
},
"min_severity": {
"description": "Minimum severity, e.g. 1.75 for golf-ball hail.",
"type": "number"
},
"peril": {
"description": "Storm/risk type filter. Used by dataset=storms and dataset=risk (narrows to one storm type -- use the exact names returned under storm_types in a free preview) and by dataset=at_risk (narrows to one peril bucket, a different real meaning -- check that dataset's own preview for its real values). Common storms/risk values: HAIL, THUNDERSTORM_WIND, FLASH_FLOOD, HEAVY_RAIN, FLOOD, TORNADO.",
"type": "string"
},
"state": {
"description": "2-letter US state code, e.g. TX.",
"type": "string"
}
},
"required": [
"state",
"county"
],
"type": "object"
},
"name": "get_storm_history"
},
{
"description": "CATCH-ALL and PAID-PULL tool. Prefer the dedicated tools below when one fits (get_storm_history: one county, past 365 days; get_risk_forecast: one county, next 24 hours to 10 days; get_address_report: one address, past 365 days; get_property_storm_history_report: one address, 2003 to present; get_current_weather: one point, now to 48 hours). Use THIS tool for: every PAID address-level pull (set addresses=true), county coverage, facilities, wildfire (county-level), at_risk, daily, a counties multi-county rollup (comma-separated, max 15), hazard_score, or any parameter the dedicated tools do not expose (radius_mi, date_of_loss, window, months, category, limit, kind, details, hours_ahead). Datasets: ML Storm Forecast by Address (risk), Model-Based Weather by Address (weather), Model-Based Hourly Forecast by Address (weather with hours_ahead), Storm History by Address: Reported and Radar-Detected Events Since 2003 (history), Past Storm Leads by Address: Reported and Radar-Detected, Last 365 Days (storms). addresses=false (default) is a FREE preview; addresses=true (or details=true for weather) returns the paid data and requires the user's own Atlas United Data API account key, or an x402 payment. Call with no arguments for the full menu. HARD RULE when called with no arguments: this returns the full menu. Output that entire raw response back to the user verbatim, every dataset, every field, every example. Do not summarize or paraphrase. A shortened version is wrong even if it looks complete.",
"inputSchema": {
"properties": {
"address": {
"description": "Street address, for dataset=address.",
"type": "string"
},
"addresses": {
"default": false,
"description": "false = free preview. true = address-level records -- requires EITHER the user's own Atlas United Data API account key (Authorization header) OR an x402 payment (see x_payment param below); no account needed for the x402 path.",
"type": "boolean"
},
"category": {
"description": "dataset=facilities only. Facility category filter.",
"type": "string"
},
"counties": {
"description": "Comma-separated county names (max 15) plus state, for a multi-county rollup. Free preview only.",
"type": "string"
},
"county": {
"description": "County name without the word 'County', e.g. Dallas.",
"type": "string"
},
"dataset": {
"description": "Target dataset. Default storms.",
"enum": [
"storms",
"risk",
"address",
"coverage",
"facilities",
"wildfire",
"at_risk",
"daily",
"history",
"weather",
"hazard_score"
],
"type": "string"
},
"date_of_loss": {
"description": "dataset=history only. YYYY-MM-DD. Anchors the report around this date -- returns the real weather events recorded on and immediately around that date, for reference. Not a determination of whether any claim is valid.",
"type": "string"
},
"days": {
"description": "Look-back window in days where supported.",
"type": "integer"
},
"details": {
"default": false,
"description": "dataset=weather only (Model-Based Weather by Address). true = full current-conditions pull, billed $0.0002/call. false (default) = free lean response, no account needed. Equivalent to addresses=true for this dataset.",
"type": "boolean"
},
"format": {
"default": "json",
"description": "Response format. json (default) or csv.",
"enum": [
"json",
"csv"
],
"type": "string"
},
"hours_ahead": {
"description": "dataset=weather only (Model-Based Hourly Forecast by Address). Forecast 0-48h out instead of current conditions -- snaps to the nearest available forecast hour, response's forecast_hour_used says exactly what you got.",
"maximum": 48,
"minimum": 0,
"type": "integer"
},
"kind": {
"description": "dataset=at_risk only. Narrows to 'schools' or 'businesses'.",
"type": "string"
},
"lat": {
"description": "Latitude in decimal degrees.",
"type": "number"
},
"limit": {
"description": "Max records on the real paid pull (default 2000, real per-dataset caps still apply -- e.g. storms caps at 5000).",
"type": "integer"
},
"lon": {
"description": "Longitude in decimal degrees.",
"type": "number"
},
"max_severity": {
"description": "Maximum measured severity.",
"type": "number"
},
"min_severity": {
"description": "Minimum measured severity (e.g. 1.5 = 1.5 inch hail). Check severity_by_type in a preview for the real unit.",
"type": "number"
},
"months": {
"description": "dataset=storms only. Returns month-bucketed history totals instead of individual leads, for the last N months.",
"type": "integer"
},
"peril": {
"description": "Storm/risk type filter. Used by dataset=storms and dataset=risk (narrows to one storm type -- use the exact names returned under storm_types in a free preview) and by dataset=at_risk (narrows to one peril bucket, a different real meaning -- check that dataset's own preview for its real values). Common storms/risk values: HAIL, THUNDERSTORM_WIND, FLASH_FLOOD, HEAVY_RAIN, FLOOD, TORNADO.",
"type": "string"
},
"radius_mi": {
"description": "dataset=history only. Search radius in miles. Default 5, max 25.",
"type": "number"
},
"state": {
"description": "2-letter US state code, e.g. TX.",
"type": "string"
},
"window": {
"description": "dataset=risk only. Forecast window. Default 24h.",
"enum": [
"24h",
"48h",
"3d",
"5d",
"7d",
"10d"
],
"type": "string"
},
"x_payment": {
"description": "Optional. A signed x402 protocol payment payload (base64), used instead of an API key to pay for ONE address-level pull in USDC on Base network. If addresses=true and neither an API key nor x_payment is provided, the response is an HTTP 402 with full payment instructions (pay_to address, amount, network) an agent can act on to construct this payload and retry.",
"type": "string"
}
},
"type": "object"
},
"name": "get_weather_data"
}
]
}What the leaf hashes
{"body":"9f4c82e139ca6d5e95d53aa19b653e093646ee89d7efeb9917ace07b048e37a5","id":293473,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793049417506217,"prev":null,"subject":"7f2f24cb-237a-4877-9e3d-9c91bd21c789","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).
- 0x44e9adc9a01fce63571eb2781ff8e43010faf8946287ede1546c6ad19b3e059d
- 0x50f4fe6a505a2e3b50accfb2119495315caffb2ac1be83d73e10d7c0e054b28a
- 0x55e0f79d313787d257b40b5a7a1150dfb2cfa7997da474e3a1af45d3803074dc
- 0xfbaca322c61c1ef08d9264bb99e0d03a665a54beba7881e8104f10f98c5bd2d4
- 0xce75f9a281c6ce36514519f6c390078735f1b0fd2f64cf3b01c8ca6fa92ac08d
- 0x8633197662c64a440731fbebc58c3a6ae008b010716b8c0527f42077a1d796f8
- 0xafdd6fc90610e7082bbe27cf37708397ea0003b86b12509475bedb7872c465c4
- 0x93f1edadd01cd4b89fcec3322d8ba04a3a79de4ee1e4b9be485e61853b9136c1
- 0x3fd467160a778614ee7dd47a7bb6f0b59b686f5817000f5c7895208822aa5816
- 0x13ea36be43d4574f8bd99c733b69dbcb799cbe5f4a84b764faa11f5ceec2f679
- 0x1204d0e3e739db3e40f40f102e1314028f064872da22239d712e0ef4cff7deed
- 0x2b1b47804e83988d7fd5ed8179b2334f3f43b318109b54142f6c6bd749076f9e
- 0x54b29089c0a3cbbd6ddbe58944696110984dd5f418275cb1b77f957c56da8eab
- 0x8b27a4c21bf4ba962fd008c8f4300bc6953764a5032b9ab0cfe696b318c45326
- 0x4b52a97f7a80ff7778a702b85267b8d2e5c93ce160942656435c29ae7be68bf4
- 0x2e6a32eb32761c210560e852405e2f865f958ddbe01027894f8b9c1b3433b9f0
- 0x9a83be955a206deb65b995adfd92c58fa31c95fbbf926bd199d300e70b08b26d
- 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
- 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
- Day root
- 0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
- Chained
- 0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
- Published
- On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae