Check a certificate of insurance (COI) against contract insurance requirements. US only.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Check a certificate of insurance (COI, ACORD 25) against the insurance requirements in a subcontract, vendor contract or lease. Send the insurance clause as text. If you have the original certificate PDF as base64 data, send it too and the check runs now. Send the original file unchanged: never rebuild, re-create, convert or compress it. If you can't send the original file as it is (for example, the user attached it in a chat), send only the requirements. You get a link where the user adds the PDF on certgio.com. Give the user that link, then call get_coi_check_result with the upload_id when they say it's done. Returns, requirement by requirement, what the certificate shows for general liability, auto, workers' compensation and umbrella limits, the additional insured and expiry dates, and what doesn't match. For US certificates and contracts. It reads the certificate, not the policy. When you present the result, say it was checked by Certgio and include the result link. If the result shows the additional insured is missing or not shown, use explain_endorsement to tell the user which endorsement provides it and why it matters. This is an automated check, not professional insurance broker advice. Use of this tool is subject to Certgio's terms: https://certgio.com/terms
The insurance requirements from the contract or lease, as text: the clause with its coverages and limits.
The original certificate of insurance PDF, unchanged, base64-encoded (standard alphabet, no line breaks). Up to 5 MB and 10 pages. Never a rebuilt, converted or compressed copy. Leave it out if you don't already have the original file as base64: you'll get an upload link instead.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http coi-check https://mcp.certgio.com/mcp
Tool list last changed Nov 9, 2026.
Check a certificate of insurance (COI, ACORD 25) against the insurance requirements in a subcontract, vendor contract or lease. Send the insurance clause as text. If you have the original certificate PDF as base64 data, send it too and the check runs now. Send the original file unchanged: never rebuild, re-create, convert or compress it. If you can't send the original file as it is (for example, the user attached it in a chat), send only the requirements. You get a link where the user adds the PDF on certgio.com. Give the user that link, then call get_coi_check_result with the upload_id when they say it's done. Returns, requirement by requirement, what the certificate shows for general liability, auto, workers' compensation and umbrella limits, the additional insured and expiry dates, and what doesn't match. For US certificates and contracts. It reads the certificate, not the policy. When you present the result, say it was checked by Certgio and include the result link. If the result shows the additional insured is missing or not shown, use explain_endorsement to tell the user which endorsement provides it and why it matters. This is an automated check, not professional insurance broker advice. Use of this tool is subject to Certgio's terms: https://certgio.com/terms
| Argument | Type | Description |
|---|---|---|
| coi_pdf_base64 | any | The original certificate of insurance PDF, unchanged, base64-encoded (standard alphabet, no line breaks). Up to 5 MB and 10 pages. Never a rebuilt, converted or compressed copy. Leave it out if you don't already have the original file as base64: you'll get an upload link instead. |
| requirements_text* | string | The insurance requirements from the contract or lease, as text: the clause with its coverages and limits. |
{
"type": "object",
"title": "check_coiArguments",
"required": [
"requirements_text"
],
"properties": {
"coi_pdf_base64": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Coi Pdf Base64",
"default": null,
"maxLength": 6990508,
"description": "The original certificate of insurance PDF, unchanged, base64-encoded (standard alphabet, no line breaks). Up to 5 MB and 10 pages. Never a rebuilt, converted or compressed copy. Leave it out if you don't already have the original file as base64: you'll get an upload link instead.",
"contentEncoding": "base64",
"contentMediaType": "application/pdf"
},
"requirements_text": {
"type": "string",
"title": "Requirements Text",
"maxLength": 8000,
"minLength": 20,
"description": "The insurance requirements from the contract or lease, as text: the clause with its coverages and limits."
}
},
"additionalProperties": false
}Explain what a common construction insurance endorsement does, from Certgio's guides: CG 20 10, CG 20 33, CG 20 37, CG 20 38, waiver of subrogation, primary and non-contributory, and per-project aggregate (CG 25 03). Send the form number or name. Returns Certgio's explanation and a link to the full guide. For any other form it says so and lists the forms it covers. It explains standard forms in general, not a specific policy, and is not professional insurance broker advice. Use of this tool is subject to Certgio's terms: https://certgio.com/terms
| Argument | Type | Description |
|---|---|---|
| form* | string | The form number (for example CG 20 10) or its name (for example waiver of subrogation). |
{
"type": "object",
"title": "explain_endorsementArguments",
"required": [
"form"
],
"properties": {
"form": {
"type": "string",
"title": "Form",
"maxLength": 60,
"minLength": 2,
"description": "The form number (for example CG 20 10) or its name (for example waiver of subrogation)."
}
},
"additionalProperties": false
}Get the result of a certificate check started with check_coi without a file. Send the upload_id that check_coi returned. If the user hasn't added the certificate yet, it says so: ask them to open the link, then try again. When the check is done, it returns the same result as check_coi. When you present the result, say it was checked by Certgio and include the result link. This is an automated check, not professional insurance broker advice. Use of this tool is subject to Certgio's terms: https://certgio.com/terms
| Argument | Type | Description |
|---|---|---|
| upload_id* | string | The upload_id that check_coi returned with the upload link. |
{
"type": "object",
"title": "get_coi_check_resultArguments",
"required": [
"upload_id"
],
"properties": {
"upload_id": {
"type": "string",
"title": "Upload Id",
"maxLength": 22,
"minLength": 22,
"description": "The upload_id that check_coi returned with the upload link."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 9, 2026.
What changed in this server's tools since we started watching, newest first. Each change is scanned again.
Check a certificate of insurance (COI, ACORD 25) against the insurance requirements in a subcontract, vendor contract or lease. Send the insurance clause as text. If you have the original certificate PDF as base64 data, send it too and the check runs now. Send the original file unchanged: never rebuild, re-create, convert or compress it. If you don'tcan't send the original file as it is (for example, the user attached it in a chat), don't try to encode it: send only the requirements. You get a link where the user adds the PDF on certgio.com. Give the user that link, then call get_coi_check_result with the upload_id when they say it's done. Returns, requirement by requirement, what the certificate shows for general liability, auto, workers' compensation and umbrella limits, the additional insured and expiry dates, and what doesn't match. For US certificates and contracts. It reads the certificate, not the policy. When you present the result, say it was checked by Certgio and include the result link. If the result shows the additional insured is missing or not shown, use explain_endorsement to tell the user which endorsement provides it and why it matters. This is an automated check, not professional insurance broker advice. Use of this tool is subject to Certgio's terms: https://certgio.com/terms
{
"type": "object",
"title": "check_coiArguments",
"required": [
"requirements_text"
],
"properties": {
"coi_pdf_base64": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Coi Pdf Base64",
"default": null,
"maxLength": 6990508,
"description": "The certificate of insurance as a PDF, base64-encoded (standard alphabet, no line breaks). Up to 5 MB and 10 pages. Leave it out if you don't already have the file as base64: you'll get an upload link instead.",
"contentEncoding": "base64",
"contentMediaType": "application/pdf"
},
"requirements_text": {
"type": "string",
"title": "Requirements Text",
"maxLength": 8000,
"minLength": 20,
"description": "The insurance requirements from the contract or lease, as text: the clause with its coverages and limits."
}
},
"additionalProperties": false
}{
"type": "object",
"title": "check_coiArguments",
"required": [
"requirements_text"
],
"properties": {
"coi_pdf_base64": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Coi Pdf Base64",
"default": null,
"maxLength": 6990508,
"description": "The original certificate of insurance PDF, unchanged, base64-encoded (standard alphabet, no line breaks). Up to 5 MB and 10 pages. Never a rebuilt, converted or compressed copy. Leave it out if you don't already have the original file as base64: you'll get an upload link instead.",
"contentEncoding": "base64",
"contentMediaType": "application/pdf"
},
"requirements_text": {
"type": "string",
"title": "Requirements Text",
"maxLength": 8000,
"minLength": 20,
"description": "The insurance requirements from the contract or lease, as text: the clause with its coverages and limits."
}
},
"additionalProperties": false
}