Connect an AI assistant
Add a custom connector (sometimes called a custom MCP server or app) in your assistant and give it this address. No key is needed for the public tools.
https://broker.insure/api/mcp
Then ask in plain words, for example “find insurance options for a home with polybutylene plumbing in Calgary” or, as a real-estate agent, “prepare a referral for my client’s closing on November 28”. Submitting a client referral always runs a permission step: the assistant shows the exact wording, and the client confirms and consents themselves through a one-time link.
Broker API keys and scopes
Create keys from the Desk. A key is shown once, stored only as a hash, and can be revoked at any time. Every action a key takes is recorded as that key on behalf of your brokerage.
| Scope | Allows |
|---|---|
| offers:read | List the offers, acceptances and questions your brokerage holds. |
| brief:read | Read the Brief for a request you hold an active assignment on. |
| offers:respond | Accept, ask a question or decline an offer. |
| quotes:write | Post or revise a quote record on a request you accepted. |
| notes:write | Add a note to the linked Desk case. |
| webhooks:manage | Flush and replay webhook deliveries. |
| keys:manage | Reserved for key administration. |
POST /api/desk/keys x-broker-token: … { "name": "AMS integration", "scopes": ["offers:read", "brief:read", "offers:respond", "quotes:write"] }
REST API v1
| Method | Path | What it does |
|---|---|---|
| GET | /api/v1/me | Your brokerage, the key’s scopes and limits. |
| GET | /api/v1/offers | Offers and assignments, with why you were chosen and the closing date. |
| GET | /api/v1/requests/{id}/brief | Needs and facts with their certainty. No contact details at this stage. |
| POST | /api/v1/assignments/{id}/respond | Body {action: accept | ask | decline, note}. Atomic, first valid accept wins. |
| POST | /api/v1/requests/{id}/notes | A note on the linked Desk case. |
| GET | /api/v1/events?since= | Polling feed of events on requests you hold. |
| POST | /api/desk/quotes | Post a quote record. Revisions supersede, never overwrite. |
Errors are JSON with an error message and a code. 401 means a missing or invalid key; 403 means the key lacks the scope.
Desk MCP for brokers’ agents
The same actions as the REST API, as MCP tools, so a brokerage’s assistant can watch its offers, pull a Brief, run the brokerage’s own rater or market process and post the terms back. Every tool result repeats the rule that matters: the agent acts under its brokerage’s licence; broker.insure never quotes, advises or binds.
{
"mcpServers": {
"broker-insure-desk": { "url": "https://broker.insure/api/mcp-desk", "headers": { "Authorization": "Bearer bi_live_…" } }
}
} Signed webhooks
Subscribe an HTTPS endpoint to any of these events. Each delivery carries a timestamp and an HMAC-SHA256 signature over the timestamp and the raw body, using the secret shown once when you subscribe. Failed deliveries retry with backoff and can be replayed.
assignment.offered · assignment.expired · assignment.accepted · assignment.declined · clarification.asked · request.updated · quote.requested · quote.received
// Node: verify a delivery import { createHmac, timingSafeEqual } from 'node:crypto'; function verify(secret, header, rawBody) { const { t, v1 } = Object.fromEntries(header.split(',').map((p) => p.split('='))); if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false; const mac = createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex'); return timingSafeEqual(Buffer.from(mac), Buffer.from(v1)); }
The quote record
A quote is a record of terms a licensed party issued, carried with its provenance. Currency is ISO 4217 and amounts are integers in minor units. Unknown stays unknown. A revision becomes a new version and the earlier one is kept as the applicant saw it. An expired quote cannot be selected, and selecting records a choice, never coverage.
{
"requestId": "BI-33B8-F9DF-D749", "assignmentId": "asg_…",
"quote": {
"issuingParty": "Example Mutual", "currency": "CAD",
"premiumMinor": 218400, "premiumPeriod": "annual",
"limits": [{ "k": "Dwelling", "v": "650,000" }],
"subjectivities": [{ "k": "Plumbing", "v": "Licensed plumber's letter within 30 days" }],
"expiresAt": "2026-11-20T23:59:00-07:00"
}
} The rules every integration inherits
- broker.insure never quotes, advises, binds or takes commission. Brokers pay a flat fee per introduction.
- An agent acts under its brokerage’s licence and key, and every action is attributed to that key.
- The applicant sees every recipient, the reason they were chosen and every quote’s source.
- Briefs carry no contact details at this stage. Contact follows acceptance, through the Desk.
Status: the public MCP is live. Broker keys, the Desk MCP, webhooks and quote records run against demo brokers in Alberta while each market’s operating policy is confirmed.