add_location
ChatGPTAdd a new location to an existing application. locationDetails MUST include address (addressLine1, city, state, zip), and for WC at least one employeeInformation entry with jobCodeExtendedId + numFullTimeEmployees + numPartTimeEmployees + fullTimeEmployeesPayroll + partTimeEmployeesPayroll. For BOP, include buildingInformation (constructionTypeCode, totalStories, and coverages — see the locationDetails field). get_application_fields_config reports which location fields the selected carriers and policy types require. Returns the new locationId in the response.
check_appetite
ChatGPTCheck which of the supplied carriers will quote a given business based on policyType + state + NAICS / SIC code. Returns IN_APPETITE / MAYBE_IN_APPETITE / OUT_OF_APPETITE per carrier. Use BEFORE create_application to filter to carriers that will actually quote.
create_application
ChatGPTStart a new insurance application for a business. Every application starts from businessName (the insured business's legal/DBA name, 1-128 chars) plus optional primaryAddress / primaryContact; CoverForce creates the insured-business record automatically under the logged-in agent's agency. Re-quoting a business you have quoted before is simply a new call with the same businessName. Also required: policyTypes (e.g. ["BOP"]) and carriersSelected (e.g. ["LIBERTY_MUTUAL"]): carriersSelected is the user's own choice among the in-appetite carriers reported by get_carriers and check_appetite; the tool does not choose carriers. Returns { applicationId, policyTypes, carriersSelected, applicationStatus }; no account identifier is part of the exchange. Later edits go through update_application (a full PUT) and the location tools.
get_agent_profile
ChatGPTResolve the full agent-profile context for the active MCP session (or for a specified agentProfileId): agencyId, agencyName, agencyNetworkId, agencyNetworkName, and role. Use it when a tool needs agencyNetworkId or agencyId (for example get_broker_codes): those values are not in the session by default and this profile is their source, so the user is never asked for them. With no arguments, this returns the profile for the logged-in agent's active session.
get_application
ChatGPTFetch the full IApplicationInfo for an applicationId, including applicationStatus, basicBusinessDetails, companyStructure, policyDetails, underwritingDetails, statementDetails, locationDetails. update_application is a full PUT that needs the current applicationStatus and sections from this response, so this is the source of truth before any edit; it also answers questions about the current state of an application at any time. The response omits the account identifier, owner ssn and dateOfBirth values, carrier login references, and audit timestamps: none of them is needed for an update and CoverForce keeps the stored values when a section is echoed back without them.
get_application_fields_config
ChatGPTReturns the required / optional / hidden field configuration for an application based on its selected carriers and policy types. Use this RIGHT AFTER create_application to know which fields you must collect from the user before submit_for_quotes (e.g. some carriers require fein, dba, building info, prior loss history, etc).
get_broker_codes
ChatGPTFetch the broker codes (carrier appointments) an agency, network, or agent can quote with. Provide exactly one of: agencyId (agency-scoped), agencyNetworkId (network-scoped), or agentId (per-agent default). Each entry is { carrierId, configurationName, brokerConfigurationId, isEnabled }; broker codes are per carrier, not per policy type. Assign one enabled entry per carrier to the application via update_application brokerConfiguration just before submit_for_quotes (workflow Step 9a). Only those fields are returned: the credentials and contact details behind an appointment stay in CoverForce. If a selected carrier has no enabled entry, the agency has no broker code on file for it; appointments are added in the agent portal (link in the workflow guide), and this connector never accepts codes or credentials as input.
get_carrier_industry_codes
ChatGPTReturns carrier-specific industry / class codes for a given carrier + policy type (optionally filtered by sicCode, state, or PRIMARY/SECONDARY category). Use BEFORE add_location for BOP (some carriers require an industry classification per location) and BEFORE submit_for_quotes to populate basicBusinessDetails.carrierIndustryCodes via update_carrier_industry_codes.
get_carrier_owner_officer_titles
ChatGPTReturns the carrier-specific equivalent(s) of a CF owner/officer title (e.g. CF PRESIDENT mapped to carrier-X "PRES" / carrier-Y "OFFICER"). Use BEFORE submit_for_quotes when a carrier requires its own title taxonomy rather than the CF generic values.
get_carriers
ChatGPTReturns the full list of carriers CoverForce supports (carrierId, displayName, supported policyTypes, states). Use to translate carrier names mentioned by the user into Carrier enum identifiers expected by check_appetite / create_application.
get_cf_owner_officer_titles
ChatGPTReturns the list of valid CoverForce owner/officer titles for a given legal entity type and US state (e.g. PRESIDENT, MEMBER, PARTNER). Use this to pick a value for companyStructure.ownershipDetails.owners[].title before sending update_application. Title validity depends on both legalEntityType and state.
get_industry_code_details_for_carrier
ChatGPTReturns carrier-specific dependent / sub-codes (and, where the carrier uses them, building coverage class ids) for a parent classCodeId. Call it for any carrier whose selected industry code from get_carrier_industry_codes reports dependent sub-codes, or whose field config marks a building coverage class id as REQUIRED_FOR_QUOTE or REQUIRED_FOR_BIND, before submit_for_quotes.
get_job_codes_by_industry
ChatGPTReturns the WC job codes whitelisted for a given naicsExtendedId + state — the narrowest, recommended way to pick a job code for WC location.employeeInformation. Prefer this over get_job_codes_by_state when the business NAICS is known.
get_job_codes_by_state
ChatGPTReturns all NCCI WC class codes (job codes) valid for the given US state. Each entry includes jobCodeExtendedId (used in location.employeeInformation), description, ncciStateClassCode. Use for WC quotes when get_job_codes_by_industry returns no narrow match.
get_legal_entities
ChatGPTReturns the list of CoverForce legal entity types accepted by the platform (e.g. LIMITED_LIABILITY_COMPANY, CORPORATION, SOLE_PROPRIETORSHIP, GENERAL_PARTNERSHIP). Use to pick a value for companyStructure.legalEntityType before sending update_application. applicationId and policyType are accepted but currently ignored by the backend: the full CoverForce legal entity list is always returned.
get_naics_codes
ChatGPTSearch CoverForce NAICS codes by keyword (e.g. "restaurant", "plumber", "software"). Returns naicsCode (6-digit), naicsExtendedId, description, industry. Use this FIRST in every quote flow — naicsExtendedId is required on update_application, and naicsCode is required for check_appetite. Always pass a keyword: without one the backend returns the entire NAICS catalog. applicationId is accepted but ignored by the backend.
get_ncci_internal_code_by_carrier
ChatGPTResolve an NCCI class code (3-5 digits) to a carrier-specific internal code for the given state. Required by some carriers that map standard NCCI codes onto proprietary classifications before quoting.
get_uw_questions
ChatGPTFetch underwriting questions for an application from the V2 endpoint. category=GENERAL returns application-level questions (no entityId). category=LOCATION returns questions scoped to a specific locationId. category=ADDITIONAL_INTEREST, OWNER_OFFICER, VEHICLE, and DRIVER each return questions scoped to a specific entityId — the additional-interest, owner, vehicle, or driver id respectively (one entity per call). Each question carries questionType, answerOptions and, when the carrier configured one, defaultAnswer; the matching answer option is tagged isDefault: true and every question has hasDefaultAnswer. defaultAnswers summarises how many questions have a default so you can tell the user before asking. Present defaults pre-selected for confirmation; questions without one need an explicit answer. After collecting answers, submit them via update_application.underwritingDetails[]. Call once per category that the application requires.
get_uw_statements
ChatGPTFetch the underwriting, bind, or payment statements an application must acknowledge. type=UNDERWRITING returns the statements that must be acknowledged BEFORE submit_for_quotes; send those acknowledgements back via update_application.statementDetails[]. type=BIND and type=PAYMENT return the statements for binding and payment, which are completed in the CoverForce agent portal.
get_workflow_guide
ChatGPTReturns the CoverForce quoting workflow guide. Without policyType: the general rules (session context, profile selection, starting an application, sharing the application link, do's and don'ts) and the list of policy types that have a step-by-step flow. With policyType: the step-by-step quoting flow for that policy type, including the BOP base flow the other flows build on. Useful at the start of a quoting session and whenever the next step for a policy type is unclear.
list_agent_profiles
ChatGPTList the ACTIVE agent profiles (agency, agency network, role) available to the logged-in agent, marking the one currently bound to this MCP session. Call this when any tool returns MCP_PROFILE_SELECTION_REQUIRED, or when the user asks which agencies/roles they can act under. Present the options to the user and ask them to choose; then call switch_agent_profile with the chosen agentProfileId. Never pick a profile on the user's behalf.
list_quotes
ChatGPTReport quoting progress for an application after submit_for_quotes. Returns ONLY: quotingInProgress (true while carriers are still responding), counts per quote status (QUOTED / DECLINED / FAILED / total), the applicationStatus, an allQuotesFailedOrDeclined flag, a portalUrl deep link to the application in the CoverForce agent portal, and a nextStep sentence. It intentionally does NOT return carrier names, quote IDs, premiums, limits, bridging links, or failure reasons — carrier contracts forbid quote data in this chat. Carrier identities and premiums are not available through this connector; the counts and portalUrl are the complete result, and the portal is where quotes are reviewed and bound. Quoting is asynchronous (5-60s per carrier): quotingInProgress stays true while carriers are still responding. FAILED (technical/submission error, can be re-quoted as-is from the portal) is different from DECLINED (the carrier will not offer terms without changes to the application).
search_applications
ChatGPTSearch the applications of the logged-in agent's agency (or of the whole agency network, for network-level profiles) by free text and filters, with paging. searchTerm is a case-insensitive substring match on business name, account name, agency name, application id, status, source, policy type, dates, and the creating or updating agent names. Filters: applicationStatus, policyType, applicationSource, applicationIds, agencyIds (network-level profiles only), isRenewal, and created / updated date bounds. Sorted by updatedAt descending unless sortBy and sortOrder say otherwise; 10 results per page unless pageSize says otherwise. Each result carries applicationId, businessName, policyType, applicationStatus, insuranceEffectiveDate, agencyName, applicationSource, isRenewal, applicationTags, the creating agent's name, and a portalUrl deep link, plus pagination. Results are summaries: the full record for an applicationId comes from get_application. Quote data is not included.
submit_for_quotes
ChatGPTSubmit the application to the selected carriers for quoting. Valid only when the freshly fetched applicationStatus.status is IN_PROGRESS: the application may have been edited in the agent portal in parallel, so the current state comes from get_application, not from earlier conversation turns. Not valid while the status is QUOTING, QUOTED, REFERRED, BIND_IN_PROGRESS, BIND_PENDING, PAYMENT_IN_PROGRESS, or BOUND; re-submission becomes possible once an edit (in chat or in the portal) moves the application back to IN_PROGRESS. Pre-requisites on the application: business info, locations, owners, carrier industry codes, UW answers (underwritingDetails), UNDERWRITING statement acknowledgements (statementDetails), and a brokerConfiguration entry per carrier. Quoting is asynchronous: the API returns 200 with no body when accepted, and list_quotes reports progress (status counts plus an agent-portal link; no carrier names or premiums) until quotingInProgress is false.
switch_agent_profile
ChatGPTSwitch the active agent profile for this MCP session. Use this when the logged-in agent operates under multiple profiles (different agencies or roles) and wants subsequent tool calls to act under a different one. Validates that the target agentProfileId belongs to the same logged-in agent and is ACTIVE before switching. After switching, every subsequent CF API call (create_application, get_broker_codes, audit trail, etc.) is made under the new profile. Also the way to resolve MCP_PROFILE_SELECTION_REQUIRED: after the user has chosen from the list_agent_profiles output, call this with their choice. Only call it after the user has explicitly picked — never choose for them. Returns the previous and new profile details.
update_application
ChatGPTUpdate an existing application. THIS IS A FULL PUT: the request replaces the whole record, so it has to carry every section that should remain (applicationStatus, applicationDetails, basicBusinessDetails, companyStructure, policyDetails, underwritingDetails, statementDetails) exactly as the current get_application response returns them, with the edits applied. A section omitted from the payload is deleted on the backend. Use this single tool to update business info (basicBusinessDetails), legal entity / owners (companyStructure.legalEntityType, companyStructure.ownershipDetails.owners[]), policy effective/expiry dates (applicationDetails.insuranceEffectiveDate / insuranceExpiryDate), underwriting question answers (underwritingDetails[]), statement acknowledgements (statementDetails[]), prior loss history (pastPolicyLossDetails[]), and per-carrier broker code assignment (brokerConfiguration[] — { carrierId, brokerConfigurationId } per carrier; REQUIRED before submit_for_quotes, see Step 9a). For location-level changes (add/update/delete) use the dedicated location tools instead — they handle PATCH semantics on locationDetails so you do not have to round-trip the entire array. PAYLOAD SIZE: a PUT carrying UW answers for several carriers at once (more than about 30 underwritingDetails entries, typical for multi-carrier BOP/WC) routinely exceeds the per-turn output-token cap and truncates mid-JSON. One PUT per carrier stays under it: each is based on a fresh get_application, keeps its existing underwritingDetails and adds that carrier's slice, and carries applicationStatus, applicationDetails, basicBusinessDetails, companyStructure, policyDetails and statementDetails unchanged (full PUT rule above).
update_carrier_industry_codes
ChatGPTSet the per-carrier industry / class code overrides on basicBusinessDetails.carrierIndustryCodes WITHOUT having to re-send the rest of the application. The MCP service fetches the existing application, replaces the carrierIndustryCodes array, and PUTs the application back. Each carrierIndustryCodes entry mirrors ICarrierIndustryCode and MUST include: { carrierId, policyType, industryCode, industryCodeDescription, additionalIndustryCodes }. Field name mapping from get_carrier_industry_codes output: classCodeId -> industryCode, classCodeDescription -> industryCodeDescription. Pass additionalIndustryCodes: [] (the field is required even if empty). The legacy keys classCodeId / classCodeDescription / state are rejected.
update_location
ChatGPTUpdate an existing location on an application. This is a FULL PUT of that location: the payload is the complete ILocationInfo for the location (including its locationId) as returned in get_application locationDetails[], with the edits applied; fields left out are removed.