# api.insure, in full

> api.insure is one API for claims and coverage: an agent runs the open work, and licensed adjusters and producers perform the acts the state reserves.

# Agents can't sell or settle insurance. They can call it.

One API for claims and coverage. Your agent runs the open work, and licensed adjusters and producers perform the acts the state reserves. No decision, no charge: every fee is flat and fixed when you post.

## Where the line falls

- Claims. Open to your agent: FNOL intake, file assembly, coverage read, estimate review. Reserved to a licensed adjuster: investigate, adjust, settle. A reserved act answers PENDING_ADJUSTER.
- Coverage. Open to your agent: quote math, document prep, renewal watch. Reserved to a licensed producer: sell, solicit, negotiate, bind. A bind answers PENDING_PRODUCER.

## A license on every act

- Licensed at the act: a live license is checked at call time, per state and line.
- Judgment stays human: the adjuster decides on the prepared file, or sends it back.
- The record returns: decision, attestation and payment record return by webhook.

## Every clock has an owner

State deadlines to acknowledge, decide and pay run as code, and close only on evidence. Texas: acknowledge within 15 days of notice, decide within 15 business days of a complete file, pay within 5 business days of acceptance.

## Billed when the act happens

Each reserved act carries a flat fee, fixed when you post it, and the meter releases once per act. Approved and denied decisions are billed; a send-back is not. A bound policy is billed; an unbound quote is not. You set a hard spend ceiling.

## Questions

### Does api.insure decide claims?

No. A licensed adjuster on the network decides every claim, under authority your carrier or MGA delegates. Your agent runs the open work, and the API stops it at the reserved act and returns PENDING_ADJUSTER until the adjuster attests.

### What can my agent do without a license?

Everything the state leaves open: intake, acknowledgment, file assembly, coverage reads, estimate review, quote math and document prep. Adjusting and settling a claim, and selling, negotiating and binding coverage, route to licensed professionals.

### Who does the adjuster answer to?

The carrier. Delegated authority runs from the carrier's claims-handling agreement, and the adjuster decides in their own licensed judgment. No platform process can commit past their refusal, and their flat fee never moves with the outcome.

### How is it priced?

Each reserved act carries a flat fee, fixed when you post the work. The meter releases once per act, on an issued decision or a bound policy, so a send-back costs nothing. A denial is a decision and is billed like one.

### Can my agent use it over MCP?

Yes. The MCP server at api.insure/mcp has the same nouns and verbs as the HTTP API, so your agent files and reads claims, requests quotes and binds over MCP, and stops at the same reserved acts.

## Links

- [Docs](https://api.insure/docs) · [API reference](https://api.insure/docs/api) · [MCP tools](https://api.insure/docs/mcp) · [Humans in the loop](https://api.insure/docs/humans)
- [Blog](https://api.insure/blog) · [Request access](https://api.insure/access)
- For adjusters: [gigs.claims](https://gigs.claims)


---

# Build on api.insure

One API for claims and coverage. Your agent runs the open work over HTTP or MCP, and every reserved act returns a typed state until a licensed professional performs it.

## Quickstart

Every call below runs keyless in the sandbox, on synthetic files.

1. Discover every door: `curl https://api.insure/.well-known/agents.json`
2. Read the claims collection: `curl 'https://api.insure/claims?peril=wind_hail'`
3. File a claim and watch it stop at the reserved act:

```bash
curl -X POST https://api.insure/claims \
  -H 'content-type: application/json' \
  -d '{"policy":"HO3-4482-TX","loss":{"date":"2026-07-14","peril":"wind_hail","state":"TX"}}'
```

4. Hand it to your agent over MCP:

```json
{
  "mcpServers": {
    "api.insure": { "url": "https://api.insure/mcp" }
  }
}
```

## Open work and reserved acts

Open (your agent): intake, acknowledge, assemble, coverage read, estimate review, quote math, document prep.
Reserved (a licensed adjuster or producer): investigate, adjust, settle, sell, solicit, negotiate, bind.

Rating is open work; offering, negotiating and binding route to a licensed producer. The line is drawn per state and line of authority. Negotiating a settlement is speech, so it is gated when it is said, not only when it is signed.

## Typed states

| Type | Status | Means |
| --- | --- | --- |
| OK | 200 read, 202 write | The call did what it asked. |
| EMPTY | 200 | A truthful empty collection. |
| BLOCKED | 401, 403 | A permission boundary, with a worded reason. |
| OFFER | 402 | The call would pass your spend ceiling. |

A record waiting on a reserved act carries `status: PENDING_ADJUSTER` (a licensed adjuster) or `status: PENDING_PRODUCER` (a licensed producer).

## Claim stages

notice, acknowledge, investigate, evaluate, decide, pay. The statute's verbs (acknowledge, decide, pay) are stage verbs, so the clock and the lifecycle are one machine.

## The parties

- Carrier: the principal. Delegated authority flows from its claims-handling agreement.
- Policyholder: owed good-faith handling and the statutory clocks, on the record.
- Claimant: adverse in third-party claims, and typed that way.


---

# api.insure API reference

Base URL `https://api.insure`, JSON over HTTPS, contract at `/openapi.json`. Reads are keyless.

## Claims

The claim file, from first notice to payment. A claim waiting on a license is typed as waiting, never left in an untyped queue.

### GET /claims

The claims collection. Filter by peril or stage. A filter that matches nothing answers a typed EMPTY, never a bare list.

Response 200 · OK:

```json
{
  "type": "OK",
  "claims": [
    {
      "claim": "clm_8f3ka92",
      "peril": "wind_hail",
      "stage": "evaluate",
      "status": "PENDING_ADJUSTER"
    },
    {
      "claim": "clm_7d21m40",
      "peril": "water_nonweather",
      "stage": "decide",
      "status": "DECIDED"
    }
  ]
}
```

### POST /claims

First notice of loss. Opens the claim, starts the state's clocks, and runs the open work: intake, acknowledgment, file assembly, coverage and estimate review.

Request:

```json
{
  "policy": "HO3-4482-TX",
  "loss": {
    "date": "2026-07-14",
    "peril": "wind_hail",
    "state": "TX"
  },
  "posture": "first_party"
}
```

Response 202 · OK:

```json
{
  "type": "OK",
  "claim": "clm_8f3ka92",
  "stage": "notice",
  "openWork": [
    "intake",
    "acknowledge",
    "assemble",
    "coverage",
    "estimate"
  ],
  "clocks": {
    "acknowledge": {
      "rule": "TX: 15 days",
      "started": "2026-07-15",
      "due": "2026-07-30"
    }
  },
  "webhooks": ["decision.issued", "claim.paid"]
}
```

### GET /claims/:id

One claim, with its stage, open work and clock state. At the reserved act it answers PENDING_ADJUSTER and names the license the act requires.

Waits on a licensed adjuster.

Response 200 · OK:

```json
{
  "type": "OK",
  "claim": "clm_8f3ka92",
  "policy": "HO3-4482-TX",
  "line": "homeowners",
  "posture": "first_party",
  "stage": "evaluate",
  "status": "PENDING_ADJUSTER",
  "openWork": {
    "fnol": "complete",
    "acknowledgment": "sent",
    "file": "assembled",
    "coverage": "analyzed",
    "estimate": "checked"
  },
  "reservedAct": {
    "verb": "adjust",
    "license": "TX all-lines adjuster",
    "verified": "at_call_time",
    "authority": "delegated_by_carrier",
    "fee": { "shape": "flat", "fixed": "at_post" }
  },
  "clocks": {
    "acknowledge": {
      "rule": "TX: 15 days",
      "closed": "2026-07-16"
    },
    "decide": {
      "rule": "TX: 15 business days",
      "started": "2026-07-24",
      "due": "2026-08-14"
    }
  }
}
```

## Coverage

Rating is open work, so a rate answers at once. Offering, negotiating and binding are producer-reserved, so a bind waits on a licensed producer.

### POST /quotes

Price coverage for a risk in one state and line. The quote holds its premium until it expires.

Request:

```json
{
  "line": "personal_auto",
  "state": "TX",
  "risk": {
    "vehicle": "2024 Subaru Outback",
    "garaging": "78704"
  },
  "coverages": [
    "liability",
    "collision",
    "comprehensive",
    "gap"
  ],
  "term": "6_months"
}
```

Response 200 · OK:

```json
{
  "type": "OK",
  "quote": "qt_31c8f0",
  "premium": {
    "amount": 650,
    "currency": "USD",
    "term": "6_months"
  },
  "expires": "2026-08-12"
}
```

### POST /quotes/:id/bind

Bind a quote. The call answers PENDING_PRODUCER while a licensed producer reviews and binds, then policy.bound arrives with the policy number.

Waits on a licensed producer.

Response 202 · OK:

```json
{
  "type": "OK",
  "quote": "qt_31c8f0",
  "status": "PENDING_PRODUCER",
  "reservedAct": {
    "verb": "bind",
    "license": "TX general lines producer",
    "verified": "at_call_time",
    "fee": { "shape": "flat", "fixed": "at_post" }
  },
  "webhooks": ["policy.bound", "documents.issued"]
}
```

### GET /policies/:id

One policy record at ACORD grain: form, term, coverages and deductibles.

Response 200 · OK:

```json
{
  "type": "OK",
  "policy": "HO3-4482-TX",
  "form": "HO-3",
  "insured": "Jordan Alvarez",
  "term": {
    "effective": "2026-03-01",
    "expires": "2027-03-01"
  },
  "coverages": {
    "dwelling": 412000,
    "otherStructures": 41200,
    "personalProperty": 206000
  },
  "deductible": { "windHail": "2%" }
}
```

## Documents

The documents a claim or a renewal runs on, normalized to one shape.

### GET /loss-runs/:id

A normalized loss run: claims and incurred losses for a policy over a stated period.

Response 200 · OK:

```json
{
  "type": "OK",
  "lossRun": "lr_4482tx_5y",
  "policy": "HO3-4482-TX",
  "years": 5,
  "claims": 2,
  "incurred": 22610,
  "valued": "2026-07-31"
}
```

### GET /acord-forms

ACORD forms, normalized. Filter by form number.

### GET /cois

Certificates of insurance at ACORD 25 grain.

### GET /eobs

Explanations of benefits, normalized.

## Events

Webhooks carry each reserved act's result back to your product. decision.issued and policy.bound release the meter; claim.paid and documents.issued are records.

### EVENT decision.issued

The adjuster's decision and their attestation, with the pay clock it starts. A denial is a decision too, and arrives with its reasons.

Payload:

```json
{
  "event": "decision.issued",
  "claim": "clm_8f3ka92",
  "stage": "decide",
  "status": "DECIDED",
  "decision": {
    "outcome": "approved",
    "by": "licensed_adjuster",
    "license": "TX all-lines adjuster",
    "attestation": "att_71b0e4",
    "at": "2026-07-29T15:20:00Z"
  },
  "clocks": {
    "pay": {
      "rule": "TX: 5 business days",
      "started": "2026-07-29",
      "due": "2026-08-05"
    }
  },
  "meter": "released"
}
```

### EVENT claim.paid

The payment record once the payment is issued, with the decision it pays.

Payload:

```json
{
  "event": "claim.paid",
  "claim": "clm_8f3ka92",
  "stage": "pay",
  "status": "DECIDED",
  "decision": {
    "outcome": "approved",
    "by": "licensed_adjuster",
    "attestation": "att_71b0e4",
    "at": "2026-07-29T15:20:00Z"
  },
  "payment": {
    "record": "pay_20c4d1",
    "amount": 14210,
    "currency": "USD",
    "issued": "2026-07-31"
  }
}
```

### EVENT policy.bound

The bound policy number and its effective date, once a licensed producer binds.

Payload:

```json
{
  "event": "policy.bound",
  "quote": "qt_31c8f0",
  "policy": "PAP-7741-TX",
  "effective": "2026-08-03",
  "meter": "released"
}
```

### EVENT documents.issued

The policy's documents: ID cards and the declarations page.

Payload:

```json
{
  "event": "documents.issued",
  "policy": "PAP-7741-TX",
  "documents": ["id_cards", "declarations"]
}
```

## How it refuses

| Status | Type | When |
| --- | --- | --- |
| 200 | EMPTY | A filter matched nothing. The body says what was asked. |
| 401, 403 | BLOCKED | A key or scope can't reach this route. Reserved scopes answer with a worded reason. |
| 402 | OFFER | The request would pass your spend ceiling. The body carries the re-authorization offer. |
| 404 |  | The claim, quote or policy doesn't exist. |
| 422 |  | The request is missing a required field, such as the loss date or state on a first notice. |


---

# api.insure MCP tools

The MCP server speaks streamable HTTP, with the same nouns and verbs as the API. Its tools stop exactly where the API stops.

## Setup

```json
{
  "mcpServers": {
    "api.insure": { "url": "https://api.insure/mcp" }
  }
}
```

## Tools

### submitFNOL (loop)

Open a claim from a first notice of loss.

```json
{
  "policy": "HO3-4482-TX",
  "loss": {
    "date": "2026-07-14",
    "peril": "wind_hail",
    "state": "TX"
  }
}
```

### getClaim (loop)

Read one claim, its stage and its clocks. Returns PENDING_ADJUSTER at the reserved act.

```json
{
  "id": "clm_8f3ka92"
}
```

### requestQuote (loop)

Price coverage for a risk in one state and line.

```json
{
  "line": "personal_auto",
  "state": "TX",
  "coverages": ["liability", "collision"]
}
```

### bindQuote (loop)

Bind a quote. Returns PENDING_PRODUCER until a licensed producer binds.

```json
{
  "id": "qt_31c8f0"
}
```

### listClaims (read)

The claims collection, filtered by peril or stage.

### listPolicies (read)

Policy records at ACORD grain.

### getPolicy (read)

One policy record.

### listLossRuns (read)

Normalized loss runs.

### getLossRun (read)

One loss run.

### listACORDForms (read)

Normalized ACORD forms.

### listCOIs (read)

Certificates of insurance.

### listEOBs (read)

Explanations of benefits.


---

# Humans in the loop

A reserved act never runs in software. It reaches a licensed professional with the file already prepared, and the record comes back on your webhook.

## The reserved act

1. **Run the open work** (Your agent). Intake, acknowledgment, file assembly, coverage and estimate review, at API speed.
2. **Stop at the reserved act** (api.insure). The claim answers PENDING_ADJUSTER and names the license the act requires.
3. **Check the license** (api.insure). Verified at call time against the state registry, per state and line of authority.
4. **Review the prepared file** (Licensed adjuster). A licensed adjuster on the network reviews it under authority your carrier delegates.
5. **Decide in their own judgment** (Licensed adjuster). Approve, deny with reasons, or send it back for more.
6. **Receive the record** (Your agent). decision.issued brings the decision and attestation, and claim.paid the payment record.

No platform process can commit past an adjuster's refusal, and their flat fee never moves with the outcome.

## Every clock has an owner

In Texas a claim is acknowledged within 15 days of notice, decided within 15 business days of a complete file, and paid within 5 business days of acceptance (Texas Insurance Code §§542.055 to 542.057). A clock closes only on evidence, and no setting can extend a statutory deadline.


---

# Notes from the reserved line

How agents call insurance work: where the state draws its line, the typed states that hold it, and the clocks that run on every claim.

## [Why every reserved act has a flat fee](https://api.insure/blog/flat-fee-per-act)

October 9, 2026 · Pricing · [markdown](https://api.insure/blog/flat-fee-per-act.md)

A fee that grows with the claim pays someone to move the number. A flat fee, fixed before the work starts, does not.

## [The Texas claim clocks, as code](https://api.insure/blog/texas-claim-clocks)

October 9, 2026 · Clocks · [markdown](https://api.insure/blog/texas-claim-clocks.md)

Texas gives an insurer 15 days to acknowledge a claim, 15 business days to decide it and 5 business days to pay. Here is how those clocks run on one claim.

## [PENDING_ADJUSTER is a promise, not a queue](https://api.insure/blog/pending-adjuster)

October 9, 2026 · Architecture · [markdown](https://api.insure/blog/pending-adjuster.md)

When a claim reaches an act only a licensed adjuster may perform, the API says so in a type your code can branch on.

## [The state reserves a few acts. Everything else is software.](https://api.insure/blog/the-state-reserves-a-few-acts)

October 9, 2026 · Thesis · [markdown](https://api.insure/blog/the-state-reserves-a-few-acts.md)

Most of a claim is information work. The decision is reserved to a licensed adjuster. An API should treat that line as a contract, not a dead end.


---

# Why every reserved act has a flat fee

A fee that grows with the claim pays someone to move the number. A flat fee, fixed before the work starts, does not.

**In short.** Each reserved act on api.insure carries a flat fee, fixed when you post the work and visible before it starts. It never scales with the size of the claim, so the price of a decision never depends on its outcome. The meter releases once per act, on a fact: an issued decision or a bound policy.

Claims work has long been priced in ways that tie the fee to the file: a share of the loss, a fee schedule that climbs with severity, a meter that runs on hours. Each one puts a thumb on the scale. When the person deciding is paid more as the number grows, the number has a reason to grow.

## Flat, and fixed at post

Every reserved act on api.insure carries one flat fee:

- **Flat per act.** The fee never scales with the size of the claim or the reserve.
- **Fixed at post.** It is set when you post the work, before anyone starts, and you can see it up front.
- **Your ceiling.** You set a hard spend cap. A call that would pass it answers a typed `OFFER` instead of charging.

## No decision, no charge

The meter releases once per act, on a fact the system can prove:

| Act | Outcome | Meter |
| --- | --- | --- |
| adjust | Approved | Billed |
| adjust | Denied | Billed |
| adjust | Sent back | No charge |
| bind | Bound | Billed |
| bind | Not bound | No charge |

A denial is a decision, so it is billed like one. A send-back is not a decision: the file goes back for more, and nothing is charged until a decision issues.

## What a flat fee protects

The adjuster's fee is flat too, and it never moves with the outcome. That is an incentive firewall: nothing about the price of the work rewards a bigger or a smaller number. A decision your regulator can trust is a decision your product can ship.

## Questions

### How is api.insure priced?

Each reserved act carries a flat fee, fixed when you post the work. The meter releases once per act, on an issued decision or a bound policy.

### Is a denied claim billed?

Yes. A denial is a decision, and the meter treats it as one.

### Is a send-back billed?

No. A send-back returns the file for more work, and nothing is charged until a decision issues.

### Can spending run past a limit I set?

No. You set a hard spend ceiling, and a call that would pass it answers a typed OFFER instead of charging.


---

# The Texas claim clocks, as code

Texas gives an insurer 15 days to acknowledge a claim, 15 business days to decide it and 5 business days to pay. Here is how those clocks run on one claim.

**In short.** Under the Texas Prompt Payment of Claims Act, an insurer acknowledges a claim within 15 days of notice, accepts or rejects it within 15 business days of receiving the last item it requested, and pays within 5 business days of notifying acceptance. api.insure starts each clock from evidence and closes it only on evidence.

State claim-handling law sets hard deadlines on every claim. In Texas they live in Chapter 542, Subchapter B, of the Insurance Code. Three of them shape every first-party claim.

## The three clocks

- **Acknowledge: 15 days from notice.** Within 15 days of receiving notice of a claim, the insurer acknowledges it, starts its investigation, and requests the items it reasonably needs (§542.055).
- **Decide: 15 business days from the last item.** The insurer accepts or rejects the claim in writing within 15 business days of receiving everything it requested to secure final proof of loss (§542.056).
- **Pay: 5 business days from acceptance.** Once it notifies the claimant that it will pay, it pays within 5 business days (§542.057).

Two details matter in practice. The decide clock does not start at notice: it starts when the last requested item arrives. And after a declared weather catastrophe, the deadlines extend by 15 days (§542.059).

## One claim, start to finish

Here is claim `clm_8f3ka92`, wind and hail damage to a Texas home:

- **Jul 14.** The loss.
- **Jul 15.** First notice of loss. The acknowledge clock starts, due Jul 30.
- **Jul 16.** Acknowledgment sent on the record, day 1 of 15. The clock closes on that evidence.
- **Jul 24.** The last requested item, the roof estimate, arrives. The decide clock starts, due Aug 14.
- **Jul 29.** A licensed adjuster on the network approves the claim, business day 3 of 15. The pay clock starts, due Aug 5.
- **Jul 31.** Payment issued, business day 2 of 5.

## Clocks as code

On api.insure the clocks are deterministic machinery, not reminders:

- Each clock starts from an event on the record, never from a guess.
- It closes only on evidence: the acknowledgment sent, the decision issued, the payment record.
- Business-day clocks skip weekends.
- The final window takes a daily human acknowledgment.
- No configuration, tenant or platform, can extend a statutory deadline.

Every claim response carries its clock state, so your product can show the policyholder exactly where the claim stands:

```json
{
  "claim": "clm_8f3ka92",
  "clocks": {
    "acknowledge": { "rule": "TX: 15 days", "closed": "2026-07-16" },
    "decide": { "rule": "TX: 15 business days", "started": "2026-07-24", "due": "2026-08-14" }
  }
}
```

## Questions

### How long does a Texas insurer have to acknowledge a claim?

Fifteen days from receiving notice of the claim, under Texas Insurance Code §542.055. In that window it also starts its investigation and requests the items it needs.

### When does the Texas 15 business day decision clock start?

When the insurer receives all items, statements and forms it requested to secure final proof of loss, under §542.056. It does not start at first notice.

### How fast must a Texas insurer pay an accepted claim?

Within 5 business days of notifying the claimant that it will pay, under §542.057.

### Do the Texas deadlines change after a hurricane or hailstorm?

Yes. After a weather-related catastrophe or major natural disaster declared by the commissioner, the claim-handling deadlines extend by 15 days, under §542.059.

### Can a setting extend a statutory deadline on api.insure?

No. Clocks close only on evidence, and no tenant or platform configuration can extend a statutory deadline.

## Sources

1. [Texas Insurance Code §542.055, Receipt of Notice of Claim](https://texas.public.law/statutes/tex._ins._code_section_542.055), Texas Legislature (via Public.Law)
2. [Texas Insurance Code §542.056, Notice of Acceptance or Rejection of Claim](https://texas.public.law/statutes/tex._ins._code_section_542.056), Texas Legislature (via Public.Law)
3. [Texas Insurance Code §542.057, Payment of Claim](https://texas.public.law/statutes/tex._ins._code_section_542.057), Texas Legislature (via Public.Law)
4. [Texas Insurance Code §542.059, Extension of Deadlines](https://texas.public.law/statutes/tex._ins._code_section_542.059), Texas Legislature (via Public.Law)


---

# PENDING_ADJUSTER is a promise, not a queue

When a claim reaches an act only a licensed adjuster may perform, the API says so in a type your code can branch on.

**In short.** PENDING_ADJUSTER is the state a claim takes when its next act is reserved to a licensed adjuster and no attestation exists yet. It names the act, the license it requires and the authority it runs under. It clears only on a fact: the adjuster attests, sends the file back or declines, so your code waits on a fact instead of polling an untyped queue.

Most claims systems have a status called something like "in review." It means a person will look at the file eventually. It does not say who, under what license, or what the file is waiting for.

That ambiguity is expensive. A product can't tell the policyholder anything true, and a statutory clock keeps running while the file sits.

## A state with a meaning

`PENDING_ADJUSTER` is narrower. A claim enters it only when the next act is reserved to a licensed adjuster and no attestation exists yet. The response says exactly what is being waited on:

```json
{
  "claim": "clm_8f3ka92",
  "stage": "evaluate",
  "status": "PENDING_ADJUSTER",
  "reservedAct": {
    "verb": "adjust",
    "license": "TX all-lines adjuster",
    "verified": "at_call_time",
    "authority": "delegated_by_carrier",
    "fee": { "shape": "flat", "fixed": "at_post" }
  }
}
```

Your code can branch on it. Show the policyholder that a licensed adjuster is reviewing the file. Keep the decide clock visible. Stop retrying.

## How it clears

The state clears on a fact, never on a timer:

1. **The adjuster attests.** Their decision, approve or deny with reasons, and their signed attestation arrive on `decision.issued`.
2. **The adjuster sends it back.** The file returns to preparation with the gaps noted, and the claim leaves the pending state until it is ready again.
3. **The adjuster declines.** A declination is a refusal to sign, carried by a reasoned memo. The file is rerouted to another licensed adjuster, and no process can commit past the refusal.

## Why a type beats a queue

A queue tells you where a file is. A type tells you what it is waiting for, and what will move it. The license in `reservedAct` is checked at call time against the state registry, per state and line of authority, so the promise in the response is one the system can keep.

Producer-reserved acts work the same way. A bind answers `PENDING_PRODUCER` until a licensed producer binds, and `policy.bound` closes it.

## Questions

### What does PENDING_ADJUSTER mean?

The claim's next act is reserved to a licensed adjuster and no attestation exists yet. The response names the act, the license it requires and the authority it runs under.

### How does a claim leave PENDING_ADJUSTER?

Only on a fact: the adjuster attests to a decision, sends the file back with the gaps noted, or declines, which reroutes the file to another licensed adjuster.

### Is a send-back the same as a denial?

No. A denial is a signed decision on coverage. A send-back returns the file to preparation with defects noted, so it can be completed and reviewed again.

### How is the adjuster's license checked?

At call time, against the state registry, for the state and line of authority the act requires.


---

# The state reserves a few acts. Everything else is software.

Most of a claim is information work. The decision is reserved to a licensed adjuster. An API should treat that line as a contract, not a dead end.

**In short.** Insurance law reserves a short list of acts to licensed people: adjusting and settling a claim, and selling, negotiating and binding coverage. Everything around them, from intake to estimate review, is open work software can do. api.insure runs the open work at API speed and routes each reserved act to a licensed professional, returning a typed state while it waits.

A homeowner's roof takes wind and hail on a Tuesday. By Wednesday the claim exists, and a long list of work begins: take the first notice of loss, acknowledge it on the record, gather photos and the roofer's estimate, match the policy forms to the peril, and check the estimate's line items against the photos.

None of that work requires a license. All of it is information work, and software already does it well.

Then the file reaches one act that is different. Someone has to decide the claim.

## The line the state draws

Every state reserves a few acts to licensed professionals. On the claims side, a licensed adjuster investigates, adjusts and settles. On the coverage side, a licensed producer sells, solicits, negotiates and binds. The list is short, and it is drawn per state and per line of authority.

Everything else is open:

- intake and acknowledgment
- file assembly and document prep
- coverage reads and estimate review
- quote math and renewal watch

## Why software stops short today

When a product's workflow reaches a reserved act, it usually ends. The file is exported, emailed to a claims shop, or uploaded to a portal. The product loses the thread, the customer waits, and nobody owns the statutory clock that started at first notice.

The other option is worse: let the software decide anyway. That is not a bug ticket. It is unlicensed adjusting, with the product's name on the complaint.

## The line as a contract

api.insure treats the reserved act as a typed step in the API. Your agent calls `POST /claims` and the open work runs. When the next act is reserved, the claim answers `PENDING_ADJUSTER` and names the license that act requires:

```json
{
  "claim": "clm_8f3ka92",
  "status": "PENDING_ADJUSTER",
  "reservedAct": { "verb": "adjust", "license": "TX all-lines adjuster", "verified": "at_call_time" }
}
```

A licensed adjuster on the network reviews the prepared file under authority the carrier delegates, and decides in their own judgment. The decision and the adjuster's attestation come back on `decision.issued`, and the payment record on `claim.paid`.

Coverage runs the same way. Rating is open work and answers at once. Offering and binding are producer-reserved: a bind answers `PENDING_PRODUCER` until a licensed producer binds, and `policy.bound` brings back the policy number.

## What this changes

The product keeps the thread from first notice to payment. The agent does the work it can do at API speed, and stops exactly where the state says to. And the person who decides is licensed for the state and line, verified at the moment of the act.

## Questions

### Which acts does insurance law reserve to licensed people?

On the claims side, investigating, adjusting and settling a claim are reserved to a licensed adjuster. On the coverage side, selling, soliciting, negotiating and binding are reserved to a licensed producer. The list is drawn per state and line of authority.

### What can an AI agent do on a claim without a license?

The open work: first notice of loss intake, acknowledgment, file assembly, coverage reads against the policy forms, and estimate review. On coverage, quote math, document prep and renewal watch are open too.

### What happens when an agent reaches a reserved act on api.insure?

The call answers a typed pending state, PENDING_ADJUSTER for a claim decision or PENDING_PRODUCER for a bind, and names the license the act requires. A licensed professional performs the act, and the result returns on a webhook.

### Does api.insure decide claims?

No. A licensed adjuster on the network decides every claim, under authority the carrier delegates, in their own licensed judgment.
