DEV Community

james-sib
james-sib

Posted on

Give any MCP agent ground-truth: measured ground motion for US addresses with SibFly

If your agent speaks MCP, you can give it satellite-measured ground motion for any US address without writing an SDK wrapper. SibFly runs a hosted MCP server, and it's listed in the official MCP registry as com.sibfly/ground-motion.

"Ground motion" here means the real thing: how far the ground has physically moved — sinking or rising, in mm/year — measured from NASA's OPERA Sentinel-1 InSAR dataset. Negative = subsiding. Measured, not modeled.

Connect

The server is Streamable HTTP with Bearer auth:

https://sibfly.com/mcp
Enter fullscreen mode Exit fullscreen mode

Get a key (free starter credits) at sibfly.com, or let the agent self-register:

curl -X POST https://sibfly.com/api/v1/autonomous/register \
  -H "Content-Type: application/json" -d '{"email":"you@example.com"}'
Enter fullscreen mode Exit fullscreen mode

In a Claude Desktop / Claude Code style config:

{
  "mcpServers": {
    "sibfly": {
      "type": "http",
      "url": "https://sibfly.com/mcp",
      "headers": { "Authorization": "Bearer sf_live_..." }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

The tools

The initialize response ships a decision tree, and there are five tools:

  • check_ground_motion — the measured reading for an address/point ($0.40 if covered; free if not)
  • check_coverage — free: is a point covered, how stale, and what would it cost
  • check_portfolio — many addresses at once
  • get_motion_history — cumulative motion between two dates
  • get_account — credit balance

The pattern that keeps it cheap

Misses are free — out-of-coverage, no-data, too-stale, and low-confidence all come back at cost_usd: 0. So the agent-friendly flow is: preflight free, then buy.

> check_coverage for "200 N Spring St, Los Angeles, CA"
  covered: true, data ~304 days old, would_cost_usd: 0.40

> check_ground_motion for "200 N Spring St, Los Angeles, CA"
  velocity_vertical_mm_yr: -1.7  (±3.5)
  assessment_code: "stable"
  confidence: 1.0
  cost_usd: 0.40
Enter fullscreen mode Exit fullscreen mode

You can also make the paid call refuse to pay for data you'd reject, with dry_run, max_age_days, and min_confidence — each returns free instead of billing when the bar isn't met.

Route your logic on assessment_code (rapid_subsidence, notable_subsidence, stable, mild_uplift, strong_uplift), not the human-readable string.

Why an agent wants this

Ground subsidence is invisible on a normal map and quietly destroys foundations. For any workflow that reasons about a physical US address — property diligence, insurance triage, infrastructure siting, site selection — a fast, cheap, measured motion check is a useful ground-truth signal your model can't get from its training data. It's a screening tool, not a geotechnical survey, and the API is honest about that: every reading carries an uncertainty, a confidence, and a neighbor_consistent flag so a single noisy pixel doesn't read as "your building is collapsing."

Not on MCP?

There are native packages too:

  • Python / LangChain: pip install langchain-sibfly
  • LlamaIndex: pip install llama-index-tools-sibfly
  • n8n: community node n8n-nodes-sibfly
  • Anything else: plain REST at https://sibfly.com/api/v1/motion (OpenAPI at /openapi.json, machine schema at /api/v1/schema, agent docs at /llms.txt).

Top comments (0)