Extract Insurance
NPM · EXTRACT-INSURANCE
Insurance documents into JSON, with the quote and page behind every value.
Available components
Last scanned (19 minutes ago)
Scores higher than 33% of npm servers
Category Documents and Files
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 30 of 92 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency19
- Repository check failed: no source repository is declared. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 5 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability68
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 4801 tokens (~109/item across 44 items; 44 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage88
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 63% of tool parameters carry a description.Partial
Tool Safety92
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 4 of 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "preview_publish" implies "publish" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 45 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 3 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Nov 26 +16
- Malware scan: unverified → pass ▲ security
- 31 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- Package version: 1.2.0 → 1.2.1 functional
- 30 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Oct 26 62
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed npm/extract-insurance@1.2.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 92 packages
| Packages resolved | 92 |
|---|---|
| Stale | 30 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
accept_all All good ~56
Accepts every value not answered yet as right (all: also resolved and missing ones); never a disputed field. Only when the person says the rest is right.
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | – | – |
| job_id | string | yes | – |
No output schema declared.
No examples provided.
add_credit_link Where to add credit ~49
The Account page's billing section, where an owner adds credit and sets the spend limit, the low-balance alert and automatic top-up. A key never changes billing; show the person the link.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
add_sample Add a sample ~79
Adds a document on this machine to a workflow's samples: publishing is checked against them. It uses the account's free documents first, and is read in the background (preview_publish waits for it).
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
add_target Add an output ~146
Adds a target to the workflow's draft: the person's JSON Schema, a PDF or Excel template, or our standard schema (standard: true). Then map it (triage_target, save_draft) and preview_publish.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | – |
| schema | object | – | The person's JSON Schema (or an example of their JSON). |
| schema_file | string | – | Or the path of that file. |
| standard | boolean | – | – |
| template_file | string | – | Or a fillable PDF or an .xlsx to fill with each document's values. |
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
answer_ticket Answer a ticket ~101
Adds the person's answer to a ticket; it waits on us again (a closed one opens again). Only when the person asks: show them the message first, in their words. A person on our side answers, by email to whoever opened the ticket and in the app (Account → Support).
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | The person's answer, in their words. |
| ticket | string | yes | The ticket's id (tkt_…), from list_tickets. |
No output schema declared.
No examples provided.
api_read Any API read ~79
Any other GET from the Extract Insurance API (described at https://api.extractinsurance.dev/v1/openapi.json), as the person: e.g. /v1/workflows/{id}/versions/2, /v1/jobs/{id}/reviews.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Under /v1, e.g. /v1/account. |
No output schema declared.
No examples provided.
close_ticket Close a ticket ~45
Closes a ticket the person says is settled; answering it later opens it again.
| Name | Type | Req | Description |
|---|---|---|---|
| ticket | string | yes | The ticket's id (tkt_…), from list_tickets. |
No output schema declared.
No examples provided.
compare_versions Two versions' mappings ~58
What the mapping changes between two versions, or a version and the draft.
| Name | Type | Req | Description |
|---|---|---|---|
| from | integer | yes | – |
| to | – | yes | – |
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
create_workflow Create a workflow ~111
A new workflow (a draft). Its target is the person's JSON Schema, a PDF or Excel template, else our standard schema. Next: add_sample, then preview_publish and publish_workflow.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| schema | object | – | The person's JSON Schema (or an example of their JSON). |
| schema_file | string | – | Or the path of that file. |
| template_file | string | – | Or a fillable PDF or an .xlsx to fill with each document's values. |
No output schema declared.
No examples provided.
create_workflow_key A production key ~279
Makes a key for one workflow (what production uses: it runs that workflow and reads its jobs) and writes it into an env file on this machine, never into the chat. Use an uncommitted file such as .env.local. Returns the key's id and where it went. Code that calls the workflow: POST https://api.extractinsurance.dev/v1/jobs with Authorization: Bearer <key> and the file as the multipart part document (optional part version pins one; default the latest published) → 202 {id}; GET /v1/jobs/{id} until status is no longer queued or running, or let the workflow's webhook receive it; then result.targets.<target id>.value. Read the key from the environment, never write it into the code.
| Name | Type | Req | Description |
|---|---|---|---|
| env_file | string | yes | The file to write it to, e.g. .env.local (created if missing; an existing line for env_var is replaced). |
| env_var | string | – | The variable's name (default EXTRACT_WORKFLOW_KEY). |
| mode | string | – | live (default): published versions; test: also the draft. |
| name | string | – | The key's name, e.g. "production". |
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
extract_document Read a document ~359
Reads one insurance document: a file on this machine (file_path) or an https link (url). PDF, PNG, JPG, HEIC, DOCX, XLSX, CSV, .eml or ZIP. Without workflow or schema you get our standard schema (everything we read); with the person's JSON Schema, their shape; with a workflow, its targets. Returns the result if it ends within wait_seconds (most documents take 40–170 s), else the job id for get_job. Each field: status (accepted, resolved, disputed, missing), value, quote and page; a missing field's absence says why. A file of several documents lists each with its own job_id. Costs $0.15 plus model usage.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | Only fields whose path starts with one of these, e.g. ["named_insured", "vehicles"]: for a long document. |
| file_path | string | – | A document on this machine (absolute, or relative to the project). |
| only | array | – | Only fields with these statuses, e.g. ["disputed"]. |
| schema | object | – | The person's JSON Schema, as an object. |
| schema_file | string | – | Or the path of their JSON Schema file. |
| url | string | – | An https link we can fetch (public or signed). |
| wait_seconds | integer | – | How long to wait for the end, in seconds (default 45, at most 55: many clients give up at 60). If it isn't done by then, you get the job id: call get_job. |
| workflow | string | – | Run one of the person's workflows (id or slug; append @3 or @draft to pin a version). |
No output schema declared.
No examples provided.
get_activity Activity ~36
Who did what in the account, newest first, with the key each change was made with (owners).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
No output schema declared.
No examples provided.
get_billing Balance and spend limit ~41
The balance, credit left with its expiry, the monthly spend limit and what's spent, the low-balance alert, automatic top-up, the free documents used.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_evidence Where a value was read ~190
A picture of the part of the page a field was read from, as the app shows it: each reading's place boxed (green; red when its quote wasn't found word for word); for a cell of a table, the rest of its row (blue, dashed) and the column headers. For a disputed field, to show the person what the page says. For a file of several documents, use that document's job_id. Needs the job's document: not after the account's "delete right after reading" (then the quote and page in the result are what there is). PDF, PNG, JPG and HEIC.
| Name | Type | Req | Description |
|---|---|---|---|
| field | string | yes | The field's path, as in the result: named_insured.name, vehicles[1].vin. |
| job_id | string | yes | – |
| target | string | – | For a workflow with several targets: which target's field. |
No output schema declared.
No examples provided.
get_job A job's result ~153
A job's status, where it is, and its result once done; waits up to wait_seconds for the end. fields and only keep a long result small.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | Only fields whose path starts with one of these, e.g. ["named_insured", "vehicles"]: for a long document. |
| job_id | string | yes | – |
| only | array | – | Only fields with these statuses, e.g. ["disputed"]. |
| wait_seconds | integer | – | How long to wait for the end, in seconds (default 45, at most 55: many clients give up at 60). If it isn't done by then, you get the job id: call get_job. |
No output schema declared.
No examples provided.
get_review What needs the person ~74
A job's disputed fields with each reading (value, quote, page, whether the quote was found word for word) and what the person has answered so far. Show them the readings (get_evidence crops the page) and ask which is right; record their answer with record_answer.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | – |
No output schema declared.
No examples provided.
get_reviewed The reviewed result ~28
The job's result with the person's answers in it.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | – |
No output schema declared.
No examples provided.
get_standard_schema Our standard schema ~35
The fields we read from insurance documents, as a JSON Schema: to pick fields, or to write the person's schema against ours.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_ticket A support ticket ~48
A ticket's messages, oldest first (from_us: our answer), and the runs it names.
| Name | Type | Req | Description |
|---|---|---|---|
| ticket | string | yes | The ticket's id (tkt_…), from list_tickets. |
No output schema declared.
No examples provided.
get_usage Usage ~35
The month's documents and cost, per workflow, use and key (YYYY-MM; default this month).
| Name | Type | Req | Description |
|---|---|---|---|
| month | string | – | – |
No output schema declared.
No examples provided.
get_workflow A workflow ~74
One workflow: its draft (targets with their schemas and mappings, policy with its gate: which documents get in), versions, samples with their review, settings, and whether the draft differs from the published version.
| Name | Type | Req | Description |
|---|---|---|---|
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
list_runs Production runs ~62
The workflow's production jobs, newest first: status, file, version, cost, and per target what was filled.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
list_tickets Support tickets ~60
The account's support tickets, newest change first, with where each stands: open (waiting on us), waiting (on the person), closed. Also the account's last runs, to name in open_ticket.
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | – | Default all. |
No output schema declared.
No examples provided.
list_workflow_keys Production keys ~42
The workflow's keys (never their tokens).
| Name | Type | Req | Description |
|---|---|---|---|
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
list_workflows Workflows ~24
The person's workflows: id, slug, name, published version, samples.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
open_ticket Ask us something ~112
Opens a support ticket: a value read wrong, a run that failed, billing. job_ids names the runs it's about (from list_tickets' recent_jobs or get_job). Only when the person asks: show them the message first, in their words. A person on our side answers, by email to whoever opened the ticket and in the app (Account → Support).
| Name | Type | Req | Description |
|---|---|---|---|
| job_ids | array | – | – |
| message | string | yes | The person's question, in their words. |
| subject | string | yes | – |
No output schema declared.
No examples provided.
preview_publish What publishing changes ~128
What publishing the draft would change: the mapping, and the values on every sample (values the person confirmed are marked). Show it to the person; its confirmation token is what publish_workflow needs, once they say yes.
| Name | Type | Req | Description |
|---|---|---|---|
| wait_seconds | integer | – | How long to wait for the end, in seconds (default 45, at most 55: many clients give up at 60). If it isn't done by then, you get the job id: call get_job. |
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
preview_sample A sample in the draft's outputs ~129
What one sample gives in each of the draft's targets, as production would send it once published: to check a mapping before preview_publish.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | The sample's job id, from get_workflow. |
| wait_seconds | integer | – | How long to wait for the end, in seconds (default 45, at most 55: many clients give up at 60). If it isn't done by then, you get the job id: call get_job. |
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
publish_workflow Publish ~99
Publishes the draft as the next version: production runs it from now on. Needs the confirmation from preview_publish of this same draft, and the person's yes. To roll back: restore_version, then publish again.
| Name | Type | Req | Description |
|---|---|---|---|
| confirmation | string | yes | From preview_publish. |
| note | string | – | What changed, for the version list. |
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
record_answer Record the person's answer ~178
Saves what the person said a field is: one of its readings (reading, from get_review), the value they typed (value), that the document doesn't have it (not_in_document), or that the value as read is right (confirm); clear takes an answer back. Only their own answer, never your pick. A dispute they settle on a form is used on the account's next documents of that form.
| Name | Type | Req | Description |
|---|---|---|---|
| clear | boolean | – | Take back an answer given before (the person changed their mind). |
| confirm | boolean | – | – |
| field | string | yes | The field's path, as in get_review. |
| job_id | string | yes | – |
| not_in_document | boolean | – | – |
| note | string | – | The person's words, if they gave a reason. |
| reading | integer | – | – |
| value | – | – | – |
No output schema declared.
No examples provided.
remove_sample Remove a sample ~59
Takes a document out of the workflow's samples.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | The sample's job id, from get_workflow. |
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
request_one_document Ask for a cut file to count as one ~116
A file we cut into several documents (each charged) that the person says is one document: asks us to look. Only our approval gives back the fees past the first. Only when the person says so. Without note: where an earlier request stands. If the file was deleted after reading, give file_path to send it again.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | – | – |
| job_id | string | yes | The file's job (not one of its documents). |
| note | string | – | The person's reason, in their words. |
No output schema declared.
No examples provided.
restore_version Restore a version ~52
Copies an earlier version into the draft (publish it to roll back).
| Name | Type | Req | Description |
|---|---|---|---|
| version | integer | yes | – |
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
revoke_workflow_key Revoke a production key ~61
Stops a workflow key at once: production using it gets 401. Only when the person asks.
| Name | Type | Req | Description |
|---|---|---|---|
| key_id | string | yes | – |
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
save_document Save the document a job read ~74
The document a job read (for one document of a file, its own pages), saved on this machine, while we keep it: not after the account's "delete right after reading".
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | – |
| save_to | string | yes | Where to save it, e.g. out/policy.pdf. |
No output schema declared.
No examples provided.
save_draft Save the draft ~297
Replaces the workflow's draft: send the draft from get_workflow, edited (name, targets with their mappings, policy: resolve_confidence, gate). The published version is untouched until publish_workflow. Which documents get in: policy.gate = {accept: [one choice], on_mismatch, when_unsure}; leave gate out to let every document in. accept: "insurance" (any insurance document); one kind: "policy" (policies, quotes, binders, endorsements), "submission" (applications, loss runs, schedules), "claims", "certificate" (certificates and evidence of insurance), "billing" (invoices, premium audits); or one type of page: "declarations", "loss_run", "application", "certificate_of_insurance". on_mismatch, for a document that is clearly something else: "reject" (refuse it; default) or "warn" (read it anyway, with a warning). when_unsure: "extract" (read it, with a warning; default) or "reject". A refused document costs only the check and is not an extraction; job status "rejected", result.rejected.reason says why. It filters out documents that don't belong; it is not a security control.
| Name | Type | Req | Description |
|---|---|---|---|
| draft | object | yes | – |
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
save_filled_file Save a filled PDF or Excel ~133
For a workflow with a PDF or Excel target: that file filled with a job's values, saved on this machine (never into the chat). With workflow, the job is one of its samples and the file is filled as the draft would.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | – |
| save_to | string | yes | Where to save it, e.g. out/acord-125.pdf. |
| target | string | yes | The target's id, from the job's result.targets or the workflow's draft. |
| workflow | string | – | For a sample: the workflow, to fill it as its draft would. |
No output schema declared.
No examples provided.
sign_in Sign in ~109
Signs this machine in to Extract Insurance. The first call returns a link and a code: show both to the person and ask them to open the link, check the code and approve. Then call sign_in again: it waits for the approval and saves the key (shared with the extract-insurance CLI; it stops after 90 days without use). Already signed in: says as whom.
| Name | Type | Req | Description |
|---|---|---|---|
| wait_seconds | integer | – | How long to wait for the approval on a later call (default 45). |
No output schema declared.
No examples provided.
sign_out Sign out ~26
Revokes the saved key and deletes it from this machine. Only when the person asks.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
test_webhook Test the webhook ~48
Sends a signed test delivery to the workflow's webhook and says what it answered.
| Name | Type | Req | Description |
|---|---|---|---|
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
triage_target Map a target's fields ~100
For one target of the draft, which of our fields fills each of the person's fields: sure, choose (with candidates), or unknown. Use it to decide the mappings, then save_draft.
| Name | Type | Req | Description |
|---|---|---|---|
| hints | – | – | – |
| only | array | – | – |
| target | string | yes | The target's id, from get_workflow. |
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
update_account_settings The account's data settings ~135
How long the account keeps documents (retention_days; null: our default), whether each one is deleted right after it's read (delete_after_read), and whether we may use its documents to improve our reading (improve: the person's consent, only when they say so in their own words); the account's name. Owners only; a workflow's own settings are update_workflow_settings. A shorter retention or deleting right after reading also ends page crops for documents read from then on.
| Name | Type | Req | Description |
|---|---|---|---|
| delete_after_read | boolean | – | – |
| improve | boolean | – | – |
| name | string | – | – |
| retention_days | – | – | – |
No output schema declared.
No examples provided.
update_workflow_settings Webhook and retention ~135
The workflow's settings, live at once (not versioned): webhook_url (https; null: none), retention_days (how long documents are kept), results_retention_days (how long results are kept), delete_after_read. null: the account's setting. Which documents get in (the gate) is in the draft's policy: save_draft.
| Name | Type | Req | Description |
|---|---|---|---|
| delete_after_read | boolean|null | – | – |
| results_retention_days | – | – | – |
| retention_days | – | – | – |
| webhook_url | – | – | – |
| workflow | string | yes | The workflow's id (wf_…) or its slug, from list_workflows. |
No output schema declared.
No examples provided.
whoami Who am I ~25
The account, the key in use and the role of the person it acts as.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
How do I install the Extract Insurance MCP server?
Extract Insurance runs locally as an npm package, launched with npx -y extract-insurance. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · extract-insurance
claude mcp add dev-extractinsurance-extract-insurance -- npx -y extract-insurance
What is the Extract Insurance MCP server?
Extract Insurance is an MCP server listed in the public MCP registry as dev.extractinsurance/extract-insurance. Insurance documents into JSON, with the quote and page behind every value. This page covers its npm package (extract-insurance).
Is the Extract Insurance MCP server safe to use?
Extract Insurance scores 66 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Extract Insurance MCP server expose?
Extract Insurance exposes 44 tools: sign_in, sign_out, whoami, extract_document, get_job, and 39 more. Their descriptions and schemas cost roughly 4,280 tokens of context every time the server is loaded.
Is the Extract Insurance MCP server still maintained?
Extract Insurance is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Extract Insurance MCP server under?
Extract Insurance declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.