@usekaval/mcp
Advanced tools
+4
-5
@@ -6,7 +6,6 @@ /** | ||
| * | ||
| * Seven tools: `check` (the one that does the work), `get_receipt` (the signed document behind its | ||
| * verdict), `add_source` / `list_sources` / `remove_source` (what Kaval watches, which is what keeps | ||
| * `check` warm), `report_outcome`, and the deprecated `verify` pilot alias. Built on the thin | ||
| * `kaval` HTTP client for the hosted Kaval API. Run the stdio server via the `kaval-mcp` bin (for | ||
| * `mcp add` / `npx @usekaval/mcp`). | ||
| * Twenty-three tools cover checks, receipts, sources, contracts, bulletins, bulk imports, training | ||
| * review, explicit training consent, outcomes, and the deprecated `verify` pilot alias. The server | ||
| * uses the thin `kaval` HTTP client for the hosted Kaval API. Run the stdio server through the | ||
| * `kaval-mcp` bin. | ||
| */ | ||
@@ -13,0 +12,0 @@ export { createMcpServer } from "./server.js"; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"} |
+4
-5
@@ -6,7 +6,6 @@ /** | ||
| * | ||
| * Seven tools: `check` (the one that does the work), `get_receipt` (the signed document behind its | ||
| * verdict), `add_source` / `list_sources` / `remove_source` (what Kaval watches, which is what keeps | ||
| * `check` warm), `report_outcome`, and the deprecated `verify` pilot alias. Built on the thin | ||
| * `kaval` HTTP client for the hosted Kaval API. Run the stdio server via the `kaval-mcp` bin (for | ||
| * `mcp add` / `npx @usekaval/mcp`). | ||
| * Twenty-three tools cover checks, receipts, sources, contracts, bulletins, bulk imports, training | ||
| * review, explicit training consent, outcomes, and the deprecated `verify` pilot alias. The server | ||
| * uses the thin `kaval` HTTP client for the hosted Kaval API. Run the stdio server through the | ||
| * `kaval-mcp` bin. | ||
| */ | ||
@@ -13,0 +12,0 @@ export { createMcpServer } from "./server.js"; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"} |
+3
-3
@@ -10,7 +10,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; | ||
| * document behind that receipt id, which is what an agent shows when it blocks. `add_source` / | ||
| * `list_sources` / `remove_source` control what Kaval watches; `report_outcome` closes the | ||
| * calibration loop. `verify` is a deprecated alias kept for pilot integrations. Tool names use | ||
| * underscores for client portability. | ||
| * `list_sources` / `remove_source` control what Kaval watches. Portfolio tools handle contracts, | ||
| * bulk imports, structured bulletins, training status, feedback review, and explicit consent. | ||
| * `report_outcome` closes the calibration loop. `verify` is a deprecated pilot alias. | ||
| */ | ||
| export declare function createMcpServer(client: Kaval): McpServer; | ||
| //# sourceMappingURL=server.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAKL,KAAK,KAAK,EACX,MAAM,iBAAiB,CAAC;AAqSzB;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CA0SxD"} | ||
| {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAEV,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAYL,KAAK,KAAK,EACX,MAAM,iBAAiB,CAAC;AA4gBzB;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAwkCxD"} |
+540
-16
@@ -1,3 +0,3 @@ | ||
| import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; | ||
| import { DEFAULT_CHECK_MAX_WAIT_MS, KavalError, KavalRetiredError, MIN_CHECK_MAX_WAIT_MS, } from "@usekaval/kaval"; | ||
| import { McpServer, ResourceTemplate, } from "@modelcontextprotocol/sdk/server/mcp.js"; | ||
| import { BULLETIN_EXTRACTION_ATTEMPT_STATUSES, CONTRACT_EXTRACTION_ISSUE_CODES, DEFAULT_CHECK_MAX_WAIT_MS, KavalError, KavalRetiredError, MAX_CONTRACT_PDF_BYTES, MAX_FACT_IMPORT_ITEMS, MAX_FACT_IMPORT_SOURCE_REFERENCES, MAX_INLINE_CONTRACT_BYTES, MAX_PORTFOLIO_PAGE_SIZE, MIN_CHECK_MAX_WAIT_MS, } from "@usekaval/kaval"; | ||
| import { z } from "zod"; | ||
@@ -29,3 +29,3 @@ /** | ||
| .max(200) | ||
| .regex(/^[\x21-\x7e]+$/) | ||
| .regex(/^[\x20-\x7e]+$/) | ||
| .optional() | ||
@@ -82,10 +82,12 @@ .describe("reuse the operation key returned by an ambiguous prior attempt; omit for a new operation"); | ||
| /** Mirrors the server's `EntityRef`: a named entity, optionally with an id and a type. */ | ||
| const entityRefInput = z.object({ | ||
| name: z.string().min(1), | ||
| id: z.string().min(1).optional(), | ||
| type: z.string().min(1).optional(), | ||
| }); | ||
| const entityRefInput = z | ||
| .object({ | ||
| name: z.string().trim().min(1).max(1_000), | ||
| id: z.string().trim().min(1).max(1_000).optional(), | ||
| type: z.string().trim().min(1).max(256).optional(), | ||
| }) | ||
| .strict(); | ||
| /** Mirrors the server's `FactScope`: scalar values, not strings only. */ | ||
| const scopeValueInput = z.union([ | ||
| z.string(), | ||
| z.string().max(2_000), | ||
| z.number().finite(), | ||
@@ -109,3 +111,3 @@ z.boolean(), | ||
| scope: z | ||
| .record(scopeValueInput) | ||
| .record(z.string().trim().min(1).max(256), scopeValueInput) | ||
| .optional() | ||
@@ -128,2 +130,88 @@ .describe("what the claim is scoped to, e.g. { jurisdiction: 'US', plan: 'HMO' }"), | ||
| ]); | ||
| const uuidInput = z.string().uuid(); | ||
| const stableIdInput = z | ||
| .string() | ||
| .min(1) | ||
| .max(256) | ||
| .regex(/^[A-Za-z0-9](?:[A-Za-z0-9._~:@/+-]*[A-Za-z0-9._~:@+-])?$/u, "must be a stable external identifier with no whitespace"); | ||
| const isoDateInput = z.string().date(); | ||
| const sha256Input = z.string().regex(/^[0-9a-f]{64}$/u); | ||
| const httpsUrlInput = httpUrlInput.refine((value) => value.length <= 2_048 && new URL(value).protocol === "https:", "must be an HTTPS URL"); | ||
| const contractDocumentTypeInput = z.enum([ | ||
| "base_agreement", | ||
| "amendment", | ||
| "attachment", | ||
| "fee_schedule", | ||
| "other", | ||
| ]); | ||
| const contractAuthorityInput = z.enum(["signed", "unsigned", "unknown"]); | ||
| const contractReviewStateInput = z.enum([ | ||
| "proposed", | ||
| "approved", | ||
| "corrected", | ||
| "rejected", | ||
| ]); | ||
| const contractActivationStateInput = z.enum([ | ||
| "inactive", | ||
| "active", | ||
| "conflict", | ||
| "superseded", | ||
| ]); | ||
| const contractExtractionIssueCodeInput = z.enum(CONTRACT_EXTRACTION_ISSUE_CODES); | ||
| const contractSourceInput = z.discriminatedUnion("kind", [ | ||
| z.object({ kind: z.literal("upload"), upload_id: uuidInput }).strict(), | ||
| z | ||
| .object({ kind: z.literal("content_url"), content_url: httpsUrlInput }) | ||
| .strict(), | ||
| z | ||
| .object({ | ||
| kind: z.literal("canonical_text"), | ||
| content: z | ||
| .string() | ||
| .min(1) | ||
| .refine((value) => new TextEncoder().encode(value).byteLength <= | ||
| MAX_INLINE_CONTRACT_BYTES, `must not exceed ${MAX_INLINE_CONTRACT_BYTES} UTF-8 bytes`), | ||
| }) | ||
| .strict(), | ||
| ]); | ||
| const contractMetadataInput = { | ||
| external_id: stableIdInput, | ||
| title: z.string().trim().min(1).max(512), | ||
| document_type: contractDocumentTypeInput, | ||
| authority_status: contractAuthorityInput, | ||
| contract_family_key: stableIdInput, | ||
| effective_from: isoDateInput.nullable(), | ||
| effective_to: isoDateInput.nullable(), | ||
| supersedes_contract_id: uuidInput.nullable(), | ||
| }; | ||
| const factImportItemInput = z | ||
| .object({ | ||
| item_id: stableIdInput, | ||
| claim: structuredClaimInput, | ||
| contract_claim_id: uuidInput.optional(), | ||
| source_ids: z.array(uuidInput).max(MAX_FACT_IMPORT_SOURCE_REFERENCES), | ||
| }) | ||
| .strict(); | ||
| const bulletinStatusInput = z.enum(["candidate", "review", "confirmed"]); | ||
| const bulletinExtractionAttemptStatusInput = z.enum(BULLETIN_EXTRACTION_ATTEMPT_STATUSES); | ||
| const trainingStatusInput = z.enum([ | ||
| "queued", | ||
| "running", | ||
| "awaiting_promotion", | ||
| "promoted", | ||
| "rejected", | ||
| "failed", | ||
| "cancelled", | ||
| "insufficient_data", | ||
| ]); | ||
| const trainingUseInput = z.enum(["approved", "withheld"]); | ||
| const payerIdInput = z.string().trim().min(1).max(256); | ||
| /** `YYYY-MM`, the granularity every policy-update run and package is keyed by. */ | ||
| const periodInput = z | ||
| .string() | ||
| .regex(/^\d{4}-(0[1-9]|1[0-2])$/u, "must be a YYYY-MM period"); | ||
| /** A JSON Schema document — validated structurally server-side; MCP only bounds its size. */ | ||
| const jsonSchemaInput = z | ||
| .record(z.string(), z.unknown()) | ||
| .refine((value) => JSON.stringify(value).length <= 65_536, "must not exceed 64 KiB serialized"); | ||
| function json(data) { | ||
@@ -138,2 +226,44 @@ return { content: [{ type: "text", text: JSON.stringify(data) }] }; | ||
| } | ||
| async function resourceJson(uri, read) { | ||
| let value; | ||
| try { | ||
| value = await read(); | ||
| } | ||
| catch (error) { | ||
| console.error("[kaval-mcp] resource error:", error); | ||
| if (error instanceof KavalError) { | ||
| const detail = apiError(error.payload); | ||
| value = { | ||
| error: detail.code ?? "request_failed", | ||
| ...(detail.message ? { message: detail.message } : {}), | ||
| status: error.status, | ||
| }; | ||
| } | ||
| else if (error instanceof TypeError) { | ||
| value = { | ||
| error: "network_unreachable", | ||
| message: "could not reach the Kaval API", | ||
| }; | ||
| } | ||
| else { | ||
| value = { error: "internal error" }; | ||
| } | ||
| } | ||
| return { | ||
| contents: [ | ||
| { | ||
| uri: uri.href, | ||
| mimeType: "application/json", | ||
| text: JSON.stringify(value), | ||
| }, | ||
| ], | ||
| }; | ||
| } | ||
| function templateId(value, name) { | ||
| const id = Array.isArray(value) ? value[0] : value; | ||
| if (id === undefined || !uuidInput.safeParse(id).success) { | ||
| throw new TypeError(`${name} must be a UUID`); | ||
| } | ||
| return id; | ||
| } | ||
| function transportOptions(idempotencyKey, signal) { | ||
@@ -243,11 +373,11 @@ return { | ||
| * document behind that receipt id, which is what an agent shows when it blocks. `add_source` / | ||
| * `list_sources` / `remove_source` control what Kaval watches; `report_outcome` closes the | ||
| * calibration loop. `verify` is a deprecated alias kept for pilot integrations. Tool names use | ||
| * underscores for client portability. | ||
| * `list_sources` / `remove_source` control what Kaval watches. Portfolio tools handle contracts, | ||
| * bulk imports, structured bulletins, training status, feedback review, and explicit consent. | ||
| * `report_outcome` closes the calibration loop. `verify` is a deprecated pilot alias. | ||
| */ | ||
| export function createMcpServer(client) { | ||
| const server = new McpServer({ name: "kaval", version: "0.7.1" }); | ||
| const server = new McpServer({ name: "kaval", version: "0.7.2" }); | ||
| const api = client; | ||
| server.registerTool("check", { | ||
| description: "Verify the facts an action depends on BEFORE acting on it. Describe the action you are about to take (and any context you are relying on), or pass the specific claims, and Kaval re-checks each fact against the sources it watches — returning decision ALLOW, REVIEW, or BLOCK with a signed receipt. ALLOW: every material fact still holds on fresh evidence — proceed. REVIEW: something is unknown, mid-re-evaluation, or changed at low/medium materiality — REVIEW IS NEVER PERMISSION TO ACT; surface it to a human or re-research. BLOCK: a high/critical fact has changed, or a critical fact is unknown — do not proceed. Each returned fact carries its status (holds | changed | unknown) and the sources it rests on, so you can see exactly WHICH belief moved. A fact already backed by a watched source is answered from stored state in ~50ms with no model call and no fetch, so calling it on every consequential action is cheap; a fact Kaval has not seen before has to be researched first and takes seconds. Use this instead of re-researching a fact you already believe.", | ||
| description: "Verify the facts an action depends on BEFORE acting on it. Describe the action you are about to take (and any context you are relying on), or pass the specific claims, and Kaval re-checks each fact against the sources it watches — returning decision ALLOW, REVIEW, or BLOCK with a signed receipt. ALLOW: every material fact still holds on fresh evidence — proceed. REVIEW: something is unknown, mid-re-evaluation, or changed at low/medium materiality — REVIEW IS NEVER PERMISSION TO ACT; surface it to a human or re-research. BLOCK: a high/critical fact has changed, or a critical fact is unknown — do not proceed. Each returned fact carries its status (holds | changed | unknown) and the sources it rests on, so you can see exactly WHICH belief moved. A fact already backed by a watched source is answered from stored state with no model call and no fetch at all, so calling it on every consequential action is cheap; a fact Kaval has not seen before has to be researched first and takes seconds. Use this instead of re-researching a fact you already believe.", | ||
| inputSchema: { | ||
@@ -322,2 +452,301 @@ action: z | ||
| safe(async () => ({ receipt: await api.getReceipt(receipt_id, { signal }) }), signal)); | ||
| server.registerTool("prepare_contract_upload", { | ||
| description: "Create a private PDF upload target. Upload the exact bytes to upload_url before you call ingest_contract with the returned upload id.", | ||
| inputSchema: { | ||
| filename: z.string().min(1).max(255), | ||
| content_type: z.literal("application/pdf").default("application/pdf"), | ||
| size_bytes: z.number().int().min(1).max(MAX_CONTRACT_PDF_BYTES), | ||
| sha256: sha256Input.describe("lowercase SHA-256 digest of the exact PDF bytes"), | ||
| idempotency_key: idempotencyKeyInput, | ||
| }, | ||
| }, async ({ idempotency_key, ...input }, { signal }) => safe(() => api.createContractUpload(input, transportOptions(idempotency_key, signal)), signal)); | ||
| server.registerTool("ingest_contract", { | ||
| description: "Queue a contract for extraction. Use canonical text, an approved HTTPS content URL, or an upload id from prepare_contract_upload.", | ||
| inputSchema: { | ||
| ...contractMetadataInput, | ||
| source: contractSourceInput, | ||
| idempotency_key: idempotencyKeyInput, | ||
| }, | ||
| }, async ({ idempotency_key, ...input }, { signal }) => { | ||
| if (input.effective_from !== null && | ||
| input.effective_to !== null && | ||
| input.effective_to < input.effective_from) { | ||
| return toolError({ | ||
| error: "bad_request", | ||
| message: "effective_to must not be before effective_from", | ||
| }); | ||
| } | ||
| return safe(() => api.createContract(input, transportOptions(idempotency_key, signal)), signal); | ||
| }); | ||
| server.registerTool("get_contract", { | ||
| description: "Get contract processing status, candidate counts, and extraction issue state. Poll until the contract is ready for review or has failed.", | ||
| inputSchema: { contract_id: uuidInput }, | ||
| }, async ({ contract_id }, { signal }) => safe(() => api.getContract(contract_id, { signal }), signal)); | ||
| server.registerTool("list_contract_claims", { | ||
| description: "List extracted claim candidates with exact evidence spans. A reviewer must approve, correct, or reject each candidate before activation.", | ||
| inputSchema: { | ||
| contract_id: uuidInput, | ||
| status: contractReviewStateInput.optional(), | ||
| activation_state: contractActivationStateInput.optional(), | ||
| cursor: z.string().min(1).max(1_000).optional(), | ||
| limit: z.number().int().min(1).max(MAX_PORTFOLIO_PAGE_SIZE).optional(), | ||
| }, | ||
| }, async ({ contract_id, activation_state, ...options }, { signal }) => safe(() => api.listContractClaims(contract_id, { | ||
| signal, | ||
| ...options, | ||
| ...(activation_state === undefined | ||
| ? {} | ||
| : { activationState: activation_state }), | ||
| }), signal)); | ||
| server.registerTool("list_contract_extraction_issues", { | ||
| description: "List deterministic contract extraction failures for customer review. Each issue identifies the rejected candidate and evidence-line range without exposing contract text.", | ||
| inputSchema: z | ||
| .object({ | ||
| contract_id: uuidInput, | ||
| issue_code: contractExtractionIssueCodeInput.optional(), | ||
| cursor: z.string().min(1).max(1_000).optional(), | ||
| limit: z | ||
| .number() | ||
| .int() | ||
| .min(1) | ||
| .max(MAX_PORTFOLIO_PAGE_SIZE) | ||
| .optional(), | ||
| }) | ||
| .strict(), | ||
| }, async ({ contract_id, issue_code, ...options }, { signal }) => safe(() => api.listContractExtractionIssues(contract_id, { | ||
| signal, | ||
| ...options, | ||
| ...(issue_code === undefined ? {} : { issueCode: issue_code }), | ||
| }), signal)); | ||
| server.registerTool("review_contract_claim", { | ||
| description: "Record an immutable human review. Use correct only with corrected_claim. The expected version prevents a stale review from overwriting newer work.", | ||
| inputSchema: { | ||
| contract_id: uuidInput, | ||
| claim_id: uuidInput, | ||
| review_id: stableIdInput, | ||
| decision: z.enum(["approve", "correct", "reject"]), | ||
| expected_candidate_version: z.number().int().positive(), | ||
| reason: z.string().trim().min(1).max(4_000).optional(), | ||
| corrected_claim: structuredClaimInput.optional(), | ||
| idempotency_key: idempotencyKeyInput, | ||
| }, | ||
| }, async ({ contract_id, claim_id, idempotency_key, ...input }, { signal }) => { | ||
| if ((input.decision === "correct") !== | ||
| (input.corrected_claim !== undefined)) { | ||
| return toolError({ | ||
| error: "bad_request", | ||
| message: "corrected_claim is required only for a correct decision", | ||
| }); | ||
| } | ||
| return safe(() => api.reviewContractClaim(contract_id, claim_id, input, transportOptions(idempotency_key, signal)), signal); | ||
| }); | ||
| server.registerTool("import_facts", { | ||
| description: "Queue 1 through 400 reviewed facts for warm checks. This tool does not create watched sources. Each item gets a terminal result.", | ||
| inputSchema: { | ||
| external_batch_id: stableIdInput, | ||
| items: z.array(factImportItemInput).min(1).max(MAX_FACT_IMPORT_ITEMS), | ||
| idempotency_key: idempotencyKeyInput, | ||
| }, | ||
| }, async ({ idempotency_key, items, ...input }, { signal }) => { | ||
| const itemIds = items.map((item) => item.item_id); | ||
| if (new Set(itemIds).size !== itemIds.length) { | ||
| return toolError({ | ||
| error: "duplicate_item_id", | ||
| message: "item_id values must be unique", | ||
| }); | ||
| } | ||
| for (const item of items) { | ||
| if (new Set(item.source_ids).size !== item.source_ids.length) { | ||
| return toolError({ | ||
| error: "bad_request", | ||
| message: `source_ids must be unique for item ${item.item_id}`, | ||
| }); | ||
| } | ||
| } | ||
| return safe(() => api.createFactImport({ ...input, items }, transportOptions(idempotency_key, signal)), signal); | ||
| }); | ||
| server.registerTool("get_fact_import", { | ||
| description: "Get one bulk import and every item result. Poll until the batch reaches a terminal state.", | ||
| inputSchema: { import_id: uuidInput }, | ||
| }, async ({ import_id }, { signal }) => safe(() => api.getFactImport(import_id, { signal }), signal)); | ||
| server.registerTool("list_bulletins", { | ||
| description: "List structured payer bulletins. Filter by payer, policy, code, publisher date, or review status. Dates are publisher-stated dates only. Prefer create_extraction_schema + create_policy_update (or update_source's extraction_schema_id binding) for new integrations — this free-text pipeline still works but is not receiving new record types.", | ||
| inputSchema: { | ||
| source_id: uuidInput.optional(), | ||
| payer_id: z.string().trim().min(1).max(256).optional(), | ||
| policy_number: z.string().trim().min(1).max(256).optional(), | ||
| code: z.string().trim().min(1).max(256).optional(), | ||
| record_status: bulletinStatusInput.optional(), | ||
| published_from: isoDateInput.optional(), | ||
| published_to: isoDateInput.optional(), | ||
| cursor: z.string().min(1).max(1_000).optional(), | ||
| limit: z.number().int().min(1).max(MAX_PORTFOLIO_PAGE_SIZE).optional(), | ||
| }, | ||
| }, async ({ source_id, payer_id, policy_number, record_status, published_from, published_to, ...options }, { signal }) => { | ||
| if (published_from !== undefined && | ||
| published_to !== undefined && | ||
| published_from > published_to) { | ||
| return toolError({ | ||
| error: "invalid_bulletin_filter", | ||
| message: "published_to must not be before published_from", | ||
| }); | ||
| } | ||
| return safe(() => api.listBulletins({ | ||
| signal, | ||
| ...options, | ||
| ...(source_id === undefined ? {} : { sourceId: source_id }), | ||
| ...(payer_id === undefined ? {} : { payerId: payer_id }), | ||
| ...(policy_number === undefined | ||
| ? {} | ||
| : { policyNumber: policy_number }), | ||
| ...(record_status === undefined | ||
| ? {} | ||
| : { recordStatus: record_status }), | ||
| ...(published_from === undefined | ||
| ? {} | ||
| : { publishedFrom: published_from }), | ||
| ...(published_to === undefined | ||
| ? {} | ||
| : { publishedTo: published_to }), | ||
| }), signal); | ||
| }); | ||
| server.registerTool("get_bulletin", { | ||
| description: "Get one structured bulletin by source-version id. Each field includes its status and exact evidence when available. Prefer get_policy_update for new integrations — this free-text pipeline still works but is not receiving new record types.", | ||
| inputSchema: { source_version_id: uuidInput }, | ||
| }, async ({ source_version_id }, { signal }) => safe(() => api.getBulletin(source_version_id, { signal }), signal)); | ||
| server.registerTool("list_bulletin_extraction_attempts", { | ||
| description: "List customer-readable bulletin extraction status. Filter by source or lifecycle state. This tool cannot requeue work. Prefer list_policy_updates for new integrations — this free-text pipeline still works but is not receiving new record types.", | ||
| inputSchema: z | ||
| .object({ | ||
| source_id: uuidInput.optional(), | ||
| status: bulletinExtractionAttemptStatusInput.optional(), | ||
| cursor: z.string().min(1).max(1_000).optional(), | ||
| limit: z | ||
| .number() | ||
| .int() | ||
| .min(1) | ||
| .max(MAX_PORTFOLIO_PAGE_SIZE) | ||
| .optional(), | ||
| }) | ||
| .strict(), | ||
| }, async ({ source_id, ...options }, { signal }) => safe(() => api.listBulletinExtractionAttempts({ | ||
| signal, | ||
| ...options, | ||
| ...(source_id === undefined ? {} : { sourceId: source_id }), | ||
| }), signal)); | ||
| server.registerTool("get_bulletin_extraction_attempt", { | ||
| description: "Get one customer-readable bulletin extraction attempt by source-version id. This tool cannot requeue work. Prefer get_policy_update for new integrations — this free-text pipeline still works but is not receiving new record types.", | ||
| inputSchema: z.object({ source_version_id: uuidInput }).strict(), | ||
| }, async ({ source_version_id }, { signal }) => safe(() => api.getBulletinExtractionAttempt(source_version_id, { signal }), signal)); | ||
| server.registerTool("list_training_jobs", { | ||
| description: "List training and evaluation job status. This read-only tool does not start, approve, or promote a model.", | ||
| inputSchema: { | ||
| status: trainingStatusInput.optional(), | ||
| demo_only: z.boolean().optional(), | ||
| cursor: z.string().min(1).max(1_000).optional(), | ||
| limit: z.number().int().min(1).max(MAX_PORTFOLIO_PAGE_SIZE).optional(), | ||
| }, | ||
| }, async ({ demo_only, ...options }, { signal }) => safe(() => api.listTrainingJobs({ | ||
| signal, | ||
| ...options, | ||
| ...(demo_only === undefined ? {} : { demoOnly: demo_only }), | ||
| }), signal)); | ||
| server.registerTool("get_training_job", { | ||
| description: "Get one training job status. Production promotion remains an internal operation and is not available through MCP.", | ||
| inputSchema: { job_id: uuidInput }, | ||
| }, async ({ job_id }, { signal }) => safe(() => api.getTrainingJob(job_id, { signal }), signal)); | ||
| server.registerTool("list_training_feedback", { | ||
| description: "List reviewed feedback and its effective training-use state. This read requires training:manage and does not approve data for training.", | ||
| inputSchema: z | ||
| .object({ | ||
| effective_training_use: trainingUseInput.optional(), | ||
| cursor: z.string().min(1).max(1_000).optional(), | ||
| limit: z | ||
| .number() | ||
| .int() | ||
| .min(1) | ||
| .max(MAX_PORTFOLIO_PAGE_SIZE) | ||
| .optional(), | ||
| }) | ||
| .strict(), | ||
| }, async ({ effective_training_use, ...options }, { signal }) => safe(() => api.listTrainingFeedback({ | ||
| signal, | ||
| ...options, | ||
| ...(effective_training_use === undefined | ||
| ? {} | ||
| : { effectiveTrainingUse: effective_training_use }), | ||
| }), signal)); | ||
| server.registerTool("record_training_feedback_consent", { | ||
| description: "Record an explicit, auditable training-use decision for one reviewed feedback item. This mutation requires training:manage. Approval requires consent_to_training=true.", | ||
| inputSchema: z | ||
| .object({ | ||
| feedback_id: uuidInput, | ||
| training_use: trainingUseInput, | ||
| consent_to_training: z.boolean(), | ||
| reason: z.string().trim().min(1).max(1_000).nullable().optional(), | ||
| idempotency_key: idempotencyKeyInput, | ||
| }) | ||
| .strict(), | ||
| }, async ({ feedback_id, training_use, consent_to_training, reason, idempotency_key, }, { signal }) => { | ||
| if ((training_use === "approved") !== consent_to_training) { | ||
| return toolError({ | ||
| error: "invalid_training_consent", | ||
| message: "approved training use requires explicit consent", | ||
| }); | ||
| } | ||
| return safe(() => api.recordTrainingFeedbackConsent(feedback_id, { | ||
| schema_version: "training-feedback-consent-request/1.0.0", | ||
| training_use, | ||
| consent_to_training, | ||
| ...(reason === undefined ? {} : { reason }), | ||
| }, transportOptions(idempotency_key, signal)), signal); | ||
| }); | ||
| server.registerTool("create_extraction_schema", { | ||
| description: "Register a JSON Schema Kaval extracts structured records against. Bind the returned schema's id to a source with update_source so every document that lands on it afterward is extracted automatically and delivered as a policy_update.document webhook, or pass it directly to create_policy_update for a one-off payer + period run. This is the schema-bound successor to list_bulletins' free-text extraction. Requires policy-update:manage.", | ||
| inputSchema: { | ||
| name: z.string().trim().min(1).max(512), | ||
| json_schema: jsonSchemaInput.describe("the JSON Schema records must satisfy, e.g. {type:'object', properties:{cpt_code:{type:'string'}}, required:['cpt_code']}"), | ||
| idempotency_key: idempotencyKeyInput, | ||
| }, | ||
| }, async ({ idempotency_key, ...input }, { signal }) => safe(() => api.createExtractionSchema(input, transportOptions(idempotency_key, signal)), signal)); | ||
| server.registerTool("list_extraction_schemas", { | ||
| description: "List the extraction schemas registered in this workspace, newest first.", | ||
| inputSchema: {}, | ||
| }, async (_args, { signal }) => safe(async () => ({ | ||
| extraction_schemas: await api.listExtractionSchemas({ signal }), | ||
| }), signal)); | ||
| server.registerTool("create_policy_update", { | ||
| description: "Request a one-off payer + period extraction run against a bound extraction schema, instead of waiting for the next document to land on a watched source. Requires policy-update:manage. Answers with the run in status 'processing' — poll get_policy_update or wait for its policy_update.document webhook.", | ||
| inputSchema: { | ||
| payer_id: payerIdInput.describe("the payer this run extracts records for"), | ||
| period: periodInput.describe("the YYYY-MM period to extract"), | ||
| extraction_schema_id: uuidInput, | ||
| idempotency_key: idempotencyKeyInput, | ||
| }, | ||
| }, async ({ idempotency_key, ...input }, { signal }) => safe(() => api.createPolicyUpdate(input, transportOptions(idempotency_key, signal)), signal)); | ||
| server.registerTool("get_policy_update", { | ||
| description: "Get one extraction run ('policy update') by id — its status (processing | retry | succeeded | review_required | failed), the schema it ran against, and its extracted result once it succeeds.", | ||
| inputSchema: { run_id: uuidInput }, | ||
| }, async ({ run_id }, { signal }) => safe(() => api.getPolicyUpdate(run_id, { signal }), signal)); | ||
| server.registerTool("list_policy_updates", { | ||
| description: "List extraction runs ('policy updates'), optionally filtered by payer and/or YYYY-MM period.", | ||
| inputSchema: { | ||
| payer_id: payerIdInput.optional(), | ||
| period: periodInput.optional(), | ||
| }, | ||
| }, async (args, { signal }) => safe(async () => ({ | ||
| policy_updates: await api.listPolicyUpdates({ signal, ...args }), | ||
| }), signal)); | ||
| server.registerTool("list_policy_update_packages", { | ||
| description: "List the monthly PDF + manifest rollups every payer/period's extraction runs are packaged into, optionally filtered by payer and/or YYYY-MM period.", | ||
| inputSchema: { | ||
| payer_id: payerIdInput.optional(), | ||
| period: periodInput.optional(), | ||
| }, | ||
| }, async (args, { signal }) => safe(async () => ({ | ||
| policy_update_packages: await api.listPolicyUpdatePackages({ | ||
| signal, | ||
| ...args, | ||
| }), | ||
| }), signal)); | ||
| server.registerTool("add_source", { | ||
@@ -399,2 +828,24 @@ description: "Tell Kaval what to watch, so later checks are answered from fresh state instead of live research. Registering the NAME of an authority is usually enough: {kind:'entity', name:'Aetna', intent:'payer policy bulletins'} resolves to the pages that publish it and watches them. Use kind:'url' for a specific page, kind:'push' for a document your own system will send in. Kaval polls watched sources adaptively, re-evaluates the facts that depend on them when they change, and (if a fact_state webhook is configured) pushes you a delta naming what flipped. You do not have to call this first — an unregistered source cited by a check is auto-watched — but registering ahead of time is what makes the first check on a fact fast.", | ||
| }, async ({ id }, { signal }) => safe(() => api.deleteSource(id, { signal }), signal)); | ||
| server.registerTool("update_source", { | ||
| description: "Bind (or unbind) an extraction schema on a watched source, by the `id` add_source or list_sources returned. Once bound, every document that lands on the source is run through create_extraction_schema's schema automatically and delivered as a policy_update.document webhook — no more polling create_policy_update per period. Pass extraction_schema_id: null to unbind. Requires policy-update:manage.", | ||
| inputSchema: { | ||
| id: z | ||
| .string() | ||
| .uuid() | ||
| .describe("the watched-source id returned by add_source (`source.id`) or list_sources"), | ||
| extraction_schema_id: uuidInput | ||
| .nullable() | ||
| .describe("the extraction schema to bind, or null to unbind and stop automatic extraction"), | ||
| }, | ||
| }, async ({ id, ...input }, { signal }) => safe(() => api.updateSource({ id, ...input }, { signal }), signal)); | ||
| server.registerTool("get_source_version_content", { | ||
| description: "Fetch the captured content of one fetched version of a watched source, by the `source_version_id` a policy_update.document webhook or an extraction run names. Defaults to the raw canonical text; pass format:'sections' to get it pre-split into the same sections the sectionizer feeds extraction runs.", | ||
| inputSchema: { | ||
| source_version_id: uuidInput, | ||
| format: z.enum(["sections"]).optional(), | ||
| }, | ||
| }, async ({ source_version_id, format }, { signal }) => safe(() => api.getSourceVersionContent(source_version_id, { | ||
| signal, | ||
| ...(format === undefined ? {} : { format }), | ||
| }), signal)); | ||
| server.registerTool("report_outcome", { | ||
@@ -426,3 +877,3 @@ description: "Report what actually happened after a prior check, using the receipt id it returned, so Kaval can calibrate. Use `relied_and_correct` when you acted on an ALLOW and it held; `current_later_contradicted` when an ALLOW turned out to be wrong; `stale_caught_real` when a REVIEW/BLOCK caught a genuine change; `stale_was_false_alarm` when it did not.", | ||
| server.registerTool("verify", { | ||
| description: "DEPRECATED — prefer the `check` tool. Verifies one load-bearing conclusion against evidence references you supply and returns a signed ProofPacket receipt (status valid | invalidated | could_not_verify, receipt.decision ALLOW | REVIEW | BLOCK). Kept only for existing pilot integrations that pass explicit evidence_refs; it will be removed. New calls should use `check`, which needs no evidence list, is answered from watched state in milliseconds, and keeps monitoring the facts afterwards.", | ||
| description: "DEPRECATED — prefer the `check` tool. Verifies one load-bearing conclusion against evidence references you supply and returns a signed ProofPacket receipt (status valid | invalidated | could_not_verify, receipt.decision ALLOW | REVIEW | BLOCK). Kept only for existing pilot integrations that pass explicit evidence_refs; it will be removed. New calls should use `check`, which needs no evidence list, is answered from watched state with no model call and no fetch, and keeps monitoring the facts afterwards.", | ||
| inputSchema: { | ||
@@ -448,4 +899,77 @@ conclusion: z | ||
| }, async ({ idempotency_key, ...args }, { signal }) => safe(() => api.verify(args, transportOptions(idempotency_key, signal)), signal)); | ||
| server.registerResource("contract", new ResourceTemplate("kaval://contracts/{contract_id}", { | ||
| list: undefined, | ||
| }), { | ||
| title: "Contract status", | ||
| description: "One contract and its current extraction status.", | ||
| mimeType: "application/json", | ||
| }, async (uri, variables, { signal }) => resourceJson(uri, () => api.getContract(templateId(variables.contract_id, "contract_id"), { | ||
| signal, | ||
| }))); | ||
| server.registerResource("contract-claims", new ResourceTemplate("kaval://contracts/{contract_id}/claims", { | ||
| list: undefined, | ||
| }), { | ||
| title: "Contract claim candidates", | ||
| description: "The first page of extracted claim candidates for one contract.", | ||
| mimeType: "application/json", | ||
| }, async (uri, variables, { signal }) => resourceJson(uri, () => api.listContractClaims(templateId(variables.contract_id, "contract_id"), { signal, limit: MAX_PORTFOLIO_PAGE_SIZE }))); | ||
| server.registerResource("contract-extraction-issues", new ResourceTemplate("kaval://contracts/{contract_id}/extraction-issues", { | ||
| list: undefined, | ||
| }), { | ||
| title: "Contract extraction issues", | ||
| description: "The first page of deterministic extraction failures for one contract.", | ||
| mimeType: "application/json", | ||
| }, async (uri, variables, { signal }) => resourceJson(uri, () => api.listContractExtractionIssues(templateId(variables.contract_id, "contract_id"), { signal, limit: MAX_PORTFOLIO_PAGE_SIZE }))); | ||
| server.registerResource("structured-bulletins", "kaval://bulletins", { | ||
| title: "Structured bulletins", | ||
| description: "The newest structured payer bulletins in this workspace.", | ||
| mimeType: "application/json", | ||
| }, async (uri, { signal }) => resourceJson(uri, () => api.listBulletins({ signal, limit: 50 }))); | ||
| server.registerResource("bulletin-extraction-attempts", "kaval://bulletins/extraction-attempts", { | ||
| title: "Bulletin extraction attempts", | ||
| description: "The newest customer-readable bulletin extraction lifecycle records.", | ||
| mimeType: "application/json", | ||
| }, async (uri, { signal }) => resourceJson(uri, () => api.listBulletinExtractionAttempts({ signal, limit: 50 }))); | ||
| server.registerResource("structured-bulletin", new ResourceTemplate("kaval://bulletins/{source_version_id}", { | ||
| list: undefined, | ||
| }), { | ||
| title: "Structured bulletin", | ||
| description: "One structured payer bulletin with field evidence.", | ||
| mimeType: "application/json", | ||
| }, async (uri, variables, { signal }) => resourceJson(uri, () => api.getBulletin(templateId(variables.source_version_id, "source_version_id"), { signal }))); | ||
| server.registerResource("bulletin-extraction-attempt", new ResourceTemplate("kaval://bulletins/extraction-attempts/{source_version_id}", { list: undefined }), { | ||
| title: "Bulletin extraction attempt", | ||
| description: "One customer-readable bulletin extraction lifecycle record.", | ||
| mimeType: "application/json", | ||
| }, async (uri, variables, { signal }) => resourceJson(uri, () => api.getBulletinExtractionAttempt(templateId(variables.source_version_id, "source_version_id"), { signal }))); | ||
| server.registerResource("fact-import", new ResourceTemplate("kaval://fact-imports/{import_id}", { | ||
| list: undefined, | ||
| }), { | ||
| title: "Bulk fact import", | ||
| description: "One bulk fact import and its item results.", | ||
| mimeType: "application/json", | ||
| }, async (uri, variables, { signal }) => resourceJson(uri, () => api.getFactImport(templateId(variables.import_id, "import_id"), { | ||
| signal, | ||
| }))); | ||
| server.registerResource("training-jobs", "kaval://training-jobs", { | ||
| title: "Training jobs", | ||
| description: "The newest read-only training and evaluation job statuses.", | ||
| mimeType: "application/json", | ||
| }, async (uri, { signal }) => resourceJson(uri, () => api.listTrainingJobs({ signal, limit: 50 }))); | ||
| server.registerResource("training-feedback", "kaval://training-feedback", { | ||
| title: "Training feedback", | ||
| description: "Reviewed feedback and each item's explicit training-use state.", | ||
| mimeType: "application/json", | ||
| }, async (uri, { signal }) => resourceJson(uri, () => api.listTrainingFeedback({ signal, limit: 50 }))); | ||
| server.registerResource("training-job", new ResourceTemplate("kaval://training-jobs/{job_id}", { | ||
| list: undefined, | ||
| }), { | ||
| title: "Training job", | ||
| description: "One read-only training and evaluation job status.", | ||
| mimeType: "application/json", | ||
| }, async (uri, variables, { signal }) => resourceJson(uri, () => api.getTrainingJob(templateId(variables.job_id, "job_id"), { | ||
| signal, | ||
| }))); | ||
| return server; | ||
| } | ||
| //# sourceMappingURL=server.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"} |
+2
-2
| { | ||
| "name": "@usekaval/mcp", | ||
| "mcpName": "io.github.LufeMC/kaval", | ||
| "version": "0.7.1", | ||
| "version": "0.7.2", | ||
| "license": "Apache-2.0", | ||
@@ -52,3 +52,3 @@ "description": "MCP server for Kaval: before an AI agent acts, verify the facts the action depends on — ALLOW, REVIEW, or BLOCK, with a signed receipt.", | ||
| "zod": "^3.24.1", | ||
| "@usekaval/kaval": "^0.7.1" | ||
| "@usekaval/kaval": "^0.7.2" | ||
| }, | ||
@@ -55,0 +55,0 @@ "devDependencies": { |
+121
-52
@@ -44,12 +44,58 @@ # @usekaval/mcp | ||
| | Tool | What it does | | ||
| | ---------------- | ---------------------------------------------------------------------------------------------------------------------- | | ||
| | `check` | **The one that does the work.** Send the action you are about to take (or the claims it rests on) → `ALLOW` / `REVIEW` / `BLOCK`, per-fact status, and a signed receipt. | | ||
| | `get_receipt` | The full signed document behind a check's `receipt.id` — per-fact evidence basis, decision-rule version, signing key. What an agent attaches when it blocks. | | ||
| | `add_source` | Tell Kaval what to watch — a URL, a named authority to resolve, or a document you will push in. | | ||
| | `list_sources` | What Kaval currently watches for this workspace, including sources it auto-registered after a check cited them. | | ||
| | `remove_source` | Stop watching a source and forget it. The only thing that frees registry capacity, which auto-registered sources also consume. | | ||
| | `report_outcome` | Report what actually happened after a prior check (by `receipt.id`), so Kaval can calibrate. | | ||
| | `verify` | **Deprecated** pilot alias: one conclusion + explicit `evidence_refs` → a signed ProofPacket receipt. Use `check`. | | ||
| | Tool | What it does | | ||
| | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | ||
| | `check` | **The one that does the work.** Send the action you are about to take (or the claims it rests on) → `ALLOW` / `REVIEW` / `BLOCK`, per-fact status, and a signed receipt. | | ||
| | `get_receipt` | The full signed document behind a check's `receipt.id` — per-fact evidence basis, decision-rule version, signing key. What an agent attaches when it blocks. | | ||
| | `prepare_contract_upload` | Create a private PDF upload target. | | ||
| | `ingest_contract` | Queue canonical text, an HTTPS document, or an uploaded PDF for extraction. | | ||
| | `get_contract` | Get contract processing status, candidate counts, and extraction issue state. | | ||
| | `list_contract_claims` | List extracted candidates with exact evidence spans. | | ||
| | `list_contract_extraction_issues` | List deterministic extraction failures that need customer review. | | ||
| | `review_contract_claim` | Approve, correct, or reject one candidate with immutable version control. | | ||
| | `import_facts` | Queue up to 400 reviewed facts for warm checks. | | ||
| | `get_fact_import` | Get one bulk import and every item result. | | ||
| | `list_bulletins` | **Soft-deprecated** — filter structured bulletins by payer, policy, code, date, or status. Prefer `list_policy_updates` for new integrations. | | ||
| | `get_bulletin` | **Soft-deprecated** — get one structured bulletin with field evidence. Prefer `get_policy_update`. | | ||
| | `list_bulletin_extraction_attempts` | **Soft-deprecated** — list customer-readable bulletin extraction status and failures. Prefer `list_policy_updates`. | | ||
| | `get_bulletin_extraction_attempt` | **Soft-deprecated** — get one bulletin extraction attempt by source-version id. Prefer `get_policy_update`. | | ||
| | `list_training_jobs` | List read-only training and evaluation status. | | ||
| | `get_training_job` | Get one read-only training job. | | ||
| | `list_training_feedback` | List reviewed feedback and its effective training-use state. | | ||
| | `record_training_feedback_consent` | Record an explicit training-use decision for one reviewed feedback item. | | ||
| | `create_extraction_schema` | Register a JSON Schema Kaval extracts structured records against. Requires `policy-update:manage`. | | ||
| | `list_extraction_schemas` | List the extraction schemas registered in this workspace. | | ||
| | `create_policy_update` | Request a one-off payer + period extraction run against a bound schema. Requires `policy-update:manage`. | | ||
| | `get_policy_update` | Get one extraction run ('policy update') by id — status, schema, and result once it succeeds. | | ||
| | `list_policy_updates` | List extraction runs, optionally filtered by payer and/or publication-month `YYYY-MM` period. | | ||
| | `list_policy_update_packages` | List the monthly PDF + manifest rollups extraction runs are packaged into. | | ||
| | `add_source` | Tell Kaval what to watch — a URL, a named authority to resolve, or a document you will push in. | | ||
| | `list_sources` | What Kaval currently watches for this workspace, including sources it auto-registered after a check cited them. | | ||
| | `remove_source` | Stop watching a source and forget it. The only thing that frees registry capacity, which auto-registered sources also consume. | | ||
| | `update_source` | Bind (or unbind) an extraction schema on a watched source, so every document that lands on it is extracted automatically. Requires `policy-update:manage`. | | ||
| | `get_source_version_content` | Fetch the captured content of one fetched source version, as raw text or pre-split `sections`. | | ||
| | `report_outcome` | Report what actually happened after a prior check (by `receipt.id`), so Kaval can calibrate. | | ||
| | `verify` | **Deprecated** pilot alias: one conclusion + explicit `evidence_refs` → a signed ProofPacket receipt. Use `check`. | | ||
| ## Resources | ||
| The server publishes these JSON resources: | ||
| - `kaval://bulletins` | ||
| - `kaval://bulletins/extraction-attempts` | ||
| - `kaval://training-jobs` | ||
| - `kaval://training-feedback` | ||
| - `kaval://contracts/{contract_id}` | ||
| - `kaval://contracts/{contract_id}/claims` | ||
| - `kaval://contracts/{contract_id}/extraction-issues` | ||
| - `kaval://bulletins/{source_version_id}` | ||
| - `kaval://bulletins/extraction-attempts/{source_version_id}` | ||
| - `kaval://fact-imports/{import_id}` | ||
| - `kaval://training-jobs/{job_id}` | ||
| The training resources are read-only. Feedback review and consent require `training:manage`. | ||
| Bulletin extraction status is read-only. MCP does not expose the operator requeue control. | ||
| MCP does not start training or promote a model. | ||
| ## `check` | ||
@@ -62,3 +108,3 @@ | ||
| "context": "payer: Aetna; CPT 12345; plan HMO", | ||
| "materiality": "critical" | ||
| "materiality": "critical", | ||
| } | ||
@@ -72,7 +118,11 @@ ``` | ||
| "claims": [ | ||
| { "subject": "Aetna", "predicate": "requires_prior_auth_for", "object": "CPT 12345", | ||
| "scope": { "plan": "HMO", "state": "CA" } }, | ||
| "The 2024 IBC is the current edition" | ||
| { | ||
| "subject": "Aetna", | ||
| "predicate": "requires_prior_auth_for", | ||
| "object": "CPT 12345", | ||
| "scope": { "plan": "HMO", "state": "CA" }, | ||
| }, | ||
| "The 2024 IBC is the current edition", | ||
| ], | ||
| "mode": "fast" | ||
| "mode": "fast", | ||
| } | ||
@@ -83,9 +133,9 @@ ``` | ||
| | field | meaning | | ||
| | -------------- | ---------------------------------------------------------------------------------------------------- | | ||
| | field | meaning | | ||
| | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | `decision` | `ALLOW` — every material fact still holds on fresh evidence, proceed.<br>`REVIEW` — something is unknown, mid-re-evaluation, or changed at low/medium materiality. **REVIEW is never permission to act.**<br>`BLOCK` — a high/critical fact changed, or a critical fact is unknown. | | ||
| | `reason_codes` | one or more of `ALL_FACTS_HOLD`, `FACT_CHANGED`, `FACT_EXPIRED`, `FACT_UNKNOWN`, `SOURCE_UPDATED_PENDING_REVIEW`, `SOURCE_UNREACHABLE`, `NEW_FACT_UNVERIFIED`, `COMPILATION_UNCERTAIN` | | ||
| | `facts[]` | `{ fingerprint, text, status: holds \| changed \| unknown, materiality, served_from_state, last_verified_at, sources[] }` — this is how you see *which* belief moved | | ||
| | `receipt` | `{ id, signature, signed_at }`. Pass `receipt.id` to `report_outcome`, or to `get_receipt` for the full signed document | | ||
| | `latency_ms` | `{ compile, lookup, live, total }` | | ||
| | `reason_codes` | one or more of `ALL_FACTS_HOLD`, `FACT_CHANGED`, `FACT_EXPIRED`, `FACT_UNKNOWN`, `SOURCE_UPDATED_PENDING_REVIEW`, `SOURCE_UNREACHABLE`, `NEW_FACT_UNVERIFIED`, `COMPILATION_UNCERTAIN` | | ||
| | `facts[]` | `{ fingerprint, text, status: holds \| changed \| unknown, materiality, served_from_state, last_verified_at, sources[] }` — this is how you see _which_ belief moved | | ||
| | `receipt` | `{ id, signature, signed_at }`. Pass `receipt.id` to `report_outcome`, or to `get_receipt` for the full signed document | | ||
| | `latency_ms` | `{ compile, lookup, live, total }` | | ||
@@ -106,4 +156,4 @@ `mode: "fast"` answers only from stored state and reports anything unknown as `unknown`; | ||
| A fact already backed by a watched source is answered from stored state in ~50ms with zero model | ||
| calls and zero fetches, so calling `check` on every consequential action is cheap. A fact Kaval has | ||
| A fact already backed by a watched source is answered from stored state with zero model calls and | ||
| zero fetches, so calling `check` on every consequential action is cheap. A fact Kaval has | ||
| never seen has to be researched first, and that takes seconds. | ||
@@ -113,3 +163,3 @@ | ||
| `add_source` is what makes a check a database read instead of a research run. Registering the *name* | ||
| `add_source` is what makes a check a database read instead of a research run. Registering the _name_ | ||
| of an authority is usually enough: | ||
@@ -123,6 +173,6 @@ | ||
| one page; `kind: "push"` is a document your own system sends to `POST /v1/events`. Registering is | ||
| optional — a source a check cites is auto-watched — but registering first is what makes the *first* | ||
| optional — a source a check cites is auto-watched — but registering first is what makes the _first_ | ||
| check on a fact fast. | ||
| That auto-watching is why `remove_source` exists. A workspace watches a bounded number of *active* | ||
| That auto-watching is why `remove_source` exists. A workspace watches a bounded number of _active_ | ||
| sources (200), auto-registered sources count against the same bound, and only deletion frees it — | ||
@@ -133,29 +183,49 @@ pausing does not. An agent that registers per task and never removes will eventually fill the | ||
| ## Policy updates | ||
| `create_extraction_schema` registers a JSON Schema; bind its `id` to a watched source with | ||
| `update_source({ id, extraction_schema_id })` and every document that lands on that source afterward | ||
| is extracted against the schema automatically — no polling. For a one-off run against a payer + | ||
| period instead of waiting for the next document, call `create_policy_update` directly. Either way, | ||
| `get_policy_update` / `list_policy_updates` report the run's lifecycle | ||
| (`processing` → `retry` → `succeeded` / `review_required` / `failed`), and | ||
| `list_policy_update_packages` lists the monthly PDF + manifest rollups each payer/period is packaged | ||
| into. `get_source_version_content` fetches the canonical text (or `format: "sections"`) an extraction | ||
| run was computed from. | ||
| This is the schema-bound successor to the free-text bulletin tools (`list_bulletins`, `get_bulletin`, | ||
| `list_bulletin_extraction_attempts`, `get_bulletin_extraction_attempt`), which are soft-deprecated but | ||
| keep working. | ||
| ## Delta webhooks are not an agent tool | ||
| Watched sources are only half the mechanism: when a source changes, Kaval re-evaluates the dependent | ||
| facts and pushes a `fact_state.delta` webhook naming what flipped. **That subscription is | ||
| deliberately not exposed as an MCP tool.** It is one-time deployment configuration — it mints a | ||
| standing outbound callback bound to an https endpoint and a signing secret that must be stored, which | ||
| is a deploy-time decision for a human or a service, not an in-loop choice for an agent that owns | ||
| neither the endpoint nor the secret. | ||
| facts and pushes a `fact_state.delta` webhook naming what flipped; a source with a bound extraction | ||
| schema also pushes `policy_update.document` (and, monthly, `policy_update.monthly_package`) with the | ||
| extracted records, optional section `page`/`bbox`, and `record_evidence` for PDF highlighting. | ||
| `extraction_run.period` is the publication / newsletter month. **Those subscriptions are | ||
| deliberately not exposed as MCP tools.** They are | ||
| one-time deployment configuration — each mints a standing outbound callback bound to an https | ||
| endpoint and a signing secret that must be stored, which is a deploy-time decision for a human or a | ||
| service, not an in-loop choice for an agent that owns neither the endpoint nor the secret. | ||
| Configure it once from the SDK (`kaval.subscribeFactStateDeltas({ callback_url })` in Node, | ||
| `kaval.subscribe_fact_state_deltas(callback_url=…)` in Python), from `POST /v1/webhooks` with | ||
| `subscription_kind: "fact_state"`, or from the dashboard. The agent then just calls `check`, and it | ||
| is already fast and already current. | ||
| Configure them once from the SDK (`kaval.subscribeFactStateDeltas({ callback_url })` / | ||
| `kaval.subscribePolicyUpdates({ callback_url })` in Node, `kaval.subscribe_fact_state_deltas(…)` / | ||
| `kaval.subscribe_policy_updates(…)` in Python), from `POST /v1/webhooks` with | ||
| `subscription_kind: "fact_state"` or `"policy_update"`, or from the dashboard. The agent then just | ||
| calls `check` (or reads `list_policy_updates`), and it is already fast and already current. | ||
| ## Migrating from 0.5 | ||
| | 0.5 tool | 0.6 | | ||
| | ------------------------------- | --------------------------------------------------------------------------------------- | | ||
| | `currentness_check` | `check` — `{ action }` or `{ claims: ["…"] }` | | ||
| | 0.5 tool | 0.6 | | ||
| | ------------------------------- | ----------------------------------------------------------------------------------------- | | ||
| | `currentness_check` | `check` — `{ action }` or `{ claims: ["…"] }` | | ||
| | `currentness_verify` | `check` — branch on `decision === "ALLOW"` instead of `act === true` | | ||
| | `currentness_extract_and_check` | `check` — pass the paragraph as `action`/`context`; Kaval compiles the facts itself | | ||
| | `currentness_scan_store` | `check` — `{ claims: [...] }`, up to 20 per call | | ||
| | `currentness_scan_store` | `check` — `{ claims: [...] }`, up to 20 per call | | ||
| | `currentness_monitor` | `add_source` + a `fact_state` webhook subscription (see above) — deltas are pushed to you | | ||
| | `proof_audit` | `check` — the receipt **is** the proof; `get_receipt` returns the signed document | | ||
| | `proof_gate` | `check` — the warm path re-checks in ~50ms, so there is nothing to re-apply separately | | ||
| | `report_outcome` | `report_outcome` (unchanged; pass `receipt.id`) | | ||
| | `verify` | `verify`, now deprecated → move to `check` | | ||
| | `proof_gate` | `check` — the warm path re-checks from stored state, so there is nothing to re-apply | | ||
| | `report_outcome` | `report_outcome` (unchanged; pass `receipt.id`) | | ||
| | `verify` | `verify`, now deprecated → move to `check` | | ||
@@ -172,6 +242,5 @@ Status mapping: `current` + `act: true` → `decision: "ALLOW"` with every fact `holds`; | ||
| `verify` is the only billable tool that carries an operation key: it attaches a unique | ||
| `idempotency_key` automatically and reuses it for one bounded retry when the transport outcome is | ||
| ambiguous or the API is still finalizing that operation. If both attempts stay ambiguous the tool | ||
| error includes `idempotency_key` — pass that exact value back on a later retry. | ||
| Contract uploads, contract creation, claim reviews, fact imports, `create_extraction_schema`, | ||
| `create_policy_update`, and `verify` carry operation keys. The server creates a key when you omit | ||
| one. Reuse the returned key after an ambiguous failure. | ||
@@ -186,9 +255,9 @@ `check` deliberately carries none: it is a read of current state, so a retry recomputes rather than | ||
| | `error` | what to do | | ||
| | ---------------------- | ------------------------------------------------------------------------ | | ||
| | any API code (`unauthorized`, `insufficient_balance`, `bad_request`, …) | returned verbatim with `status` and the API's `message` | | ||
| | `tool_retired` | 410 — the message names the route that replaced the one you called | | ||
| | `timeout` | retry with `mode: "fast"` or a smaller `max_wait_ms` | | ||
| | `network_unreachable` | the API was never reached — check `KAVAL_BASE_URL` and network access | | ||
| | `request_ambiguous` | a billable call whose outcome is unknown; retry with the returned `idempotency_key` | | ||
| | `error` | what to do | | ||
| | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | | ||
| | any API code (`unauthorized`, `insufficient_balance`, `bad_request`, …) | returned verbatim with `status` and the API's `message` | | ||
| | `tool_retired` | 410 — the message names the route that replaced the one you called | | ||
| | `timeout` | retry with `mode: "fast"` or a smaller `max_wait_ms` | | ||
| | `network_unreachable` | the API was never reached — check `KAVAL_BASE_URL` and network access | | ||
| | `request_ambiguous` | a billable call whose outcome is unknown; retry with the returned `idempotency_key` | | ||
@@ -195,0 +264,0 @@ ## Signed receipts |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
131361
82.62%1083
95.14%311
28.51%Updated