Measured ground motion per US address (NASA InSAR). Self-register, $0.40/report, misses free.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
FREE follow-up Q&A with the SibFly Inspector about a report you ALREADY BOUGHT (buy via check_ground_motion first). Ask what the numbers mean for foundations, staleness, seasonal swings, etc. It answers only from the report's numbers (never invents), and won't give buy/walk-away advice. Per-account message allowance applies.
the address of a report already purchased on this account
your question about the report
FREE follow-up Q&A with the SibFly Inspector about a report you ALREADY BOUGHT (buy via check_ground_motion first). Ask what the numbers mean for foundations, staleness, seasonal swings, etc. It answers only from the report's numbers (never invents), and won't give buy/walk-away advice. Per-account message allowance applies.
| Argument | Type | Description |
|---|---|---|
| address* | string | the address of a report already purchased on this account |
| question* | string | your question about the report |
{
"type": "object",
"required": [
"question",
"address"
],
"properties": {
"address": {
"type": "string",
"description": "the address of a report already purchased on this account"
},
"question": {
"type": "string",
"description": "your question about the report"
}
}
}Get a machine-usable payment link to top up credits (requires your Bearer API key). method 'stripe' returns a card checkout_url; 'crypto' returns a BTC invoice_url + txn_id. Open/relay the URL to complete payment; credits land automatically afterwards — confirm with get_account.
| Argument | Type | Description |
|---|---|---|
| method | string | default stripe (card) |
| amount_usd* | number | 1 to 10000 (USD) |
{
"type": "object",
"required": [
"amount_usd"
],
"properties": {
"method": {
"enum": [
"stripe",
"crypto"
],
"type": "string",
"description": "default stripe (card)"
},
"amount_usd": {
"type": "number",
"description": "1 to 10000 (USD)"
}
}
}Measured ground motion (sinking/uplift) for a US address or lat/lon, in mm/year AND in/year, from NASA OPERA Sentinel-1 InSAR. Costs $0.40 from your SibFly credits; out-of-coverage / too-stale / too-low-confidence / fuzzy-geocode return FREE. Use the gate params to avoid paying for data you'd reject. dry_run=true is a FREE coverage+cost preview.
| Argument | Type | Description |
|---|---|---|
| lat | number | |
| lon | number | |
| since | string | YYYY-MM-DD; if no new data since this date, return free |
| address | string | US street address |
| compact | boolean | lean payload (fewer tokens) |
| dry_run | boolean | FREE preview: coverage + would_cost + data age, no rate, no charge |
| explain | boolean | add ground_brief: ~600 tokens of plain-English narration + FAQ (engine GL52 free tier / CL46 paying). Adds ~10s latency. Only set when a human will read the output; use ask_inspector for follow-up Q&A. |
| max_age_days | integer | if data older than this, return free instead of billing |
Batch ground-motion for many US addresses in one call. Only covered addresses are billed ($0.40 each); misses and duplicate cells are free. If credits run out mid-batch the response status is 'insufficient_credits' and unbilled items are marked — top up (buy_credits) and retry them.
| Argument | Type | Description |
|---|---|---|
| addresses* | array | up to 1000 US addresses (must be an ARRAY, not one string) |
| max_spend_usd | number | hard budget cap: billing stops at this total; over-budget items come back skipped_for_budget |
{
"type": "object",
"required": [
"addresses"
],
"properties": {
"addresses": {
"type": "array",
"items": {
"type": "string"
},
"description": "up to 1000 US addresses (must be an ARRAY, not one string)"
},
"max_spend_usd": {
"type": "number",
"description": "hard budget cap: billing stops at this total; over-budget items come back skipped_for_budget"
}
}
}FREE: your SibFly credit balance, price per report, reports remaining, and top-up URL.
No arguments.
{
"type": "object",
"properties": {}
}FREE pre-flight: is a US address/point covered, how stale is the data (data_age_days), and what a report would cost. Accepts ONE address/lat+lon, OR addresses[] (up to 1000, needs your Bearer key) to size a whole job before spending. Call this before spending.
| Argument | Type | Description |
|---|---|---|
| lat | number | |
| lon | number | |
| address | string | |
| addresses | array | batch mode: size a whole job in one free call |
{
"type": "object",
"properties": {
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"address": {
"type": "string"
},
"addresses": {
"type": "array",
"items": {
"type": "string"
},
"description": "batch mode: size a whole job in one free call"
}
}
}Multi-year cumulative motion history for an address. Pass from_date and to_date (YYYY-MM-DD) to get the movement between two dates. Costs $0.40 (misses free). dry_run=true is a FREE preview (points + dates + cost, no data); max_age_days returns free instead of billing for stale data.
| Argument | Type | Description |
|---|---|---|
| lat | number | |
| lon | number | |
| address | string | |
| dry_run | boolean | FREE preview: coverage + n_points + would_cost, no series, no charge |
| to_date | string | |
| from_date | string | |
| max_age_days | integer | if data older than this, return free instead of billing |
{
"type": "object",
"properties": {
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"address": {
"type": "string"
},
"dry_run": {
"type": "boolean",
"description": "FREE preview: coverage + n_points + would_cost, no series, no charge"
},
"to_date": {
"type": "string"
},
"from_date": {
"type": "string"
},
"max_age_days": {
"type": "integer",
"description": "if data older than this, return free instead of billing"
}
}
}FREE: your recent billed calls (line-item ledger with request_id, endpoint, address, cost) so you can reconcile spend against reports.
| Argument | Type | Description |
|---|---|---|
| limit | integer | max rows, default 100, max 1000 |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "max rows, default 100, max 1000"
}
}
}FREE: create a new SibFly account and get an API key + free starter credits in ONE call — no human, no captcha, no card. Use this when you have no API key. SAVE the returned api_key and pass it as the Bearer token on later calls (MCP clients: set it as the Authorization header).
| Argument | Type | Description |
|---|---|---|
| email* | string | a durable email address (disposable domains rejected) |
| password | string | optional; auto-generated and returned if omitted |
{
"type": "object",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"description": "a durable email address (disposable domains rejected)"
},
"password": {
"type": "string",
"description": "optional; auto-generated and returned if omitted"
}
}
}| min_confidence | number | 0-1; below this, return free instead of billing |
| require_significant | boolean | if the rate would be no_clear_trend (within its error bar), return FREE instead of billing — never pay for statistical noise |
{
"type": "object",
"properties": {
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"since": {
"type": "string",
"description": "YYYY-MM-DD; if no new data since this date, return free"
},
"address": {
"type": "string",
"description": "US street address"
},
"compact": {
"type": "boolean",
"description": "lean payload (fewer tokens)"
},
"dry_run": {
"type": "boolean",
"description": "FREE preview: coverage + would_cost + data age, no rate, no charge"
},
"explain": {
"type": "boolean",
"description": "add ground_brief: ~600 tokens of plain-English narration + FAQ (engine GL52 free tier / CL46 paying). Adds ~10s latency. Only set when a human will read the output; use ask_inspector for follow-up Q&A."
},
"max_age_days": {
"type": "integer",
"description": "if data older than this, return free instead of billing"
},
"min_confidence": {
"type": "number",
"description": "0-1; below this, return free instead of billing"
},
"require_significant": {
"type": "boolean",
"description": "if the rate would be no_clear_trend (within its error bar), return FREE instead of billing — never pay for statistical noise"
}
}
}