coi

INSURANCE

COI REVIEW

AI TOOLS

Search docs...

MCP Server

MCP Server

Connect any AI agent to 1099Policy through the Model Context Protocol.

Polly is the 1099Policy MCP server. It lets an AI agent work with your live 1099Policy data — the same contractors, jobs, quotes, assignments, policies, certificates, and invoices your developers reach through the REST API — using natural language. Any MCP-compatible client works: Claude Desktop, Claude Code, Cursor, VS Code, ChatGPT, Continue, Cline, or Zed.

Polly is hosted by 1099Policy. There is nothing to install, no package to download, and no server to run — you point your client at one URL and sign in:


https://mcp.1099policy.com/mcp

Connecting your agent

The first time your agent calls Polly, your browser opens and asks you to authorize the connection. Your client registers itself automatically, so there is no client ID to create. Paste your API key on that screen and approve once — the connection persists, and your client refreshes its own access quietly from then on.

If you work across more than one 1099Policy organization, paste one key per line and give each a name:


t9sk_live_…  Acme Corp
t9sk_live_…  Northwind

Polly then holds all of them and you switch between them in conversation — "switch to Northwind". Everything you ask acts on the organization you are currently on, and Polly will tell you which one that is.

Claude Code

Add Polly with a single command, then authenticate when prompted:

bash
claude mcp add --transport http 1099policy https://mcp.1099policy.com/mcp

Claude Desktop

Go to Settings → Connectors → Add custom connector, name it 1099policy, and paste the server URL https://mcp.1099policy.com/mcp. Claude walks you through the browser sign-in.

Cursor

Install in Cursor with one click, or add the server to ~/.cursor/mcp.json yourself:

json
{
  "mcpServers": {
    "1099policy": {
      "url": "https://mcp.1099policy.com/mcp"
    }
  }
}

VS Code

bash
code --add-mcp '{"name":"1099policy","url":"https://mcp.1099policy.com/mcp"}'

Or add the same entry to .vscode/mcp.json in your workspace.

ChatGPT

In Settings → Connectors, create a custom connector with the URL https://mcp.1099policy.com/mcp and OAuth authentication. ChatGPT discovers the authorization server automatically. (Custom connectors require a plan that supports them.)

Other clients

Any client that speaks streamable HTTP takes the standard mcpServers shape:

json
{
  "mcpServers": {
    "1099policy": {
      "url": "https://mcp.1099policy.com/mcp"
    }
  }
}

Authentication

Polly speaks OAuth 2.1 with PKCE and Dynamic Client Registration, which is what the sign-in flow above uses. Its discovery documents live at /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server, so a compliant client configures itself from the URL alone.

Signing in through the browser grants read access, and Polly serves such a session the read tools only — a good default for an agent you let run on its own.

For headless use — a server-side agent, a scheduled job, or CI, where no browser is available — present a 1099Policy secret key as a bearer token instead. Create one in the dashboard under Developers → API keys:

json
{
  "mcpServers": {
    "1099policy": {
      "url": "https://mcp.1099policy.com/mcp",
      "headers": { "Authorization": "Bearer t9sk_your_key" }
    }
  }
}

An autonomous agent can also call Polly directly over HTTP — the endpoint accepts standard MCP JSON-RPC:

bash
curl https://mcp.1099policy.com/mcp \
  -H "Authorization: Bearer t9sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "checkCoverage",
      "arguments": { "contractor_email": "sam@example.com" }
    }
  }'

A few practices worth keeping:

  • Sign in through the browser when the agent only needs to look things up. That session cannot reach the tools that bind or end coverage, so an agent you leave running cannot change anything.
  • Keep keys in an environment variable or secret store — never in client-side code, agent prompts, or a public repository.
  • Keep humans in the loop on write tools. Most MCP clients can require confirmation before a tool runs; leave that on for anything marked Write below.
  • Be deliberate about which MCP servers you run alongside Polly. A malicious server, or poisoned content from one, can attempt to steer your agent's tool calls elsewhere.

Tools

ResourceToolWhat it doesAccess
CoveragecheckCoverageVerify whether a contractor — or the whole account — has active coverage, and of which types.Read
CoveragefindCoverageGapsSweep every contractor on the account and return the ones with no active coverage.Read
CoveragelistActivePoliciesList active policies with their coverage types and effective/expiration dates.Read
CertificatesgetCertificateFetch one contractor-uploaded certificate by id, with its review status and results — also the poll for "has the review finished?".Read
CertificateslistCertificatesList contractor-provided COIs with their review results — which requirements passed or failed, and why.Read
CertificatessubmitCertificateSubmit a contractor's own COI for asynchronous evaluation against your insurance requirements.Write
ContractorslistContractorsList contractors on the account, or find one by id, email, or name.Read
ContractorscreateContractorAdd a contractor to the account with their contact and work details.Write
ContractorscreateLoginLinkGenerate a one-time login link so a contractor can access their own portal.Write
JobslistJobsList the account's jobs, or find one by id or name, with its category code and coverage requirements.Read
JobscreateJobCreate a job with a work category, location, and required coverage types.Write
JobslistCategoryCodesLook up 1099Policy's approved work classification codes when creating or matching jobs.Read
QuotesgetQuotePrice coverage for a contractor on a job and check eligibility, without binding.Read-mostly
QuoteslistQuotesList previously generated quotes with their rates, eligibility, and coverage window.Read
AssignmentslistAssignmentsList assignments, each tying a contractor to a job over a coverage window.Read
AssignmentsgetAssignmentCertificateReturn the signed PDF download links for the certificate of insurance 1099Policy issued when the assignment's coverage was bound.Read
AssignmentsbindAssignmentPlace a contractor on a job and bind their insurance coverage.Write
AssignmentsextendAssignmentExtend an active assignment's coverage end date.Write
AssignmentscancelAssignmentCancel an assignment and end its coverage.Write
EnrollmentlistApplySessionsSee who has been sent an application and how far each has got — still outstanding, completed, or expired, and how many days each has been waiting.Read
EnrollmentgetApplySessionCheck one application in detail — its current step, whether it expired, and whether a contractor enrolled.Read
EnrollmentcreateApplySessionStart an application session and return the link a contractor uses to opt in and complete enrollment.Write
BillinglistInvoicesList invoices with their premium due, gross pay, and pay-cycle window.Read
AccountlistAccountsList the 1099Policy organizations this connection can act on, and show which one is active.Read
AccountuseAccountSwitch which connected organization the other tools act on.Read
AccountlistEntitiesList the business entities on the account (for organizations that run more than one).Read
AccountgetAuditTrailRecent events from the account's audit trail — policies bound, assignments created, invoices issued.Read

getQuote is labeled read-mostly because it creates a quote record you can retrieve later with listQuotes, but it binds no coverage and starts no billing.

The certificate tools line up with the certificate endpoints: getCertificate, listCertificates and submitCertificate all work with contractor-uploaded COIs (/files/certificates). A COI 1099Policy itself issues has no endpoint of its own — it is produced by binding and lives on the assignment record — which is why fetching it is an assignment read: getAssignmentCertificate.

Read and write access

Signing in through the browser grants read scope, and Polly serves that session the read tools only — an agent you authorized in a browser can look things up but is not offered the tools that change anything. Every tool marked Write is served only to a caller presenting an API key directly as a bearer token.

The write tools map to real-world consequences worth naming: bindAssignment binds a policy, may issue certificates, and can start billing according to your account's configuration; cancelAssignment ends real coverage; createApplySession and createLoginLink send links to real contractors. If you only want to see pricing, call getQuote first — it returns net rates and eligibility without binding anything.

Note that quotes return rates, applied to the wage, rather than a premium amount. Polly will tell you the rate and that the final premium depends on the wage; it will not quote you a figure the quote does not contain.

Talking to Polly

Ask in plain language; Polly resolves the request to a typed tool call.

Which organizations am I connected to?

lists them and tells you which one you are on.

Switch to Northwind, then show me who has no coverage.

moves to that organization and answers there. Every tool acts on the active organization only, so this is how you keep two clients' data apart.

Does the videographer we booked in PA have active WC and GL for Saturday's shoot?

becomes a coverage check for that contractor, in that state, on that date.

Who on the account has no active coverage right now?

sweeps every contractor and returns the ones with nothing active — not just the first page.

What would it cost to cover Rivera, the freelance set designer, on the Denver install through end of quarter?

becomes a quote — priced, eligibility-checked, and bound to nothing.

Which freelancers still haven't finished their insurance application, and how long have they been sitting on it?

returns the outstanding applications, longest wait first, with the days on each. This is the question behind a scheduled nudge: ask it on a timer and you have a chase list.

Pull the certificate of insurance for Rivera's Denver install.

returns the signed PDF download links for the COI 1099Policy issued on that assignment (getAssignmentCertificate).

Alvarez uploaded his own COI — did it meet our GL requirements?

returns the certificate's review results, rule by rule: what passed, what failed, and the reviewer's notes.

With an API key, Polly can act as well as answer — and a well-behaved client asks you to confirm before each write tool runs:

Rivera accepted — bind her coverage for the Denver install, March 3 through 14.

binds the assignment, and coverage (and billing, per your account's configuration) begins.

Binding attaches coverage a contractor already holds. Someone who has never enrolled has nothing to attach, so Polly will offer to send them an application link instead of attempting a bind that cannot succeed.

The mural ran long. Extend Chen's coverage through the 15th.

extends the assignment's coverage window — no re-quote, no new application.

Send Priya an application link for the copywriting engagement.

starts an application session and returns the opt-in link to pass along.

And for the back office:

What were we invoiced for coverage in June?

pulls the month's invoices with their amounts and pay-cycle windows.

When a request is ambiguous — two contractors share a name, or a date is missing — Polly returns a structured error your agent can reason about and ask you to clarify, rather than guessing. When something it needs has not been set up — an account with no work category codes, say — it says so rather than guessing a value the API will reject.

Supported clients

Any MCP-compatible client, including Claude Desktop, Claude Code, Cursor, VS Code, ChatGPT, Continue, Cline, Zed, and local agent hosts. The same URL works everywhere; configuration is per-client, so each tool can hold its own connection.

Questions

If you have questions as you connect an agent to 1099Policy, email us at integration@1099policy.com.

Was this page helpful?

Yes

No

Was this page helpful?

Yes

No

Troubleshooting

© Copyright 2026. All rights reserved.

© Copyright 2026. All rights reserved.

© Copyright 2026. All rights reserved.

© Copyright 2026. All rights reserved.