{
  "manifestVersion": "2.0",
  "status": "experimental",
  "name": "Insurers Global",
  "description": "The open directory of North America’s licensed insurance companies.",
  "url": "https://north-america.insurers.global",
  "version": "2026-09-08+3f3925fad259",
  "registration": {
    "api": "document.modelContext.registerTool",
    "legacyApi": "navigator.modelContext.registerTool",
    "scope": "every HTML page on this origin",
    "declarativeForms": [
      "search_directory_header (header form)",
      "search_directory (/search/ form)",
      "filter_country_insurers (country pages)"
    ]
  },
  "fallback": {
    "openapi": "https://north-america.insurers.global/api/v1/openapi.json",
    "llms": "https://north-america.insurers.global/llms.txt",
    "guide": "https://north-america.insurers.global/ai/"
  },
  "mcp": {
    "endpoint": "https://north-america.insurers.global/mcp",
    "transport": "streamable-http",
    "authentication": "none",
    "health": "https://north-america.insurers.global/mcp/health",
    "serverCard": "https://north-america.insurers.global/.well-known/mcp/server-card.json",
    "configSchema": "https://north-america.insurers.global/.well-known/mcp-config"
  },
  "examples": {
    "countryName": "Canada",
    "countrySlug": "canada",
    "countryIso2": "CA",
    "insurerSlug": "canada-federated-insurance-company-of-canada",
    "groupName": "AIG",
    "groupSlug": "aig"
  },
  "tools": [
    {
      "name": "search_insurers",
      "title": "Search insurers, groups and countries by name",
      "description": "Search licensed insurance companies, reinsurers, takaful operators and insurance groups across North America by name. Returns matching insurers, countries and groups with their slugs and links.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "minLength": 1,
            "maxLength": 200,
            "type": "string",
            "description": "Company, group or country name, or part of one."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "default": 25,
            "description": "Maximum number of results to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "default": 0,
            "description": "Results to skip, for paging."
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "untrustedContentHint": true
      },
      "reads": [
        "https://north-america.insurers.global/api/v1/search-index.json",
        "https://north-america.insurers.global/api/v1/meta.json"
      ]
    },
    {
      "name": "list_insurers",
      "title": "List licensed insurers with filters",
      "description": "List licensed insurers with optional filters and bounded pages (25 by default, at most 200; a page of large records stops early to keep the response small and reports nextOffset). Filter by continent (\"north-america\"), country slug (e.g. \"canada\"), class slug (e.g. \"captive-risk-retention-group\", \"composite\", \"general-non-life\", \"health-medical\", \"life\"), group type slug (e.g. \"corporate-parent-captive\", \"domestic-private\", \"foreign-multinational\", \"mutual-cooperative\"), parent group slug or verification level. Country filtering fetches only that market's full insurer records; compact returns lean rows instead.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "continent": {
            "minLength": 1,
            "maxLength": 200,
            "type": "string",
            "enum": [
              "north-america"
            ],
            "description": "Continent slug."
          },
          "country": {
            "minLength": 1,
            "maxLength": 200,
            "type": "string",
            "description": "Country slug (e.g. \"canada\") or ISO alpha-2 code (e.g. \"CA\")."
          },
          "class": {
            "minLength": 1,
            "maxLength": 200,
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "type": "string",
            "description": "Class of business slug."
          },
          "group_type": {
            "minLength": 1,
            "maxLength": 200,
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "type": "string",
            "description": "Ownership group type slug."
          },
          "group": {
            "minLength": 1,
            "maxLength": 200,
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "type": "string",
            "description": "Parent group slug, e.g. \"aig\"; list_groups returns them all."
          },
          "verification": {
            "minLength": 1,
            "maxLength": 200,
            "type": "string",
            "enum": [
              "verified",
              "partial",
              "unverified"
            ],
            "description": "Verification level against the source register."
          },
          "compact": {
            "type": "boolean",
            "default": false,
            "description": "true: return each insurer as a lean row (slug, name, country, class, groupSlug, verification) without notes, source text, identifiers or links, so more rows fit in one response. get_insurer returns the full record for any slug."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "default": 25,
            "description": "Maximum number of results to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "default": 0,
            "description": "Results to skip, for paging."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "untrustedContentHint": true
      },
      "reads": [
        "https://north-america.insurers.global/api/v1/insurers.json",
        "https://north-america.insurers.global/api/v1/countries.json",
        "https://north-america.insurers.global/api/v1/countries/{slug}/insurers.json"
      ]
    },
    {
      "name": "get_country",
      "title": "Get one market with its full insurer list",
      "description": "Get one country in North America: regulator (name, acronym, website, notes), currency, counts by class and ownership, verification status against the regulator register, market notes, and its licensed insurers with register identifiers and source caveats. Counts by class count entities, not licences: every company appears once, under the class its register row records, and byClass sums to total. A regulator’s own per-class licence tally is broader and will not match. Most markets return every insurer in one call; a large market returns a first page, and insurersPage gives the total and the nextOffset to pass as offset. Prefer get_country_summary for market facts alone.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country": {
            "minLength": 1,
            "maxLength": 200,
            "type": "string",
            "description": "Country slug (e.g. \"canada\") or ISO alpha-2 code (e.g. \"CA\")."
          },
          "compact": {
            "type": "boolean",
            "default": false,
            "description": "true: return each insurer as a lean row (slug, name, country, class, groupSlug, verification) without notes, source text, identifiers or links, so more rows fit in one response. get_insurer returns the full record for any slug."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "default": 200,
            "description": "Maximum entity rows to return. Long lists also stop early to keep the response small; the page object reports total and nextOffset."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "default": 0,
            "description": "Entity rows to skip, for paging."
          }
        },
        "required": [
          "country"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "untrustedContentHint": true
      },
      "reads": [
        "https://north-america.insurers.global/api/v1/countries.json",
        "https://north-america.insurers.global/api/v1/countries/{slug}.json"
      ]
    },
    {
      "name": "get_country_summary",
      "title": "Get one market’s facts without insurer rows",
      "description": "Get compact market facts for one country: regulator, currency, counts, verification and market notes, without its insurer rows. Counts by class count entities, not licences: every company appears once, under the class its register row records, and byClass sums to total. A regulator’s own per-class licence tally is broader and will not match. Accepts a country slug or ISO alpha-2 code. Use list_insurers with country for paged entity records.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country": {
            "minLength": 1,
            "maxLength": 200,
            "type": "string",
            "description": "Country slug (e.g. \"canada\") or ISO alpha-2 code (e.g. \"CA\")."
          }
        },
        "required": [
          "country"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "untrustedContentHint": true
      },
      "reads": [
        "https://north-america.insurers.global/api/v1/countries.json"
      ]
    },
    {
      "name": "get_directory_info",
      "title": "Get dataset coverage, version and vocabularies",
      "description": "Get this edition’s dataset version, source dates, licence, coverage counts, endpoint URLs and filter vocabularies, plus compact country metadata. Use this to discover supported country, class, ownership, region and continent slugs before querying.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "untrustedContentHint": true
      },
      "reads": [
        "https://north-america.insurers.global/api/v1/meta.json",
        "https://north-america.insurers.global/api/v1/countries.json"
      ]
    },
    {
      "name": "get_insurer",
      "title": "Get one insurer’s record",
      "description": "Get one insurer by slug, including its parent group, class, regulator, source basis, register identifiers (LEI, national ID) where available, notes, sibling entities in the same group, and the reviewed profile (website, social links, founding year, stock-exchange listings with tickers, and Wikidata id) where one has been collected.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "minLength": 1,
            "maxLength": 200,
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "type": "string",
            "description": "Insurer slug, e.g. \"canada-federated-insurance-company-of-canada\"."
          }
        },
        "required": [
          "slug"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "untrustedContentHint": true
      },
      "reads": [
        "https://north-america.insurers.global/api/v1/insurers/{slug}.json"
      ]
    },
    {
      "name": "list_groups",
      "title": "List multi-country insurance groups",
      "description": "List insurance groups with licensed entities in two or more countries across North America, with their footprint.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "continent": {
            "minLength": 1,
            "maxLength": 200,
            "type": "string",
            "enum": [
              "north-america"
            ],
            "description": "Only groups with entities on this continent."
          },
          "iaig": {
            "type": "boolean",
            "description": "true: only groups controlled by an Internationally Active Insurance Group (IAIS register); false: only groups that are not."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "default": 25,
            "description": "Maximum number of results to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "default": 0,
            "description": "Results to skip, for paging."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "untrustedContentHint": true
      },
      "reads": [
        "https://north-america.insurers.global/api/v1/groups.json"
      ]
    },
    {
      "name": "list_iaigs",
      "title": "List Internationally Active Insurance Groups",
      "description": "List the Internationally Active Insurance Groups (IAIGs) in the IAIS public register with their group-wide supervisor and jurisdiction, and for each the directory groups, entities and countries it controls across North America.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "in_directory": {
            "type": "boolean",
            "description": "true: only IAIGs with at least one licensed entity in this directory; false: only those without."
          },
          "jurisdiction": {
            "minLength": 1,
            "maxLength": 200,
            "type": "string",
            "description": "Jurisdiction of the group-wide supervisor, e.g. \"France\" or \"United States\"."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "default": 25,
            "description": "Maximum number of results to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "default": 0,
            "description": "Results to skip, for paging."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "untrustedContentHint": true
      },
      "reads": [
        "https://north-america.insurers.global/api/v1/iaigs.json"
      ]
    },
    {
      "name": "get_group",
      "title": "Get one insurance group",
      "description": "Get one insurance group by slug: home market, type, continents and countries covered, the slug of every licensed entity in the directory, and their records in insurersDetail. A large group returns a first page of records; insurersDetailPage gives the total and the nextOffset to pass as offset.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "minLength": 1,
            "maxLength": 200,
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "type": "string",
            "description": "Group slug, e.g. \"aig\"."
          },
          "compact": {
            "type": "boolean",
            "default": false,
            "description": "true: return each insurer as a lean row (slug, name, country, class, groupSlug, verification) without notes, source text, identifiers or links, so more rows fit in one response. get_insurer returns the full record for any slug."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "default": 200,
            "description": "Maximum entity rows to return. Long lists also stop early to keep the response small; the page object reports total and nextOffset."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "default": 0,
            "description": "Entity rows to skip, for paging."
          }
        },
        "required": [
          "slug"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "untrustedContentHint": true
      },
      "reads": [
        "https://north-america.insurers.global/api/v1/groups/{slug}.json"
      ]
    },
    {
      "name": "get_footprint",
      "title": "Get a group’s licensed footprint by country",
      "description": "Licensed footprint: which legal entity of an insurance group is licensed in which country, with collected branches, EEA freedom-of-services passporting and GLEIF parents. Pass exactly one group slug (from list_groups, e.g. \"aig\") for the country × entity matrix, or an insurer slug for that entity alone. A large group returns its whole matrix with a first page of entity records; entitiesPage gives the nextOffset to pass as offset. Licence rows come from the directory registers; relationship enrichment comes from GLEIF and EIOPA. Null or empty enrichment means it has not been collected, not that no relationships exist.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "group": {
            "minLength": 1,
            "maxLength": 200,
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "type": "string",
            "description": "Group slug, e.g. \"aig\"."
          },
          "insurer": {
            "minLength": 1,
            "maxLength": 200,
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "type": "string",
            "description": "Insurer slug, when asking about one entity."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "default": 200,
            "description": "Maximum entity rows to return. Long lists also stop early to keep the response small; the page object reports total and nextOffset. Group footprints only."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "default": 0,
            "description": "Entity rows to skip, for paging. Group footprints only."
          }
        },
        "oneOf": [
          {
            "required": [
              "group"
            ]
          },
          {
            "required": [
              "insurer"
            ]
          }
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "untrustedContentHint": true
      },
      "reads": [
        "https://north-america.insurers.global/api/v1/footprint/{slug}.json",
        "https://north-america.insurers.global/api/v1/insurers/{slug}.json"
      ]
    },
    {
      "name": "list_regulators",
      "title": "List insurance regulators",
      "description": "List the insurance supervisory authority for every covered country: name, acronym, website, currency, notes and the register source used for verification. Returns every match unless limit or offset is supplied (when paging, limit defaults to 25 and is capped at 200); a long result stops early to keep the response small and reports nextOffset.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "continent": {
            "minLength": 1,
            "maxLength": 200,
            "type": "string",
            "enum": [
              "north-america"
            ],
            "description": "Continent slug."
          },
          "region": {
            "minLength": 1,
            "maxLength": 200,
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "type": "string",
            "description": "Optional region slug, e.g. \"canada\", \"united-states\", \"bermuda\"."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "default": 25,
            "description": "Maximum number of results to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "default": 0,
            "description": "Results to skip, for paging."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "untrustedContentHint": true
      },
      "reads": [
        "https://north-america.insurers.global/api/v1/regulators.json"
      ]
    },
    {
      "name": "resolve_former_name",
      "title": "Resolve a former insurer name to today’s entity",
      "description": "Resolve a company name that is no longer in use to the insurer listed today. Use this when a policy, certificate or older document names an insurer that does not appear in search_insurers — the company may have been renamed, merged or delisted. Returns what happened, when, and the current entity where one exists. A renamed, acquired, merged or transferred insurer keeps its licence, so its policies continue with the successor; only \"failed\" means the company failed.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "minLength": 2,
            "maxLength": 200,
            "type": "string",
            "description": "The former company name, or part of it, as printed on the document."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "default": 25,
            "description": "Maximum number of results to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "default": 0,
            "description": "Results to skip, for paging."
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "untrustedContentHint": true
      },
      "reads": [
        "https://north-america.insurers.global/api/v1/former.json"
      ]
    },
    {
      "name": "search",
      "title": "Search the directory for citable records",
      "description": "Search licensed insurers, insurance groups, countries and former company names across North America. Returns up to 20 results, each with an id to pass to fetch and the insurers.global page URL to cite. Provided for ChatGPT deep research and company knowledge; for ordinary questions prefer search_insurers, which returns slugs, record types and paging.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "minLength": 1,
            "maxLength": 200,
            "type": "string",
            "description": "Company, group or country name, or part of one."
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "description": "Search results with ids for fetch and canonical page URLs for citation; failures carry error, code and retryable.",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Pass to fetch."
                    },
                    "title": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string",
                      "description": "Canonical insurers.global page."
                    }
                  },
                  "required": [
                    "id",
                    "title",
                    "url"
                  ]
                }
              }
            },
            "required": [
              "results"
            ]
          },
          {
            "type": "object",
            "properties": {
              "error": {
                "type": "string"
              },
              "code": {
                "type": "string"
              },
              "retryable": {
                "type": "boolean"
              }
            },
            "required": [
              "error",
              "code",
              "retryable"
            ]
          }
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "untrustedContentHint": true
      },
      "reads": [
        "https://north-america.insurers.global/api/v1/search-index.json",
        "https://north-america.insurers.global/api/v1/countries.json"
      ]
    },
    {
      "name": "fetch",
      "title": "Fetch one directory record as citable text",
      "description": "Fetch one record by an id returned from search (\"insurer:<slug>\", \"group:<slug>\", \"country:<slug>\", \"former:<slug>\"), e.g. \"insurer:canada-federated-insurance-company-of-canada\". Returns the record as text with its regulator, class, verification level and register source, the page URL to cite, and the dataset version and licence in metadata. Absence from the directory does not establish absence of a licence. Provided for ChatGPT deep research and company knowledge; for ordinary questions prefer get_insurer, get_group or get_country_summary.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "maxLength": 200,
            "type": "string",
            "description": "An id from search, in the form \"<type>:<slug>\"."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "description": "One directory record as citable text, with its provenance in metadata; failures carry error, code and retryable.",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "text": {
                "type": "string",
                "description": "A labelled summary, the verification note and the full record as JSON."
              },
              "url": {
                "type": "string",
                "description": "Canonical insurers.global page."
              },
              "metadata": {
                "type": "object",
                "description": "dataset, version, verified, licence, verificationNote, type, slug, api, and the record’s country and verification level where it has them."
              }
            },
            "required": [
              "id",
              "title",
              "text",
              "url",
              "metadata"
            ]
          },
          {
            "type": "object",
            "properties": {
              "error": {
                "type": "string"
              },
              "code": {
                "type": "string"
              },
              "retryable": {
                "type": "boolean"
              }
            },
            "required": [
              "error",
              "code",
              "retryable"
            ]
          }
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "untrustedContentHint": true
      },
      "reads": [
        "https://north-america.insurers.global/api/v1/insurers/{slug}.json",
        "https://north-america.insurers.global/api/v1/groups/{slug}.json",
        "https://north-america.insurers.global/api/v1/countries.json",
        "https://north-america.insurers.global/api/v1/former/{slug}.json"
      ]
    }
  ]
}