Tell your AI agent if the ground is sinking: measured ground-motion with SibFly + LangChain SibFly packages NASA's OPERA Sentinel-1 InSAR satellite data into a single API call that returns measured ground motion for any US address, in mm/year. A LangChain agent can query the service in about 30 lines of code, with free dry runs and a pay-per-reading model that only charges for valid, high-confidence results. The tool is also available as an MCP server for any MCP client. Most "is this property risky?" data your agent can reach is modeled — a prediction from soil maps and flood zones. There's a different, underused signal: measured ground motion. Satellites have been tracking how far the ground has physically moved, to the millimeter, for years. SibFly https://sibfly.com packages that into one call: give it a US address, get back how fast the ground is sinking or rising, in mm/year, derived from NASA's OPERA Sentinel-1 InSAR dataset. Measured, not modeled. Negative = sinking. This post wires it into a LangChain agent in about 30 lines. Ground subsidence sinking quietly wrecks foundations, and it's invisible on a normal map. It shows up in radar interferometry InSAR : compare two satellite passes over the same spot and you can measure sub-centimeter vertical change. NASA processes this for all of North America and publishes it for free — but the raw data is 400 MB HDF5 granules in radar geometry, not something an agent can query per address. SibFly does the ETL and serves the pixel: GET /api/v1/motion?address=... → a JSON verdict. pip install -U langchain-sibfly export SIBFLY API KEY="sf live ..." Grab a key with free starter credits at sibfly.com https://sibfly.com . Agents can also self-register with no human in the loop: curl -X POST https://sibfly.com/api/v1/autonomous/register \ -H "Content-Type: application/json" -d '{"email":"you@example.com"}' - { "api key": "sf live ...", "credits usd": 1.0, ... } python from langchain sibfly import SibflyGroundMotion motion = SibflyGroundMotion reads SIBFLY API KEY print motion.invoke {"address": "1100 Congress Ave, Austin, TX"} { "status": "ok", "velocity vertical mm yr": -6.0, "velocity uncertainty mm yr": 1.5, "assessment code": "notable subsidence", "confidence": 0.86, "data age days": 73, "cost usd": 0.4, "credits remaining usd": 0.6, } Route your logic on assessment code — a stable enum rapid subsidence , notable subsidence , stable , mild uplift , strong uplift — not on the human-readable string. The thing I appreciate as someone who builds agents: misses are free. Out-of-coverage, no-data, too-stale, and low-confidence responses all come back HTTP 200 with cost usd: 0 . You only pay $0.40 when you get a real covered reading. And there's a free preview: free: coverage + confidence + would cost usd, no charge motion.invoke {"lat": 30.3244, "lon": -97.8102, "dry run": True} You can also refuse to pay for data you'd reject, server-side: php motion.invoke { "address": "...", "max age days": 400, too old - free "stale data" "min confidence": 0.7, too noisy - free "low confidence" } python from langchain sibfly import SibflyGroundMotion from langchain anthropic import ChatAnthropic from langgraph.prebuilt import create react agent agent = create react agent ChatAnthropic model="claude-sonnet-5" , tools= SibflyGroundMotion , out = agent.invoke {"messages": "user", "Is the ground sinking under 1100 Congress Ave, Austin TX? " "Check coverage first so we don't waste a call." } print out "messages" -1 .content The agent will typically dry run first free , see it's covered, then pull the real reading. SibFly also runs a hosted MCP server, so any MCP client can use it with no SDK: https://sibfly.com/mcp Streamable HTTP, Bearer auth It's in the official MCP registry as com.sibfly/ground-motion . Tools: check ground motion , check coverage , check portfolio , get motion history , get account . This is a screening signal, not an engineering survey. It tells you a parcel is moving and roughly how fast; it doesn't replace a geotechnical report. SibFly returns an uncertainty ±mm/yr , a confidence score, and a neighbor consistent flag so your agent can tell a real trend from a single noisy pixel. Treat it like a credit-score check: fast, cheap, directional. llama-index-tools-sibfly