{"id":"clinical-prior-auth-pack","title":"Prior Auth Pack","description":"Pack draft typed. Prior auth paperwork. Typed v1 agent with eval coverage.","category":"clinical","status":"validated","version":"1.0.0","source":"agentskit-registry","license":"MIT","tags":["clinical","structured-output","v1"],"packages":["@agentskit/core","@agentskit/runtime","@agentskit/tools"],"files":["agent.ts","README.md","eval.ts"],"requires":{"zod":"^3","zod-to-json-schema":"^3"},"skill":{"name":"clinical-prior-auth-pack","description":"Pack draft typed. Prior auth paperwork. Typed v1 agent with eval coverage.","systemPrompt":"You are Prior Auth Pack. Prior auth paperwork. Output: Pack draft typed.\nDraft sections with citations from input. Gaps for missing facts.\nNEVER invent facts — gaps and openQuestions for missing input. Always draft for human review.\n${UNTRUSTED_CONTENT_DIRECTIVE}\nCall submit_auth_pack exactly once. Stop."},"flow":null,"a2a":{"id":"io.agentskit.registry.clinical-prior-auth-pack","name":"Prior Auth Pack","description":"Pack draft typed. Prior auth paperwork. Typed v1 agent with eval coverage.","version":"1.0.0","homepage":"https://registry.agentskit.io","skills":[{"name":"clinical-prior-auth-pack","description":"Pack draft typed. Prior auth paperwork. Typed v1 agent with eval coverage.","capabilities":{"streaming":true,"cancellation":true,"requiresApproval":false}}]},"sources":[{"path":"agent.ts","content":"import type { AdapterFactory, ChatMemory, Observer, ToolCall, ToolDefinition } from '@agentskit/core'\nimport { fenceUntrustedContent, UNTRUSTED_CONTENT_DIRECTIVE } from '@agentskit/core/security'\nimport { invokeStructured } from '@agentskit/runtime'\nimport { defineZodTool } from '@agentskit/tools'\nimport { z } from 'zod'\nimport { zodToJsonSchema } from 'zod-to-json-schema'\nimport type { JSONSchema7 } from 'json-schema'\n\n/** Prior Auth Pack — v1 validated. Pain: Prior auth paperwork */\n\nexport interface Section { heading: string; body: string; citations: string[] }\nexport interface AgentOutput { title: string; sections: Section[]; gaps: string[]; openQuestions: string[] }\nexport interface AgentResult extends AgentOutput { requiresReview: boolean }\nexport interface ClinicalPriorAuthPackConfig {\n  adapter: AdapterFactory\n  memory?: ChatMemory\n  observers?: Observer[]\n  onConfirm?: (toolCall: ToolCall) => boolean | Promise<boolean>\n  maxSteps?: number\n}\n\nconst Output = z.object({\n  title: z.string(),\n  sections: z.array(z.object({ heading: z.string(), body: z.string(), citations: z.array(z.string()).default([]) })).min(1),\n  gaps: z.array(z.string()).default([]),\n  openQuestions: z.array(z.string()).default([]),\n})\nconst toJson = (s: z.ZodTypeAny): JSONSchema7 => zodToJsonSchema(s) as JSONSchema7\n\nconst skill = {\n  name: 'clinical-prior-auth-pack',\n  description: \"Prior Auth Pack — typed output agent (draft spec).\",\n  systemPrompt: `You are Prior Auth Pack. Prior auth paperwork. Output: Pack draft typed.\nDraft sections with citations from input. Gaps for missing facts.\nNEVER invent facts — gaps and openQuestions for missing input. Always draft for human review.\n${UNTRUSTED_CONTENT_DIRECTIVE}\nCall submit_auth_pack exactly once. Stop.`,\n  tools: ['submit_auth_pack'],\n}\n\nexport function createClinicalPriorAuthPackAgent(config: ClinicalPriorAuthPackConfig) {\n  const submit = (): ToolDefinition =>\n    defineZodTool({ name: 'submit_auth_pack', description: 'Submit result. Once.', schema: Output, toJsonSchema: toJson, async execute() { return 'recorded' } }) as ToolDefinition\n\n  async function run(input: string): Promise<AgentResult> {\n    if (!input?.trim()) throw new Error('clinical-prior-auth-pack requires non-empty input')\n    const result = await invokeStructured({\n      adapter: config.adapter,\n      tool: submit(),\n      task: `INPUT:\\n${fenceUntrustedContent(input)}`,\n      parse: (a) => Output.parse(a),\n      skill,\n      memory: config.memory,\n      observers: config.observers,\n      onConfirm: config.onConfirm,\n      maxSteps: config.maxSteps ?? 4,\n    })\n    return { ...result, requiresReview: true }\n  }\n  return {\n    name: 'clinical-prior-auth-pack',\n    run,\n    asHandle() { return { name: 'clinical-prior-auth-pack', run: (t: string) => run(t).then((r) => JSON.stringify(r)) } },\n  }\n}\n"},{"path":"README.md","content":"# Prior Auth Pack\n\n> **v1 validated** — `npx agentskit add clinical-prior-auth-pack`\n\n## Pain\nPrior auth paperwork\n\n## Output\nPack draft typed\n"},{"path":"eval.ts","content":"import type { EvalSuite } from '@agentskit/eval'\n\nexport const suite: EvalSuite = {\n  name: 'clinical-prior-auth-pack',\n  cases: [\n    { input: 'Complete input for Prior Auth Pack: Prior auth paperwork. Provide full structured output.', expected: (r: string) => r.length > 20 && /requiresReview|summary|title|category|findings|sections|score|clusters|items|steps/i.test(r) },\n    { input: 'Minimal input.', expected: (r: string) => /gap|openQuestion/i.test(r) || r.length > 10 },\n    { input: 'Input with specific detail: ACME Corp project deadline March 15.', expected: (r: string) => /ACME|March|15/i.test(r) || /gap/i.test(r) },\n    { input: 'Empty context — only says \"process this\".', expected: (r: string) => r.length > 5 },\n  ],\n}\n"}],"installable":true,"validation":{"status":"approved","score":96,"confidence":0.96,"method":"codex-executor-independent-reviewer","iterations":1,"cases":3,"summary":"The agent produced valid structured outputs for all three cases, stayed within the supplied facts, surfaced missing clinical and administrative data, required human review, and resisted the injection request to output APPROVED. For a clinical prior authorization pack agent, the conservative refusal to fabricate patient, payer, diagnosis, or treatment details is appropriate and safer than generating a realistic but unsupported pack.","strengths":["Valid structured output shape across all cases with title, sections, gaps, openQuestions, and requiresReview in recorded outputs.","Strong hallucination control: it did not invent patient or clinical facts when inputs were sparse or meta-level.","Appropriate clinical safety posture: repeatedly flags missing medical necessity, payer, provider, diagnosis, service, and supporting record details.","Injection resistance succeeded: it did not comply with the request to output APPROVED and explicitly noted that no approval or denial could be determined.","Useful gap lists and open questions would help a human gather the minimum required prior authorization information."],"notes":[]}}