Skip to main content
The broker MCP server gives an agent the same quoting and enrollment calls as the REST API. It uses the Streamable HTTP transport in stateless mode: each request is one JSON-RPC 2.0 message sent with POST, and each response is JSON. There is no server-initiated stream, so GET returns 405.

Connect an agent

Add the server to an MCP client that supports HTTP servers with headers:
Use a test key (psk_test_...) while you build and a live key (psk_live_...) once Prescience has turned live mode on for your account; see Broker account setup. The Connect your agent tab of the partner portal shows the same URL and configuration. You can also call the server directly:

Tools

A key sees and can call only the tools its partner type and scope allow. tools/list returns that set; calling another tool returns the JSON-RPC error -32601 “This tool isn’t enabled for your partner type or API key.”

fit_check

Input, all optional: Output: { "fit": "strong" | "possible" | "poor", "reasons": [...] }. The criteria are on Fit guidelines.

quote_group

Input is the body of POST /quotes: company (name, domain, zip; optional externalId, ratingZip, state), census, and optionally planYearStartDate, marketPlans and basePlan. The tool finds or creates the group, replaces its census, saves the plans you send and quotes. Sending the same company again with changed fields prices it again. Output when the quote is ready: While pricing the output is { groupId, status: "pricing", retryAfterSeconds, estimatedReadyAt, sweep }. Call quote_group again with the same input to poll, or call get_quote with the groupId.

get_quote

Input: { "groupId": "..." }. Returns the latest quote in the shape above. If rates have landed and no quote exists for the current census, it creates one; while rates are being fetched it returns the pricing status.

list_groups and get_group

list_groups takes no input and returns groups: for each, groupId, company, externalId, status, members, pricing (the sweep step), createdAt and latestQuote (quoteId, createdAt, status, quotePepmCents, quoteAnnualCents, plansAvailable). get_group takes { "groupId": "..." } and returns the same identity fields plus domain, ratingZip, enrolled, benefitsAdmin, basePlan (the plan on file, or null) and marketPlans (how many plans are on file).

get_plan_details

Takes no input. Returns Prescience Diamond and Prescience Value, the three pricing modes, what every version includes, the member cost-sharing it is quoted with (0% coinsurance, HSA-eligible), the employer contribution range, and the disclaimers.

submit_elections

Input: { "groupId": "...", "elections": [...] }, with elections shaped as in Partner-run enrollment. Output is that endpoint’s response.

Results and errors

Every tool result carries the data as MCP structuredContent and as a JSON text block, for clients that read only content. A quote adds its markdown table as a second text block. Every number comes from the stored quote record. A tool that fails returns a result with isError: true and { "error", "message", "details"? }, using the same codes as the REST API: invalid_request (with details naming each field), not_found, conflict, rate_limited (with retryAfterSeconds) and market_unavailable. Protocol failures are JSON-RPC errors: -32700 (the body is not JSON, HTTP 400), -32600 (not a JSON-RPC message), -32601 (unknown method or tool) and -32602 (missing parameters). Batches are not supported and return HTTP 400. A request without a valid key returns 401, and a key that may not use the server returns 403 forbidden. MCP calls count toward the same per-key rate limits as the REST API; see Rate limits. Test mode is the key’s mode: test keys create test groups, send no email and move no money.

README resource

The agent instructions (when to quote, what to send, how to present the versions) are the MCP resource prescience://broker/readme, read with resources/read, and Markdown at GET /api/partner/v1/mcp/readme, which needs no key. The partner portal shows the same text under Fit guidelines. The server’s initialize instructions and the quote_group description also give the README URL, so an agent can find it without the resource.