← AtlasAdapt API documentation
AtlasAdapt MCP server
Use AtlasAdapt from an AI assistant. It can look up the hazards at an address, recommend a resilience plan, price each upgrade, and find the public funding that applies, through the Model Context Protocol (MCP). It uses the same engine as the AtlasAdapt product and the REST API.
1. Connect
| Endpoint | https://mcp.atlasadapt.com/mcpUntil that name is live, use https://atlasadapt.com/apigw/v1/mcp. It is the same server. |
|---|---|
| Transport | Streamable HTTP. Every request is a POST and gets a single JSON reply. The server is stateless and keeps no sessions. |
| Authentication | Your AtlasAdapt API key, sent as Authorization: Bearer aa_live_… (request one). Without a key you can list the tools, but not call them. The key needs the
mcp grant, plus the grant for each tool you want (see Tools). |
| Protocol versions | 2025-03-26, 2025-06-18, 2025-11-25 and 2026-07-28. |
| Access | Read-only. No tool changes anything. |
Claude Code
claude mcp add --transport http atlasadapt https://mcp.atlasadapt.com/mcp \
--header "Authorization: Bearer aa_live_YOUR_KEY"
Other clients that accept a URL and headers (Cursor, agent frameworks, your own code)
{
"mcpServers": {
"atlasadapt": {
"url": "https://mcp.atlasadapt.com/mcp",
"headers": { "Authorization": "Bearer aa_live_YOUR_KEY" }
}
}
}
Check the connection
Ask your assistant to run my_usage. It reports what your key can do and how many requests you have left
this month. To check without an assistant:
curl -s https://mcp.atlasadapt.com/mcp \
-H "Authorization: Bearer aa_live_YOUR_KEY" -H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
2. Tools
A tool shows up only when your key holds its grant. Each tool runs one REST API call and returns that call's response
unchanged in structuredContent. The text reply starts with a short summary that leads with anything that must
not be lost (amounts that are not counted, conditions), followed by the full response as JSON.
| Tool | You send | You get back | Grant |
|---|---|---|---|
resolve_address | address, country | Coordinates, state, county (and US FIPS code), postcode, FEMA flood zone, and how precise the match is | geo.resolve |
assess_risk | address, country (US, UK, DE, FR or CH) | Each hazard at the address, with its rating and the public source it came from | risk.address |
list_upgrades | country, segment (both optional) | The upgrade ids we price there | upgrades.catalogue |
estimate_plan | country, segment, address, building, horizon_years; upgrades if you want specific ones | The recommended plan (commercial, when upgrades is left out) or the plan you named; the cost of each upgrade; the yearly loss for each hazard without and with the plan; incentives counted; net upfront cost; annual benefit; payback; net over the horizon | estimate.roi |
find_incentives | The same building, plus upgrades | Grants, tax credits, rebates and loans in three groups (available, contingent, non_cash), each with its reference, funding state, stated conditions, who can apply and its source | estimate.incentives |
get_incentive | ref, e.g. US12c or FR33 | The full record for one programme | incentives.get |
compare_plans | The same building, plus 2 to 5 options, each a list of upgrades with an optional label | The options side by side: cost, incentives counted, net upfront, annual benefit, yearly loss avoided, payback, net over the horizon. Commercial buildings also get our recommended plan as an extra option. Each option is billed as one estimate | estimate.roi |
estimate_portfolio | sites (up to 500), defaults | A job id, returned at once. Each site is billed as one request | estimate.portfolio |
get_portfolio_job | job_id | The job's status and, once done, the results for each site. Polling is free | estimate.portfolio |
supply_chain_exposure | A manufacturing or warehouse site, its site_annual_revenue and the customer dependency | How long one event stops the site and its customer, and what that costs the customer. This is one event, not a yearly figure, and is never added to anything | estimate.supplychain |
my_usage | nothing | Your grants, countries and the requests left this month | none |
The fields in building and every response field are the REST API's own. See
POST /v1/estimate/roi and POST /v1/estimate/incentives.
Example prompts
- "What are the climate hazards at 1500 NW 7th St, Miami, FL, and what would you recommend for a 112,871 sq ft office there? Show payback and the funding."
- "Compare flood barrier only with flood barrier plus roof for that building." (
compare_plans) - "What is US12c and what conditions does it have?"
Prompt
site_resilience_brief (arguments: address, and optionally country, building_type and floor_area) asks the assistant for a brief in the same order as the AtlasAdapt report: hazards with their sources, the recommended plan and its payback, then the funding, keeping counted and not-counted amounts apart.
3. Showing our numbers correctly
The same funding rules apply as in the REST API (see the funding contract in the API documentation). The tool descriptions repeat them so the assistant sees them every time:
- Never add an incentive whose
counts_toward_roiisfalse(funding paused, waitlisted or closed), or acontingentorcompetitiveamount, to any total. Show it, but don't count it. - Show every stated condition next to its incentive. The amount assumes the conditions are met.
- Name incentives by their reference (US12c), which is what a person can look up.
- Say what the figures were priced on. With an address, it is that building's own hazards; without one, it is
country averages.
meta.priced_onsays which. - Yearly losses are the owner's share, after the deductible and what the insurer pays.
- All amounts are guidance and should be confirmed with the grantor before applying.
The resource atlasadapt://contract/funding holds the full funding-rules table, and
atlasadapt://incentive/{ref} reads one incentive.
4. Getting a key
5. Requests and limits
Each tool call is billed as the REST call behind it, usually one request against your allowance (monthly, or for a trial, the whole term). Connecting, listing the tools and reading the funding rules are free. Per-minute limits, country restrictions and IP restrictions on your key apply as they do for the REST API.
6. Errors
When a tool is refused, for example because of a missing grant, an unknown building type, a country we don't cover or
an exhausted quota, you get isError: true and a sentence naming the cause and the parameter or grant involved.
A protocol error, such as an unknown method, a malformed message or an unsupported version, comes back as a standard
JSON-RPC error. A request sent from a web page (with an Origin header) is refused unless your key lists that
origin.