Developer & Agent Documentation

Agent-Access 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.

Four interfaces, one engine

Human UI

/audit

The guided 10-step audit wizard homeowners use to review a proposal. Runs the same canonical decision engine as every programmatic interface.

Browser WebMCP

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.

REST API

POST /api/v1/analyze-solar-quote

A stateless JSON endpoint returning the full structured analysis. CORS is open (*) for agent access. Documented by /openapi.json.

Remote MCP

POST /api/mcp

Model Context Protocol over JSON-RPC 2.0 (initialize, tools/list, tools/call). The legacy /api/webmcp endpoint remains available and identical.

REST API

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"
  }'

Remote MCP (JSON-RPC 2.0)

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 }
    }
  }'

Browser WebMCP

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()) }] };
  }
});

Discovery & manifests