ComplySub MCP server
Connect Claude, ChatGPT, Gemini, Grok, Cursor, VS Code, and other AI assistants to ComplySub over MCP. ComplySub checks subcontractors' insurance certificates and contractor licenses against each general contractor's or property manager's requirements, flags gaps and expirations, reminds vendors and their agents, and gives subcontractors one compliance packet to share.
- Server URL:
https://complysub.agntwrk.com/mcp - Transport: Streamable HTTP
- Sign-in: OAuth 2.1 in your browser on first use; no API key
Organizations and plans
ComplySub is organized by organization: a general contractor or property manager, or a subcontractor. When you approve the sign-in, the assistant is connected to the organization that is active in your account at that moment, and the sign-in page names it. To use another organization, switch to it in the dashboard and connect again.
Assistant access is part of the Pro and Business plans for general contractors and the Subs Pro plan for subcontractors. On other plans every tool answers with a link to upgrade. Tools act with your membership: if you are removed from the organization the connection stops working.
send_update_request is the only tool that reaches outside the app: it emails a vendor and its insurance agent, needs an owner or admin, and is limited to one request per vendor per 24 hours. draft_update_request shows the text first and sends nothing. Certificate values are read from documents by software and are not a legal opinion.
Connect your assistant
Claude Code
- Add the server. Use
--scope userto make it available in every project, or--scope projectto write it to.mcp.jsonfor your team. - Run
/mcpinside Claude Code and follow the browser sign-in (or runclaude mcp login complysub).
claude mcp add --transport http complysub https://complysub.agntwrk.com/mcpVendor documentation: code.claude.com/docs/en/mcp
Claude Desktop, claude.ai on the web, and Claude mobile
- Open Customize, then Connectors.
- Click +, then Add custom connector.
- Enter the server URL https://complysub.agntwrk.com/mcp and click Add, then sign in when asked.
- On Team and Enterprise plans an owner adds it first under Organization settings, then Connectors; members then sign in individually.
Anthropic connects to the server from its own network, so the URL must be reachable from the public internet. Connectors you add on the web also appear in the mobile apps. Custom connectors are available on all plans; the free plan allows one.
Vendor documentation: support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp
ChatGPT
- On the web, open Settings, then Security and login, and turn on Developer mode.
- In the Plugins section select the plus button to create a developer-mode app for a remote MCP server.
- Enter the server URL https://complysub.agntwrk.com/mcp and choose OAuth for authentication, then sign in when asked.
Developer mode is offered on paid web plans; your workspace admin may need to enable it. Write actions ask for confirmation by default.
Vendor documentation: developers.openai.com/api/docs/guides/developer-mode
OpenAI API
- Add an
mcptool to a Responses API request. - The API does not run the OAuth sign-in: your application obtains an access token for this server and passes it as
authorizationon every request.
{
"type": "mcp",
"server_label": "complysub",
"server_url": "https://complysub.agntwrk.com/mcp",
"authorization": "<access token>"
}Vendor documentation: developers.openai.com/api/docs/guides/tools-connectors-mcp
OpenAI Codex CLI
- Add the server to
~/.codex/config.toml. - Run
codex mcp login complysuband finish the sign-in in the browser.
[mcp_servers.complysub]
url = "https://complysub.agntwrk.com/mcp"codex mcp login complysubVendor documentation: learn.chatgpt.com/docs/extend/mcp?surface=cli
Gemini CLI
- Add the server.
- Run
/mcp auth complysubinside Gemini CLI and finish the sign-in in the browser.
gemini mcp add --transport http complysub https://complysub.agntwrk.com/mcpVendor documentation: geminicli.com/docs/tools/mcp-server/
Gemini app
- On gemini.google.com, open Settings, then Connected Apps.
- Under Custom apps choose Add a custom app.
- Enter the server URL https://complysub.agntwrk.com/mcp, then continue and sign in.
Google limits custom apps to personal Google accounts for adults in the US; work and school accounts are not supported. Connections made on the web also work in the mobile app.
Vendor documentation: support.google.com/gemini/answer/17209137
Grok and the xAI API
- In the Grok app, open grok.com/connectors, choose New Connector, then Custom, enter the server URL, and complete the sign-in.
- In the xAI API, add an
mcptool to a Responses API request athttps://api.x.ai/v1/responses. Pass an access token for this server asauthorization; the API does not run the sign-in.
{
"type": "mcp",
"server_label": "complysub",
"server_url": "https://complysub.agntwrk.com/mcp",
"authorization": "<access token>"
}Vendor documentation: docs.x.ai/docs/guides/tools/remote-mcp-tools, docs.x.ai/grok/connectors
Cursor
- Use the install link, or add the server to
~/.cursor/mcp.json(all projects) or.cursor/mcp.json(this project). - Complete the sign-in if Cursor asks for it.
{
"mcpServers": {
"complysub": {
"url": "https://complysub.agntwrk.com/mcp"
}
}
}Vendor documentation: cursor.com/docs/context/mcp/install-links
VS Code and GitHub Copilot
- Use the install link, run the command, or add the server to
.vscode/mcp.json. - Start the server from the MCP view or the file's inline Start action and complete the sign-in.
{
"servers": {
"complysub": {
"type": "http",
"url": "https://complysub.agntwrk.com/mcp"
}
}
}code --add-mcp '{"name":"complysub","type":"http","url":"https://complysub.agntwrk.com/mcp"}'Vendor documentation: code.visualstudio.com/docs/copilot/customization/mcp-servers
Any other MCP client
- Add a remote (HTTP) MCP server with the URL https://complysub.agntwrk.com/mcp.
- It speaks Streamable HTTP and signs in with OAuth 2.1 (authorization code with PKCE S256, dynamic client registration). Clients that follow the MCP authorization spec discover everything from the URL.
- To test a connection, run the MCP Inspector and choose the Streamable HTTP transport.
npx @modelcontextprotocol/inspector --server-url https://complysub.agntwrk.com/mcp --transport httpVendor documentation: modelcontextprotocol.io/docs/tools/inspector
Tools
healthread-onlyReport that the app is up, its name, and the enabled features.
whoamiread-onlyReturn the signed-in user (id, email, name) and the scope (store or tenant) every other tool acts on. Use it to confirm which account an answer is about.
list_findingsread-onlyList the findings (problems the checks found) for this store, newest first. Filter by status, severity, or check id; page with offset. Use findings_summary first for the big picture and get_finding for one finding's evidence.
get_findingread-onlyGet one finding in full: its evidence, dates, what its check looks for and why it matters, and links to where it can be fixed. Use after list_findings when you need detail.
findings_summaryread-onlyCounts of this store's findings: all by status, and the open ones by severity and by check. Start here to see how bad things are before listing anything.
list_checksread-onlyList the checks this app can run: id, what each looks for, the plan that unlocks it, and whether it is enabled for this store (a check turned off in the store's settings is not). Use to find a valid check id for run_check or list_findings.
run_checkchanges dataRun one check now for this store and update its findings: new problems are created, fixed ones resolved. Returns how many findings were created, seen again, and resolved. Use run_scan to run every enabled check; do not call this repeatedly.
run_scanchanges dataRun every enabled check now for this store (as the dashboard's Run checks now button does) and return how many findings were created, how many are reported in total, and how many checks failed. Can take a while; use run_check for one check.
resolve_findingchanges dataMark a finding resolved. It reopens by itself if a later scan sees the problem again. Use after the problem is fixed or accepted.
snooze_findingchanges dataHide an open finding for a number of days (1 to 365); it reopens after that. Use for problems that will be dealt with later. A resolved finding cannot be snoozed.
reopen_findingchanges dataSet a snoozed or resolved finding back to open. Use when a problem was closed by mistake or is back.
list_vendorsread-onlyList this organization's vendors and subcontractors with their open finding counts and when their latest certificate of insurance expires. Filter by project, status, or whether they have open findings; page with offset. Use get_vendor_compliance for one vendor in detail.
get_vendor_complianceread-onlyGet one vendor's compliance picture: the requirement it is held to, the latest certificate of insurance (policies, limits, endorsements, expirations), contractor licenses, and open findings. Certificate values are read by software and not a legal opinion.
list_projectsread-onlyList this organization's projects with the number of vendors on each and how many of them have open findings. Use the project id to filter list_vendors.
list_expiringread-onlyList insurance policies on the latest certificate that expire within a number of days (already expired ones included), soonest first. A general contractor sees its active vendors' policies; a subcontractor sees its own.
draft_update_requestread-onlyWrite the email that asks a vendor and its insurance agent for an updated certificate, listing exactly what is missing or out of date from the vendor's open findings. Returns the subject, body, and recipients; nothing is sent.
send_update_requestchanges dataEmail the update request to the vendor and its insurance agent (the text draft_update_request returns) and record it in the vendor's history. Owners and admins only. Limited to one request per vendor per 24 hours and 20 per organization per day.
get_packetread-onlyGet this subcontractor's packet: its documents, the latest certificate of insurance in detail, its contractor licenses, and, for each request from a general contractor that is still open or met, whether the packet is ready or what is missing. Certificate values are read by software and not a legal opinion.
list_requestsread-onlyList the requests general contractors made of this subcontractor, with the requirements each one sets (coverage limits, endorsements, license, minimum days of validity) and how many open findings it has. Use get_packet for readiness against the current packet.
Prompts
triage_findingsSummarize the open findings by severity and propose an order of work.
explain_finding(id)Explain one finding in plain words and say how to fix it.
Things to ask
- Who am I signed in as, and which store are you looking at?
- How many open findings do I have, and which are the most severe?
- Show me the evidence for the highest-severity open finding and tell me how to fix it.
- Run all checks and tell me what is new.
- Snooze the low-severity findings for two weeks.
- Which of my vendors have open findings, worst first?
- Show me the compliance picture for the electrician on the Maple Street project.
- Which certificates expire in the next 30 days?
- Draft an email asking the roofing vendor for an updated certificate.
- Is my packet ready for the contractor that sent me a request, and what is missing?