Two ways in
MCP
A Model Context Protocol server over streamable HTTP, stateless. Point an MCP-speaking agent at the endpoint and the earth_* tools appear.
{
"mcpServers": {
"solyzer-earth": {
"url": "https://api.solyzer.ai/mcp"
}
}
}REST
Plain HTTP for agents and code that do not speak MCP. Same data, same contract.
curl "https://api.solyzer.ai/openbb/site-intel?\
lat=-6.2088&lon=106.8456&radius=500"Read this before the numbers
The layer is honest by design. These five rules hold on every response; an agent that respects them will not be misled.
Figures carry confidence: high | low | unknown. UNKNOWN means the source could not answer, never treat it as zero. low means measured but from thin data or a reported sampling cap.
Every brief and score ships a caveats[] array. Read it before the numbers; it states assumptions and sampling limits.
Responses with health.sourcesUsable < health.sourcesQueried are served uncached and incomplete by design. Retry later for a full read.
A null score means the system refused to invent a number. Do not impute.
Per-record license fields matter: ODbL-1.0 sources are share-alike; CDLA / CC0 / public-domain are permissive. Keep them separable downstream.
The earth_* tools
Explained site score for a point: signed contributions, per-feature confidence, caveats, evidence geometry, occupancy, traffic, buildings, street reads. score:null when too little is known.
Live floods, cyclones, earthquakes, droughts, wildfires and volcanoes from GDACS (UN/EU, public domain), each with alert level and an extent bounding box (not a hazard outline).
Consequence analysis for one event: exposure, lifelines, condition, flow and observation joins, every figure with confidence, caveats first-class.
New, escalated, deescalated and resolved events, newest first, plus the change-history subsystem status.
Map churn between the two newest archived snapshots: places appeared/disappeared by id with named samples. Conflates real change with mapping activity, disclosed in-band.
The full surface
| Method | Path | Params | Returns |
|---|---|---|---|
| GET | /openbb/site-intelup to 60s cold | lat, lon, radius(100-3000m), category? | Explained, auditable site score with evidence geometry. |
| GET | /openbb/site-scan | bbox=w,s,e,n (<=0.05 deg), category? | Ranked grid cells with per-cell confidence and nearest-road distance. |
| GET | /openbb/events | - | Active GDACS events with extent bboxes, alert levels, provenance. |
| GET | /openbb/event-briefup to 60s cold | id (e.g. FL1102983) | Exposure / lifelines / condition / observation for one event. |
| GET | /openbb/event-changes | - | New / escalated / deescalated / resolved events, newest first. |
| GET | /openbb/places | bbox=w,s,e,n | Overture places (CDLA-permissive) in the box, sampled. |
| GET | /openbb/infrastructure | bbox=w,s,e,n | Communication + power structures (ODbL). Absence is unknown, not zero. |
| GET | /openbb/traffic-tiles | w,s,e,n (<=0.6 deg) | Precomputed traffic-equilibrium fingerprints per street segment. |
| GET | /openbb/place-trends | bbox=w,s,e,n (<=1 deg, ID archive) | Month-over-month map churn, appeared/disappeared by id. |
| POST | /openbb/rooftop-id | {lat, lon, ring?} | VLM read of a building's rooftop crop: {tag, description}. |
| POST | /openbb/read-storefront | {imageId, imageUrl} | VLM read of a street photo's signage: {tag, description}. |
| GET | /openbb/agent-tools | - | This machine-readable manifest: the live contract + tool list. |
The authoritative, always-current list lives at https://api.solyzer.ai/openbb/agent-tools.