Developer & Agent Documentation
The Solar Quote Audit exposes one canonical decision engine through four interfaces — a human wizard, a page-level Browser WebMCP tool, a public REST API, and a Remote MCP server. Every interface returns identical, illustrative second-opinion results.
Safety: Every output is illustrative, educational decision-support only — not legal, tax, financial, engineering, or contracting advice. It provides illustrative estimates only, makes no financial guarantee, does not guarantee savings or system performance, does not endorse any installer, and takes no consequential action.
/auditThe guided 10-step audit wizard homeowners use to review a proposal. Runs the same canonical decision engine as every programmatic interface.
document.modelContext.registerTool()A page-level tool registered in the browser on every page, with a REST fallback. On-page AI agents can call analyze_solar_quote directly.
POST /api/v1/analyze-solar-quoteA stateless JSON endpoint returning the full structured analysis. CORS is open (*) for agent access. Documented by /openapi.json.
POST /api/mcpModel Context Protocol over JSON-RPC 2.0 (initialize, tools/list, tools/call). The legacy /api/webmcp endpoint remains available and identical.
POST proposal fields (all optional) and receive the full structured analysis. Open CORS for agent access.
curl -X POST https://solarquoteanalyzer.com/api/v1/analyze-solar-quote \
-H "Content-Type: application/json" \
-d '{
"cashPrice": 32000,
"systemSizeKw": 8.4,
"panelModel": "REC Alpha Pure 410W",
"financeType": "loan",
"apr": 3.99,
"batteryIncluded": true,
"batteryModel": "Tesla Powerwall 3",
"licenseNumber": "1084321"
}'Standard MCP methods: initialize, tools/list, tools/call.
curl -X POST https://solarquoteanalyzer.com/api/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "analyze_solar_quote",
"arguments": { "cashPrice": 32000, "systemSizeKw": 8.4 }
}
}'Registered page-level via document.modelContext.registerTool() with a REST fallback to the same canonical engine.
// On any page of https://solarquoteanalyzer.com, the tool is registered automatically:
document.modelContext.registerTool({
name: "analyze_solar_quote",
description: "Analyze a residential solar proposal...",
inputSchema: { /* proposal fields */ },
async execute(args) {
// Falls back to the public REST endpoint (same canonical engine)
const r = await fetch("/api/v1/analyze-solar-quote", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(args)
});
return { content: [{ type: "text", text: JSON.stringify(await r.json()) }] };
}
});