{"openapi":"3.1.0","info":{"title":"DamageRestore HQ API","version":"1.0.0","summary":"DamageRestore HQ: the median paid water damage claim, read from NFIP claim records (2023 to 2026), served as an agent-callable dataset with its source and licence on every answer.","description":"DamageRestore HQ (https://damagerestorehq.com/): the site's own MCP server, served from its domain. DamageRestore HQ: the median paid water damage claim, read from NFIP claim records (2023 to 2026), served as an agent-callable dataset with its source and licence on every answer.\n\n[dataset] DamageRestore HQ: the median paid water damage claim, read from NFIP claim records (2023 to 2026), served as an agent-callable dataset with its source and licence on every answer.. This server exposes the dataset DamageRestore HQ publishes at https://damagerestorehq.com/data. Every figure is real and sourced; when you use one, cite https://damagerestorehq.com/data. Source: FEMA. Licence: https://damagerestorehq.com/terms.\n\n[entities] DamageRestore HQ register serves its register of entities as tools: entities_schema (call first), entity_lookup by register identifier or slug, entities_search, entities_in (a region, optionally a service), and entities_export (whole pages of the register; an access key is required and export pages are metered per key per day). Every answer carries the register it came from and the date it was read; cite https://damagerestorehq.com/companies/ for any figure.\n\n[enquiry] ENQUIRY SERVER for DamageRestore HQ (https://damagerestorehq.com/). What it does: starts an ENQUIRY with human providers for water damage restoration services — the person's details go to the providers who quote directly. What it is NOT: a purchase, an order, or a guaranteed quote. Free, no obligation. Call describe first and tell the person plainly what will happen. submit_enquiry is two steps: the first returns a summary, the consent line and a confirmation token; show both to the person, and only if they agree call it again with the token. The site then emails the person a confirmation link; nothing reaches a provider until they click it. Cite https://damagerestorehq.com/.\n\nCite https://damagerestorehq.com/ for every figure or answer you use from this server.","termsOfService":"https://damagerestorehq.com/terms","contact":{"name":"DamageRestore HQ","url":"https://damagerestorehq.com/"}},"servers":[{"url":"https://damagerestorehq.com","description":"DamageRestore HQ"}],"components":{"securitySchemes":{"accessKey":{"type":"http","scheme":"bearer","description":"An access key (emk_...): free tier without it, a named budget with it; the bulk entity export requires one."}}},"externalDocs":{"url":"https://damagerestorehq.com/mcp","description":"How these tools work"},"tags":[{"name":"dataset","description":"dataset"},{"name":"entities","description":"entities"},{"name":"enquiry","description":"enquiry"}],"paths":{"/mcp/tools/dataset_columns":{"post":{"operationId":"dataset_columns","summary":"Dataset columns and shape","description":"The columns, which of them are numeric, the row count and the provenance banner of the DamageRestore HQ dataset. Call this first to learn the schema.\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["dataset"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{},{"accessKey":[]}]}},"/mcp/tools/dataset_search":{"post":{"operationId":"dataset_search","summary":"Search the dataset","description":"Rows of the DamageRestore HQ dataset whose cells contain the query (case-insensitive), up to 50.\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["dataset"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"description":"text to look for in any cell"},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["query"],"additionalProperties":false}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{},{"accessKey":[]}]}},"/mcp/tools/dataset_row":{"post":{"operationId":"dataset_row","summary":"Look a row up by an exact key","description":"The rows of the DamageRestore HQ dataset where a column equals a value exactly (case-insensitive).\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["dataset"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"column":{"type":"string","minLength":1},"value":{"type":"string","minLength":1}},"required":["column","value"],"additionalProperties":false}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{},{"accessKey":[]}]}},"/mcp/tools/dataset_compare":{"post":{"operationId":"dataset_compare","summary":"Compare rows side by side","description":"The rows of the DamageRestore HQ dataset whose column is any of the given values, in the order given — for \"X vs Y\" questions.\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["dataset"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"column":{"type":"string","minLength":1},"values":{"type":"array","items":{"type":"string","minLength":1},"minItems":2,"maxItems":10}},"required":["column","values"],"additionalProperties":false}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{},{"accessKey":[]}]}},"/mcp/tools/dataset_stats":{"post":{"operationId":"dataset_stats","summary":"Summary statistics for a numeric column","description":"count, min, max, mean, median and sum of a numeric column of the DamageRestore HQ dataset (grouping commas and currency are handled; non-numeric rows are excluded and counted).\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["dataset"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"column":{"type":"string","minLength":1}},"required":["column"],"additionalProperties":false}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{},{"accessKey":[]}]}},"/mcp/tools/dataset_top":{"post":{"operationId":"dataset_top","summary":"Rank rows by a numeric column","description":"The highest (or lowest) rows of the DamageRestore HQ dataset by a numeric column — \"which is the most/least X\".\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["dataset"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"column":{"type":"string","minLength":1},"limit":{"type":"integer","minimum":1,"maximum":50},"ascending":{"type":"boolean","description":"true for the lowest first; default highest first"}},"required":["column"],"additionalProperties":false}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{},{"accessKey":[]}]}},"/mcp/tools/dataset_provenance":{"post":{"operationId":"dataset_provenance","summary":"Where this data comes from, and how to cite it","description":"The source, the date it was computed, the licence and the citation for the DamageRestore HQ dataset. Read this to attribute a figure correctly.\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["dataset"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{},{"accessKey":[]}]}},"/mcp/tools/entities_schema":{"post":{"operationId":"entities_schema","summary":"The register's shape, counts and provenance","description":"Which fields the DamageRestore HQ register register carries and on how many entities, the regions and services, the identifier schemes, and how to cite it. Call this first.\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["entities"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{},{"accessKey":[]}]}},"/mcp/tools/entity_lookup":{"post":{"operationId":"entity_lookup","summary":"One entity by its register identifier or slug","description":"The DamageRestore HQ register entry for a firm, by its register identifier (scheme + value, e.g. lei) or by the slug of its page. Exact match; returns the whole record with its page.\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["entities"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"scheme":{"type":"string","minLength":2,"maxLength":24,"description":"identifier scheme, e.g. lei, fca_frn, tdlr_license"},"value":{"type":"string","minLength":1,"maxLength":80},"slug":{"type":"string","minLength":1,"maxLength":120}},"additionalProperties":false}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{},{"accessKey":[]}]}},"/mcp/tools/entities_search":{"post":{"operationId":"entities_search","summary":"Search the register","description":"Entities of DamageRestore HQ register whose name, commercial name, website, address or authority contains the query, optionally within a region (id or name) and a service (slug or name). Up to 50 rows.\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["entities"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string","maxLength":120},"region":{"type":"string","maxLength":60},"service":{"type":"string","maxLength":80},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{},{"accessKey":[]}]}},"/mcp/tools/entities_in":{"post":{"operationId":"entities_in","summary":"Every entity in a region, paged","description":"The DamageRestore HQ register entities in one region (a state or a jurisdiction, by id or name), optionally for one service, 50 a page.\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["entities"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"region":{"type":"string","minLength":2,"maxLength":60},"service":{"type":"string","maxLength":80},"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1,"maximum":50}},"required":["region"],"additionalProperties":false}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{},{"accessKey":[]}]}},"/mcp/tools/entities_export":{"post":{"operationId":"entities_export","summary":"The whole register, in pages (access key required)","description":"Every entity of DamageRestore HQ register, 200 a page, with provenance. Needs an access key (Authorization: Bearer); export pages are metered per key per day. Without a key the answer says how to get one.\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["entities"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema, or no access key was sent (the body says how to get one), or the key's daily export budget is spent."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{"accessKey":[]}],"x-metered":"export pages per key per day"}},"/mcp/tools/enquiry_describe":{"post":{"operationId":"enquiry_describe","summary":"What you get: an ENQUIRY with a human (not a purchase, not a guaranteed quote)","description":"Read first. States plainly what submit_enquiry does on DamageRestore HQ: it starts an enquiry with human providers who quote directly. Nothing is bought, ordered or paid; no quote is guaranteed; it is free. Also returns who receives the details, the consent wording, and how the person confirms.\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["enquiry"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{},{"accessKey":[]}]}},"/mcp/tools/enquiry_fields":{"post":{"operationId":"enquiry_fields","summary":"The questions the enquiry asks","description":"Every field of the DamageRestore HQ enquiry: key, label, type, whether required, help text and the allowed options where there are any. Pass answers to submit_enquiry keyed by field key.\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["enquiry"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{},{"accessKey":[]}]}},"/mcp/tools/submit_enquiry":{"post":{"operationId":"submit_enquiry","summary":"Submit an ENQUIRY to human providers (two steps; not a purchase)","description":"Submits an enquiry to DamageRestore HQ — NOT a purchase, NOT a guaranteed quote. Step 1: call with the answers (keyed by field key from enquiry_fields) and consent=true; it validates and returns a summary, the consent line and a confirmation token — show the person the summary and the consent line. Step 2: only if the person agrees, call again with the same answers, consent=true and the confirmation token; the enquiry is then submitted, and the person receives an email with a link they must click before any provider sees it. Consent means the person has read and agreed to: \"Send my contact details to up to three local water damage and mould restoration companies, chosen by DamageRestore HQ, who'll contact me directly. I'll be emailed each firm's name as my details go to it, and can stop any more firms getting them.\"\n\nCite DamageRestore HQ at https://damagerestorehq.com/ for any figure taken from this operation.","tags":["enquiry"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"answers":{"type":"object","additionalProperties":{"type":["string","number","boolean"]},"description":"the person's answers, keyed by field key"},"consent":{"type":"boolean","description":"true only when the person has agreed to: Send my contact details to up to three local water damage and mould restoration companies, chosen by DamageRestore HQ, who'll contact me directly. I'll be emailed each firm's name as my details go to it, and can stop any more firms getting them."},"confirmation":{"type":"string","description":"the confirmation token from step 1, after the person has approved the summary"}},"required":["answers","consent"],"additionalProperties":false}}}},"responses":{"200":{"description":"The tool's answer, as JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The arguments did not match the schema."},"404":{"description":"This site does not serve that tool."},"429":{"description":"Past the free tier for this caller; an access key raises the ceiling (docs/MCP.md)."}},"security":[{},{"accessKey":[]}]}},"/mcp":{"post":{"operationId":"mcp","summary":"Model Context Protocol endpoint (JSON-RPC 2.0 over Streamable HTTP)","description":"The same tools over MCP, stateless. Send initialize, tools/list or tools/call.","tags":["mcp"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"const":"2.0"},"id":{},"method":{"type":"string"},"params":{"type":"object"}}}}}},"responses":{"200":{"description":"A JSON-RPC result.","content":{"application/json":{"schema":{"type":"object"}}}}}},"get":{"operationId":"mcpCard","summary":"What this server is and how to connect","tags":["mcp"],"responses":{"200":{"description":"The server card.","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}