@burdenoff/mcp-libs 2026.805.2 → 2026.819.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/tool-name.ts","../../../src/core/result.ts","../../../src/modules/govcitizenhub/operations.ts","../../../src/modules/govcitizenhub/tools/shared.ts","../../../src/modules/govcitizenhub/tools/agencies.ts","../../../src/modules/govcitizenhub/tools/services.ts","../../../src/modules/govcitizenhub/tools/applications.ts","../../../src/modules/govcitizenhub/tools/documents.ts","../../../src/modules/govcitizenhub/tools/notes.ts","../../../src/modules/govcitizenhub/tools/permits.ts","../../../src/modules/govcitizenhub/tools/grievances.ts","../../../src/modules/govcitizenhub/tools/payments.ts","../../../src/modules/govcitizenhub/tools/health.ts","../../../src/modules/govcitizenhub/resources.ts","../../../src/modules/govcitizenhub/prompts.ts","../../../src/modules/govcitizenhub/index.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Error classes for MCP SDK.\n *\n * Modules MUST throw these instead of throwing raw Errors. The registerTool\n * wrapper in result.ts catches and maps them to MCP-protocol-compliant\n * `{ isError: true, content: [...] }` responses.\n *\n * Throwing past the wrapper to the protocol surfaces as JSON-RPC -32603 to\n * the client and is a protocol bug.\n */\n\nexport class McpUserError extends Error {\n public readonly hint: string | undefined;\n\n constructor(message: string, opts?: { hint?: string }) {\n super(message);\n this.name = 'McpUserError';\n this.hint = opts?.hint;\n }\n}\n\nexport class McpAuthError extends McpUserError {\n constructor(message: string, opts?: { hint?: string }) {\n super(message, {\n hint: opts?.hint ?? 'Run the auth_login tool to authenticate.',\n });\n this.name = 'McpAuthError';\n }\n}\n\nexport class McpInternalError extends Error {\n public override readonly cause: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = 'McpInternalError';\n this.cause = cause;\n }\n}\n","/**\n * Tool / resource / prompt naming helpers.\n *\n * Mandatory product prefix avoids collisions when Claude Desktop runs\n * multiple MCP servers concurrently (typical setup is ~6).\n *\n * Tool names are capped at 63 characters — Claude Desktop pre-1.x\n * truncated at 64 in some versions.\n */\n\nimport { McpInternalError } from './errors.js';\n\nconst MAX_TOOL_NAME_LENGTH = 63;\n\nfunction assertSafeName(name: string, kind: 'tool' | 'resource' | 'prompt'): string {\n if (kind === 'tool' && name.length > MAX_TOOL_NAME_LENGTH) {\n throw new McpInternalError(\n `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`,\n );\n }\n return name;\n}\n\n/**\n * Build a tool name. Format: `<productName>_<...parts>` (snake_case).\n * Example: mcpToolName('vibecontrols', 'vibes', 'list') -> 'vibecontrols_vibes_list'\n */\nexport function mcpToolName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpToolName: productName is required');\n }\n const name = [productName, ...parts].filter(Boolean).join('_');\n return assertSafeName(name, 'tool');\n}\n\n/**\n * Build a resource URI. Format: `<productName>://<...parts>`.\n * Example: mcpResourceUri('vibecontrols', 'schema') -> 'vibecontrols://schema'\n */\nexport function mcpResourceUri(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpResourceUri: productName is required');\n }\n return `${productName}://${parts.filter(Boolean).join('/')}`;\n}\n\n/**\n * Build a prompt name. Format: `<productName>-<...parts>` (kebab-case).\n * Example: mcpPromptName('vibecontrols', 'setup') -> 'vibecontrols-setup'\n */\nexport function mcpPromptName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpPromptName: productName is required');\n }\n return [productName, ...parts].filter(Boolean).join('-');\n}\n\nexport const TOOL_NAME_LIMIT = MAX_TOOL_NAME_LENGTH;\n\n/**\n * Name-based hint heuristics for MCP `annotations` (readOnlyHint /\n * destructiveHint). Used by tool-governance.ts to auto-fill annotations for\n * the fleet of product modules that call `server.registerTool` directly\n * (bypassing the `registerTool()` core helper) and so never set them\n * explicitly today (BOFF-3903). Deliberately conservative — matched against\n * whole `_`-delimited segments so e.g. `timeentries_delete` and\n * `pomodoro_delete_goal` match, but a hypothetical `undeletable_check`\n * would not.\n *\n * A module can always override the inference by passing an explicit\n * `annotations` object to `registerTool()` / `server.registerTool()`.\n */\nconst DESTRUCTIVE_NAME_SEGMENT = /(?:^|_)delete(?:_|$)/i;\nconst READ_ONLY_NAME_SEGMENT = /(?:^|_)(?:list|get|search|check|read|count|stats|by_date)(?:_|$)/i;\n\n/** True when a tool name looks destructive (irreversibly deletes data) by naming convention. */\nexport function inferDestructiveHint(toolName: string): boolean {\n return DESTRUCTIVE_NAME_SEGMENT.test(toolName);\n}\n\n/**\n * True when a tool name looks read-only by naming convention. Never true for\n * a name that also looks destructive (a tool can't be both).\n */\nexport function inferReadOnlyHint(toolName: string): boolean {\n return !inferDestructiveHint(toolName) && READ_ONLY_NAME_SEGMENT.test(toolName);\n}\n","/**\n * MCP tool result helpers + central handler.\n *\n * Modules NEVER call server.registerTool directly — they use registerTool()\n * from this module so the central try/catch wraps the handler and:\n * - maps thrown McpUserError / McpAuthError / McpInternalError to\n * MCP-protocol-compliant `{ isError: true, content: [...] }` shapes\n * - threads `_meta.progressToken` into ctx.progress for long ops\n * - emits a structured log line on every error\n * - never leaks `cause` from McpInternalError to the client\n *\n * This is the analog of cli-sdk's createProgram() central error handler.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { ZodRawShape } from 'zod';\nimport type { McpContext } from './context.js';\nimport { McpAuthError, McpInternalError, McpUserError } from './errors.js';\nimport type { ToolAnnotations } from './tool-governance.js';\n\nexport interface ToolTextContent {\n type: 'text';\n text: string;\n [k: string]: unknown;\n}\n\nexport interface ToolResult {\n content: ToolTextContent[];\n isError?: boolean;\n structuredContent?: Record<string, unknown>;\n [k: string]: unknown;\n}\n\nexport interface ToolMeta {\n progressToken?: string | number;\n}\n\n/**\n * Build a successful tool result with JSON content (pretty-printed).\n */\nexport function jsonResult(data: unknown, structured?: Record<string, unknown>): ToolResult {\n const result: ToolResult = {\n content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],\n };\n if (structured !== undefined) {\n result.structuredContent = structured;\n }\n return result;\n}\n\n/**\n * Build a successful tool result with plain text content.\n */\nexport function textResult(text: string): ToolResult {\n return { content: [{ type: 'text', text }] };\n}\n\n/**\n * Build an error tool result. Honors MCP's `{ isError: true, content }` shape.\n * Optional hint is appended on a new line so the LLM can react.\n */\nexport function errorResult(message: string, hint?: string): ToolResult {\n const text = hint ? `${message}\\n\\nHint: ${hint}` : message;\n return { content: [{ type: 'text', text }], isError: true };\n}\n\nexport interface ToolMetadata {\n title: string;\n description: string;\n inputSchema?: ZodRawShape;\n /**\n * Explicit MCP annotations (readOnlyHint / destructiveHint / ...). Optional\n * — when omitted, `wrapServerWithToolGovernance` (applied centrally in\n * `createMcpServer`) infers them from the tool name. Set this to override\n * the inference for a tool whose name doesn't match the naming convention.\n */\n annotations?: ToolAnnotations;\n}\n\nexport type ToolHandler<TArgs = Record<string, unknown>> = (\n args: TArgs,\n ctx: McpContext,\n meta: ToolMeta,\n) => Promise<unknown>;\n\n/**\n * Register a tool with the central error wrapper.\n *\n * The handler returns a plain value or void. The wrapper:\n * - wraps non-undefined returns in jsonResult()\n * - if the value already looks like a ToolResult (has `content`), passes through\n * - catches McpAuthError / McpUserError / McpInternalError / generic Error\n * - logs every error via ctx.logger.error\n */\nexport function registerTool<TArgs extends Record<string, unknown>>(\n server: McpServer,\n ctx: McpContext,\n name: string,\n metadata: ToolMetadata,\n handler: ToolHandler<TArgs>,\n): void {\n const sdkConfig = {\n title: metadata.title,\n description: metadata.description,\n ...(metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}),\n ...(metadata.annotations ? { annotations: metadata.annotations } : {}),\n };\n\n // The MCP SDK's registerTool signature is `(name, config, handler)`. The\n // handler arity depends on whether inputSchema is present (1-arg without,\n // 2-arg with). We accept a unified handler shape and dispatch at runtime.\n // The SDK's typing is strict and conditional on the inputSchema generic;\n // bypass with a cast since runtime acceptance is unconditional.\n const wrapped = async (...callbackArgs: unknown[]): Promise<ToolResult> => {\n const hasArgs = callbackArgs.length === 2;\n const args = (hasArgs ? callbackArgs[0] : {}) as TArgs;\n const extra = (hasArgs ? callbackArgs[1] : callbackArgs[0]) as\n | { _meta?: { progressToken?: string | number } }\n | undefined;\n\n const progressToken = extra?._meta?.progressToken;\n const meta: ToolMeta = progressToken !== undefined ? { progressToken } : {};\n\n try {\n const result = await handler(args, ctx, meta);\n if (isToolResult(result)) return result;\n if (result === undefined) return textResult('OK');\n return jsonResult(result);\n } catch (error) {\n return mapErrorToResult(error, ctx, name);\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (server as any).registerTool(name, sdkConfig, wrapped);\n}\n\nfunction isToolResult(value: unknown): value is ToolResult {\n return (\n !!value &&\n typeof value === 'object' &&\n 'content' in value &&\n Array.isArray((value as ToolResult).content)\n );\n}\n\nfunction mapErrorToResult(error: unknown, ctx: McpContext, toolName: string): ToolResult {\n if (error instanceof McpAuthError) {\n ctx.logger.warn(`${toolName}: auth required`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpUserError) {\n ctx.logger.info(`${toolName}: user error`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpInternalError) {\n ctx.logger.error(`${toolName}: internal error`, {\n message: error.message,\n cause: stringifyCause(error.cause),\n });\n return errorResult(`Internal error in ${toolName}.`);\n }\n const message = error instanceof Error ? error.message : String(error);\n ctx.logger.error(`${toolName}: unhandled error`, { message });\n return errorResult(`${toolName}: ${message}`);\n}\n\nfunction stringifyCause(cause: unknown): string | undefined {\n if (cause === undefined || cause === null) return undefined;\n if (cause instanceof Error) return cause.message;\n try {\n return JSON.stringify(cause);\n } catch {\n return String(cause);\n }\n}\n","/**\n * Centralized GraphQL operations for the GovCitizenHub MCP module.\n *\n * GovCitizenHub is the Government & Citizen Services Operating System\n * (future-products ecosystem). Backend subgraph:\n * ~/products/govcitizenhub/wspace-govcitizenhub-svc/ (Hive service name\n * `govcitizenhub`).\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is\n * carried by the gateway headers (x-workspace-id / X-Workspace-Authorization)\n * issued by the auth module — GovCitizenHub inputs do NOT carry a workspaceId.\n *\n * Every product-owned root field is prefixed `gov*` and every type/enum/input is\n * prefixed `Gov*` (the workspaces-supergraph collision contract); the operations\n * below call each field by its REAL name. List queries take a `PaginationInput`\n * ({ limit, offset, cursor }); the connection-returning lists surface\n * `{ items, pageInfo { cursor, hasMore } }`.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical kadaikodi module's operations file.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const AGENCY_FIELDS = `\n id code name description jurisdiction contactEmail contactPhone\n isActive tags workspaceId createdAt updatedAt\n`;\n\nexport const SERVICE_FIELDS = `\n id agencyId name slug category status summary eligibility\n feeType feeAmount currency slaDays requiredDocuments formSchema\n tags publishedAt workspaceId createdAt updatedAt\n`;\n\nexport const APPLICATION_FIELDS = `\n id reference serviceId citizenId assignedToId status priority\n formData tags submittedAt dueDate decidedAt decisionReason\n workspaceId createdAt updatedAt\n`;\n\nexport const DOCUMENT_FIELDS = `\n id applicationId name requirement status rejectionReason\n file { id } workspaceId createdAt updatedAt\n`;\n\nexport const CASE_NOTE_FIELDS = `\n id applicationId authorId body type workspaceId createdAt updatedAt\n`;\n\nexport const PERMIT_FIELDS = `\n id title serviceId holderId applicationId status verificationCode\n issuedAt expiresAt revokedAt revokeReason file { id }\n workspaceId createdAt updatedAt\n`;\n\nexport const GRIEVANCE_FIELDS = `\n id title description category status priority reporterId assignedToId\n agencyId location latitude longitude photoFileIds resolution resolvedAt\n tags workspaceId createdAt updatedAt\n`;\n\nexport const PAYMENT_FIELDS = `\n id applicationId payerId amount currency status providerRef\n receiptNumber lineItems paidAt refundedAt workspaceId createdAt updatedAt\n`;\n\nexport const PAGE_INFO_FIELDS = `cursor hasMore`;\n\n// ---------------------------------------------------------------------------\n// Agencies\n// ---------------------------------------------------------------------------\n\nexport const GET_AGENCY = `\n query GovGetAgency($id: ID!) {\n govAgency(id: $id) {\n ${AGENCY_FIELDS}\n services { id name slug category status }\n }\n }\n`;\n\nexport const LIST_AGENCIES = `\n query GovListAgencies($isActive: Boolean, $pagination: PaginationInput) {\n govListAgencies(isActive: $isActive, pagination: $pagination) {\n ${AGENCY_FIELDS}\n }\n }\n`;\n\nexport const CREATE_AGENCY = `\n mutation GovCreateAgency($input: GovCreateAgencyInput!) {\n govCreateAgency(input: $input) {\n ${AGENCY_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_AGENCY = `\n mutation GovUpdateAgency($id: ID!, $input: GovUpdateAgencyInput!) {\n govUpdateAgency(id: $id, input: $input) {\n ${AGENCY_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_AGENCY = `\n mutation GovArchiveAgency($id: ID!) {\n govArchiveAgency(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Services\n// ---------------------------------------------------------------------------\n\nexport const GET_SERVICE = `\n query GovGetService($id: ID!) {\n govService(id: $id) {\n ${SERVICE_FIELDS}\n agency { id name code }\n }\n }\n`;\n\nexport const LIST_SERVICES = `\n query GovListServices(\n $agencyId: ID\n $category: GovServiceCategory\n $status: GovServiceStatus\n $pagination: PaginationInput\n ) {\n govListServices(\n agencyId: $agencyId\n category: $category\n status: $status\n pagination: $pagination\n ) {\n items { ${SERVICE_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_SERVICE = `\n mutation GovCreateService($input: GovCreateServiceInput!) {\n govCreateService(input: $input) {\n ${SERVICE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_SERVICE = `\n mutation GovUpdateService($id: ID!, $input: GovUpdateServiceInput!) {\n govUpdateService(id: $id, input: $input) {\n ${SERVICE_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_SERVICE = `\n mutation GovTransitionService($id: ID!, $status: GovServiceStatus!) {\n govTransitionService(id: $id, status: $status) {\n ${SERVICE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Applications\n// ---------------------------------------------------------------------------\n\nexport const GET_APPLICATION = `\n query GovGetApplication($id: ID!) {\n govApplication(id: $id) {\n ${APPLICATION_FIELDS}\n documents { ${DOCUMENT_FIELDS} }\n notes { ${CASE_NOTE_FIELDS} }\n permits { ${PERMIT_FIELDS} }\n }\n }\n`;\n\nexport const LIST_APPLICATIONS = `\n query GovListApplications(\n $assignedToId: ID\n $citizenId: ID\n $serviceId: ID\n $status: GovApplicationStatus\n $pagination: PaginationInput\n ) {\n govListApplications(\n assignedToId: $assignedToId\n citizenId: $citizenId\n serviceId: $serviceId\n status: $status\n pagination: $pagination\n ) {\n items { ${APPLICATION_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_APPLICATION = `\n mutation GovCreateApplication($input: GovCreateApplicationInput!) {\n govCreateApplication(input: $input) {\n ${APPLICATION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_APPLICATION = `\n mutation GovUpdateApplication($id: ID!, $input: GovUpdateApplicationInput!) {\n govUpdateApplication(id: $id, input: $input) {\n ${APPLICATION_FIELDS}\n }\n }\n`;\n\nexport const SUBMIT_APPLICATION = `\n mutation GovSubmitApplication($id: ID!) {\n govSubmitApplication(id: $id) {\n ${APPLICATION_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_APPLICATION = `\n mutation GovTransitionApplication(\n $id: ID!\n $status: GovApplicationStatus!\n $reason: String\n ) {\n govTransitionApplication(id: $id, status: $status, reason: $reason) {\n ${APPLICATION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Documents\n// ---------------------------------------------------------------------------\n\nexport const ADD_DOCUMENT = `\n mutation GovAddDocument($input: GovAddDocumentInput!) {\n govAddDocument(input: $input) {\n ${DOCUMENT_FIELDS}\n }\n }\n`;\n\nexport const REVIEW_DOCUMENT = `\n mutation GovReviewDocument(\n $id: ID!\n $status: GovDocumentStatus!\n $rejectionReason: String\n ) {\n govReviewDocument(id: $id, status: $status, rejectionReason: $rejectionReason) {\n ${DOCUMENT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Case notes\n// ---------------------------------------------------------------------------\n\nexport const ADD_CASE_NOTE = `\n mutation GovAddCaseNote($input: GovAddCaseNoteInput!) {\n govAddCaseNote(input: $input) {\n ${CASE_NOTE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Permits\n// ---------------------------------------------------------------------------\n\nexport const LIST_PERMITS = `\n query GovListPermits($holderId: ID, $serviceId: ID, $status: GovPermitStatus) {\n govListPermits(holderId: $holderId, serviceId: $serviceId, status: $status) {\n ${PERMIT_FIELDS}\n }\n }\n`;\n\nexport const VERIFY_PERMIT = `\n query GovVerifyPermit($verificationCode: String!) {\n govVerifyPermit(verificationCode: $verificationCode) {\n ${PERMIT_FIELDS}\n }\n }\n`;\n\nexport const ISSUE_PERMIT = `\n mutation GovIssuePermit($input: GovIssuePermitInput!) {\n govIssuePermit(input: $input) {\n ${PERMIT_FIELDS}\n }\n }\n`;\n\nexport const REVOKE_PERMIT = `\n mutation GovRevokePermit($id: ID!, $reason: String) {\n govRevokePermit(id: $id, reason: $reason) {\n ${PERMIT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Grievances\n// ---------------------------------------------------------------------------\n\nexport const GET_GRIEVANCE = `\n query GovGetGrievance($id: ID!) {\n govGrievance(id: $id) {\n ${GRIEVANCE_FIELDS}\n }\n }\n`;\n\nexport const LIST_GRIEVANCES = `\n query GovListGrievances(\n $agencyId: ID\n $reporterId: ID\n $status: GovGrievanceStatus\n $pagination: PaginationInput\n ) {\n govListGrievances(\n agencyId: $agencyId\n reporterId: $reporterId\n status: $status\n pagination: $pagination\n ) {\n items { ${GRIEVANCE_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const REPORT_GRIEVANCE = `\n mutation GovReportGrievance($input: GovReportGrievanceInput!) {\n govReportGrievance(input: $input) {\n ${GRIEVANCE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_GRIEVANCE = `\n mutation GovUpdateGrievance($id: ID!, $input: GovUpdateGrievanceInput!) {\n govUpdateGrievance(id: $id, input: $input) {\n ${GRIEVANCE_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_GRIEVANCE = `\n mutation GovTransitionGrievance(\n $id: ID!\n $status: GovGrievanceStatus!\n $resolution: String\n ) {\n govTransitionGrievance(id: $id, status: $status, resolution: $resolution) {\n ${GRIEVANCE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Payments\n// ---------------------------------------------------------------------------\n\nexport const GET_PAYMENT = `\n query GovGetPayment($id: ID!) {\n govPayment(id: $id) {\n ${PAYMENT_FIELDS}\n }\n }\n`;\n\nexport const LIST_PAYMENTS = `\n query GovListPayments(\n $applicationId: ID\n $payerId: ID\n $status: GovPaymentStatus\n $pagination: PaginationInput\n ) {\n govListPayments(\n applicationId: $applicationId\n payerId: $payerId\n status: $status\n pagination: $pagination\n ) {\n items { ${PAYMENT_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_PAYMENT = `\n mutation GovCreatePayment($input: GovCreatePaymentInput!) {\n govCreatePayment(input: $input) {\n ${PAYMENT_FIELDS}\n }\n }\n`;\n\nexport const MARK_PAYMENT_PAID = `\n mutation GovMarkPaymentPaid($id: ID!, $providerRef: String) {\n govMarkPaymentPaid(id: $id, providerRef: $providerRef) {\n ${PAYMENT_FIELDS}\n }\n }\n`;\n\nexport const REFUND_PAYMENT = `\n mutation GovRefundPayment($id: ID!) {\n govRefundPayment(id: $id) {\n ${PAYMENT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query GovHealth {\n govHealth\n }\n`;\n","/**\n * Shared zod schemas for the GovCitizenHub tool surface.\n *\n * Every backend enum (`Gov*` prefixed) is mirrored as a tight zod enum so\n * Claude Desktop grounds tool calls against the exact allowed values. JSON\n * scalar inputs (formData, formSchema, lineItems) are modelled as permissive\n * object records — the backend accepts arbitrary JSON, but a record shape gives\n * the LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\nexport const ServiceCategoryEnum = z\n .enum([\n 'CERTIFICATES',\n 'EDUCATION',\n 'GRIEVANCES',\n 'HEALTH',\n 'LICENCES_AND_PERMITS',\n 'OTHER',\n 'SOCIAL_WELFARE',\n 'TAXES_AND_PAYMENTS',\n 'UTILITIES',\n ])\n .describe('Top-level category of a public service or grievance');\n\nexport const ServiceStatusEnum = z\n .enum(['DRAFT', 'PUBLISHED', 'RETIRED', 'SUSPENDED'])\n .describe('Publication lifecycle status of a service');\n\nexport const FeeTypeEnum = z\n .enum(['FIXED', 'FREE', 'VARIABLE'])\n .describe('How a service is charged: FREE, a FIXED amount, or VARIABLE');\n\nexport const ApplicationStatusEnum = z\n .enum(['APPROVED', 'DRAFT', 'INFO_REQUESTED', 'IN_REVIEW', 'REJECTED', 'SUBMITTED', 'WITHDRAWN'])\n .describe('Review-lifecycle status of a citizen application');\n\nexport const CasePriorityEnum = z\n .enum(['HIGH', 'LOW', 'NORMAL', 'URGENT'])\n .describe('Priority of an application or grievance');\n\nexport const CaseNoteTypeEnum = z\n .enum(['CITIZEN_MESSAGE', 'DECISION', 'INFO_REQUEST', 'INTERNAL'])\n .describe('Kind of case note on an application');\n\nexport const DocumentStatusEnum = z\n .enum(['ACCEPTED', 'PENDING', 'REJECTED'])\n .describe('Review status of a submitted document');\n\nexport const GrievanceStatusEnum = z\n .enum(['ACKNOWLEDGED', 'CLOSED', 'IN_PROGRESS', 'OPEN', 'REJECTED', 'RESOLVED'])\n .describe('Resolution-lifecycle status of a grievance');\n\nexport const PaymentStatusEnum = z\n .enum(['FAILED', 'PAID', 'PENDING', 'REFUNDED'])\n .describe('Status of a fee payment');\n\nexport const PermitStatusEnum = z\n .enum(['ACTIVE', 'EXPIRED', 'ISSUED', 'REVOKED'])\n .describe('Lifecycle status of an issued permit');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n\n/**\n * Build a `PaginationInput` ({ limit, offset, cursor }) from the flat\n * limit/offset/cursor tool args, omitting unset fields. Returns `undefined`\n * when nothing was supplied so the backend default ({ limit: 50, offset: 0 })\n * applies.\n */\nexport function buildPagination(args: {\n limit?: number;\n offset?: number;\n cursor?: string;\n}): Record<string, unknown> | undefined {\n const pagination: Record<string, unknown> = {};\n if (args.limit !== undefined) pagination.limit = args.limit;\n if (args.offset !== undefined) pagination.offset = args.offset;\n if (args.cursor !== undefined) pagination.cursor = args.cursor;\n return Object.keys(pagination).length > 0 ? pagination : undefined;\n}\n","/**\n * GovCitizenHub agency tools — the government-agency directory.\n *\n * Surface (5): agencies_{get,list,create,update,archive}.\n * Backend root fields: govAgency / govListAgencies / govCreateAgency /\n * govUpdateAgency / govArchiveAgency — all called by their REAL names in\n * operations.ts. `govListAgencies` returns a plain array (not a connection)\n * but still accepts a `PaginationInput`.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { buildPagination } from './shared.js';\n\nexport function registerAgencyTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agencies_get')),\n {\n title: 'Get Agency',\n description:\n 'Fetch a single GovCitizenHub government agency by ID, including the services it operates.',\n inputSchema: { id: z.string().describe('Agency ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govAgency: Record<string, unknown> | null;\n }>(ops.GET_AGENCY, { id });\n if (!data.govAgency) return errorResult(`Agency ${id} not found`);\n return jsonResult(data.govAgency);\n } catch (error) {\n ctx.logger.error('govcitizenhub agencies_get failed', { error: String(error) });\n return errorResult(\n `Failed to get agency: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agencies_list')),\n {\n title: 'List Agencies',\n description:\n 'List government agencies in the bound workspace with an optional active filter and pagination.',\n inputSchema: {\n isActive: z\n .boolean()\n .optional()\n .describe('Only active (true) or archived (false) agencies'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ isActive, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govListAgencies: Array<Record<string, unknown>>;\n }>(ops.LIST_AGENCIES, {\n isActive,\n pagination: buildPagination({ limit, offset, cursor }),\n });\n return jsonResult(data.govListAgencies);\n } catch (error) {\n ctx.logger.error('govcitizenhub agencies_list failed', { error: String(error) });\n return errorResult(\n `Failed to list agencies: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agencies_create')),\n {\n title: 'Create Agency',\n description: 'Register a new government agency in the bound workspace.',\n inputSchema: {\n name: z.string().min(1).describe('Agency display name'),\n code: z.string().optional().describe('Short agency code'),\n description: z.string().optional().describe('Agency description'),\n jurisdiction: z.string().optional().describe('Geographic/legal jurisdiction'),\n contactEmail: z.string().optional().describe('Public contact email'),\n contactPhone: z.string().optional().describe('Public contact phone'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ name, code, description, jurisdiction, contactEmail, contactPhone, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (code !== undefined) input.code = code;\n if (description !== undefined) input.description = description;\n if (jurisdiction !== undefined) input.jurisdiction = jurisdiction;\n if (contactEmail !== undefined) input.contactEmail = contactEmail;\n if (contactPhone !== undefined) input.contactPhone = contactPhone;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n govCreateAgency: Record<string, unknown>;\n }>(ops.CREATE_AGENCY, { input });\n return jsonResult(data.govCreateAgency);\n } catch (error) {\n ctx.logger.error('govcitizenhub agencies_create failed', { error: String(error) });\n return errorResult(\n `Failed to create agency: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agencies_update')),\n {\n title: 'Update Agency',\n description:\n 'Update a government agency. At least one mutable field must be provided. Use `isActive` to (de)activate.',\n inputSchema: {\n id: z.string().describe('Agency ID'),\n name: z.string().optional().describe('Updated display name'),\n code: z.string().optional().describe('Updated agency code'),\n description: z.string().optional().describe('Updated description'),\n jurisdiction: z.string().optional().describe('Updated jurisdiction'),\n contactEmail: z.string().optional().describe('Updated contact email'),\n contactPhone: z.string().optional().describe('Updated contact phone'),\n isActive: z.boolean().optional().describe('Updated active flag'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n code,\n description,\n jurisdiction,\n contactEmail,\n contactPhone,\n isActive,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (code !== undefined) input.code = code;\n if (description !== undefined) input.description = description;\n if (jurisdiction !== undefined) input.jurisdiction = jurisdiction;\n if (contactEmail !== undefined) input.contactEmail = contactEmail;\n if (contactPhone !== undefined) input.contactPhone = contactPhone;\n if (isActive !== undefined) input.isActive = isActive;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/code/description/jurisdiction/contactEmail/contactPhone/isActive/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n govUpdateAgency: Record<string, unknown>;\n }>(ops.UPDATE_AGENCY, { id, input });\n return jsonResult(data.govUpdateAgency);\n } catch (error) {\n ctx.logger.error('govcitizenhub agencies_update failed', { error: String(error) });\n return errorResult(\n `Failed to update agency: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agencies_archive')),\n {\n title: 'Archive Agency',\n description: 'Archive (soft-delete) a government agency. Returns true on success.',\n inputSchema: { id: z.string().describe('Agency ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ govArchiveAgency: boolean }>(\n ops.ARCHIVE_AGENCY,\n { id },\n );\n return jsonResult({ archived: data.govArchiveAgency });\n } catch (error) {\n ctx.logger.error('govcitizenhub agencies_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive agency: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub service tools — the public-service catalog.\n *\n * Surface (5): services_{get,list,create,update,transition}.\n * Backend root fields: govService / govListServices / govCreateService /\n * govUpdateService / govTransitionService. `govListServices` returns a\n * `GovServiceConnection` ({ items, pageInfo }).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n ServiceCategoryEnum,\n ServiceStatusEnum,\n FeeTypeEnum,\n JsonObject,\n buildPagination,\n} from './shared.js';\n\nexport function registerServiceTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'services_get')),\n {\n title: 'Get Service',\n description:\n 'Fetch a single GovCitizenHub public service by ID, including its owning agency.',\n inputSchema: { id: z.string().describe('Service ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govService: Record<string, unknown> | null;\n }>(ops.GET_SERVICE, { id });\n if (!data.govService) return errorResult(`Service ${id} not found`);\n return jsonResult(data.govService);\n } catch (error) {\n ctx.logger.error('govcitizenhub services_get failed', { error: String(error) });\n return errorResult(\n `Failed to get service: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'services_list')),\n {\n title: 'List Services',\n description:\n 'List public services in the bound workspace with optional agency/category/status filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n agencyId: z.string().optional().describe('Filter by owning agency ID'),\n category: ServiceCategoryEnum.optional().describe('Filter by category'),\n status: ServiceStatusEnum.optional().describe('Filter by publication status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ agencyId, category, status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govListServices: Record<string, unknown>;\n }>(ops.LIST_SERVICES, {\n agencyId,\n category,\n status,\n pagination: buildPagination({ limit, offset, cursor }),\n });\n return jsonResult(data.govListServices);\n } catch (error) {\n ctx.logger.error('govcitizenhub services_list failed', { error: String(error) });\n return errorResult(\n `Failed to list services: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'services_create')),\n {\n title: 'Create Service',\n description:\n 'Create a public service under an agency. `slug` must be unique within the workspace; `feeType`+`feeAmount` define the fee model.',\n inputSchema: {\n agencyId: z.string().min(1).describe('Owning agency ID'),\n name: z.string().min(1).describe('Service display name'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n category: ServiceCategoryEnum.optional().describe('Service category (default OTHER)'),\n summary: z.string().optional().describe('Short summary'),\n eligibility: z.string().optional().describe('Eligibility criteria text'),\n feeType: FeeTypeEnum.optional().describe('Fee model (default FREE)'),\n feeAmount: z.number().optional().describe('Fee amount (for FIXED/VARIABLE)'),\n currency: z.string().optional().describe('ISO currency code for the fee'),\n slaDays: z.number().int().optional().describe('Target turnaround in days'),\n requiredDocuments: z\n .array(z.string())\n .optional()\n .describe('Names of documents the citizen must submit'),\n formSchema: JsonObject.optional().describe('JSON schema describing the application form'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({\n agencyId,\n name,\n slug,\n category,\n summary,\n eligibility,\n feeType,\n feeAmount,\n currency,\n slaDays,\n requiredDocuments,\n formSchema,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { agencyId, name, slug };\n if (category !== undefined) input.category = category;\n if (summary !== undefined) input.summary = summary;\n if (eligibility !== undefined) input.eligibility = eligibility;\n if (feeType !== undefined) input.feeType = feeType;\n if (feeAmount !== undefined) input.feeAmount = feeAmount;\n if (currency !== undefined) input.currency = currency;\n if (slaDays !== undefined) input.slaDays = slaDays;\n if (requiredDocuments !== undefined) input.requiredDocuments = requiredDocuments;\n if (formSchema !== undefined) input.formSchema = formSchema;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n govCreateService: Record<string, unknown>;\n }>(ops.CREATE_SERVICE, { input });\n return jsonResult(data.govCreateService);\n } catch (error) {\n ctx.logger.error('govcitizenhub services_create failed', { error: String(error) });\n return errorResult(\n `Failed to create service: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'services_update')),\n {\n title: 'Update Service',\n description: 'Update a public service. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Service ID'),\n name: z.string().optional().describe('Updated display name'),\n category: ServiceCategoryEnum.optional().describe('Updated category'),\n summary: z.string().optional().describe('Updated summary'),\n eligibility: z.string().optional().describe('Updated eligibility text'),\n feeType: FeeTypeEnum.optional().describe('Updated fee model'),\n feeAmount: z.number().optional().describe('Updated fee amount'),\n currency: z.string().optional().describe('Updated currency'),\n slaDays: z.number().int().optional().describe('Updated SLA days'),\n requiredDocuments: z.array(z.string()).optional().describe('Updated required documents'),\n formSchema: JsonObject.optional().describe('Updated form schema JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n category,\n summary,\n eligibility,\n feeType,\n feeAmount,\n currency,\n slaDays,\n requiredDocuments,\n formSchema,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (category !== undefined) input.category = category;\n if (summary !== undefined) input.summary = summary;\n if (eligibility !== undefined) input.eligibility = eligibility;\n if (feeType !== undefined) input.feeType = feeType;\n if (feeAmount !== undefined) input.feeAmount = feeAmount;\n if (currency !== undefined) input.currency = currency;\n if (slaDays !== undefined) input.slaDays = slaDays;\n if (requiredDocuments !== undefined) input.requiredDocuments = requiredDocuments;\n if (formSchema !== undefined) input.formSchema = formSchema;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/category/summary/eligibility/feeType/feeAmount/currency/slaDays/requiredDocuments/formSchema/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n govUpdateService: Record<string, unknown>;\n }>(ops.UPDATE_SERVICE, { id, input });\n return jsonResult(data.govUpdateService);\n } catch (error) {\n ctx.logger.error('govcitizenhub services_update failed', { error: String(error) });\n return errorResult(\n `Failed to update service: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'services_transition')),\n {\n title: 'Transition Service',\n description:\n 'Advance a service through its publication lifecycle (DRAFT → PUBLISHED → SUSPENDED/RETIRED) with validated transitions.',\n inputSchema: {\n id: z.string().describe('Service ID'),\n status: ServiceStatusEnum.describe('Target publication status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govTransitionService: Record<string, unknown>;\n }>(ops.TRANSITION_SERVICE, { id, status });\n return jsonResult(data.govTransitionService);\n } catch (error) {\n ctx.logger.error('govcitizenhub services_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition service: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub application tools — citizen applications + casework lifecycle.\n *\n * Surface (6): applications_{get,list,create,update,submit,transition}.\n * Backend root fields: govApplication / govListApplications /\n * govCreateApplication / govUpdateApplication / govSubmitApplication /\n * govTransitionApplication. `govListApplications` returns a\n * `GovApplicationConnection` ({ items, pageInfo }). `applications_get` hydrates\n * the nested documents, case notes, and permits.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ApplicationStatusEnum, CasePriorityEnum, JsonObject, buildPagination } from './shared.js';\n\nexport function registerApplicationTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'applications_get')),\n {\n title: 'Get Application',\n description:\n 'Fetch a single GovCitizenHub citizen application by ID, including its documents, case notes, and issued permits.',\n inputSchema: { id: z.string().describe('Application ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govApplication: Record<string, unknown> | null;\n }>(ops.GET_APPLICATION, { id });\n if (!data.govApplication) return errorResult(`Application ${id} not found`);\n return jsonResult(data.govApplication);\n } catch (error) {\n ctx.logger.error('govcitizenhub applications_get failed', { error: String(error) });\n return errorResult(\n `Failed to get application: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'applications_list')),\n {\n title: 'List Applications',\n description:\n 'List citizen applications with optional citizen/service/assignee/status filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n citizenId: z.string().optional().describe('Filter by applicant (citizen) user ID'),\n serviceId: z.string().optional().describe('Filter by service ID'),\n assignedToId: z.string().optional().describe('Filter by assigned caseworker user ID'),\n status: ApplicationStatusEnum.optional().describe('Filter by review status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ citizenId, serviceId, assignedToId, status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govListApplications: Record<string, unknown>;\n }>(ops.LIST_APPLICATIONS, {\n citizenId,\n serviceId,\n assignedToId,\n status,\n pagination: buildPagination({ limit, offset, cursor }),\n });\n return jsonResult(data.govListApplications);\n } catch (error) {\n ctx.logger.error('govcitizenhub applications_list failed', { error: String(error) });\n return errorResult(\n `Failed to list applications: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'applications_create')),\n {\n title: 'Create Application',\n description:\n 'Start a new citizen application against a service (created in DRAFT). The applicant identity comes from the gateway actor headers.',\n inputSchema: {\n serviceId: z.string().min(1).describe('Service being applied for'),\n reference: z.string().optional().describe('Optional caller-supplied reference number'),\n priority: CasePriorityEnum.optional().describe('Priority (default NORMAL)'),\n formData: JsonObject.optional().describe('Submitted form data JSON'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ serviceId, reference, priority, formData, tags }) => {\n try {\n const input: Record<string, unknown> = { serviceId };\n if (reference !== undefined) input.reference = reference;\n if (priority !== undefined) input.priority = priority;\n if (formData !== undefined) input.formData = formData;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n govCreateApplication: Record<string, unknown>;\n }>(ops.CREATE_APPLICATION, { input });\n return jsonResult(data.govCreateApplication);\n } catch (error) {\n ctx.logger.error('govcitizenhub applications_create failed', { error: String(error) });\n return errorResult(\n `Failed to create application: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'applications_update')),\n {\n title: 'Update Application',\n description:\n 'Update a draft/in-progress application. At least one mutable field must be provided. Use `assignedToId` to assign a caseworker.',\n inputSchema: {\n id: z.string().describe('Application ID'),\n assignedToId: z.string().optional().describe('Assigned caseworker user ID'),\n priority: CasePriorityEnum.optional().describe('Updated priority'),\n formData: JsonObject.optional().describe('Updated form data JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, assignedToId, priority, formData, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (assignedToId !== undefined) input.assignedToId = assignedToId;\n if (priority !== undefined) input.priority = priority;\n if (formData !== undefined) input.formData = formData;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of assignedToId/priority/formData/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n govUpdateApplication: Record<string, unknown>;\n }>(ops.UPDATE_APPLICATION, { id, input });\n return jsonResult(data.govUpdateApplication);\n } catch (error) {\n ctx.logger.error('govcitizenhub applications_update failed', { error: String(error) });\n return errorResult(\n `Failed to update application: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'applications_submit')),\n {\n title: 'Submit Application',\n description: 'Submit a DRAFT application for review (moves it to SUBMITTED).',\n inputSchema: { id: z.string().describe('Application ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govSubmitApplication: Record<string, unknown>;\n }>(ops.SUBMIT_APPLICATION, { id });\n return jsonResult(data.govSubmitApplication);\n } catch (error) {\n ctx.logger.error('govcitizenhub applications_submit failed', { error: String(error) });\n return errorResult(\n `Failed to submit application: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'applications_transition')),\n {\n title: 'Transition Application',\n description:\n 'Advance an application through its review lifecycle (SUBMITTED → IN_REVIEW → INFO_REQUESTED/APPROVED/REJECTED/WITHDRAWN) with validated transitions. `reason` is recorded with the decision.',\n inputSchema: {\n id: z.string().describe('Application ID'),\n status: ApplicationStatusEnum.describe('Target review status'),\n reason: z.string().optional().describe('Reason/decision note for the transition'),\n },\n },\n async ({ id, status, reason }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govTransitionApplication: Record<string, unknown>;\n }>(ops.TRANSITION_APPLICATION, { id, status, reason });\n return jsonResult(data.govTransitionApplication);\n } catch (error) {\n ctx.logger.error('govcitizenhub applications_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition application: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub document tools — supporting documents on an application.\n *\n * Surface (2): documents_{add,review}.\n * Backend root fields: govAddDocument / govReviewDocument. Documents reference\n * a wspace-files-svc `File` via federation (the Files service owns storage +\n * signed URLs) — only the file `id` is threaded here.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { DocumentStatusEnum } from './shared.js';\n\nexport function registerDocumentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'documents_add')),\n {\n title: 'Add Document',\n description:\n 'Attach a supporting document to an application. `fileId` references an already-uploaded wspace-files-svc File; `requirement` ties it to a service-required document.',\n inputSchema: {\n applicationId: z.string().min(1).describe('Application the document belongs to'),\n name: z.string().min(1).describe('Document display name'),\n fileId: z.string().optional().describe('wspace-files-svc File ID for the uploaded blob'),\n requirement: z\n .string()\n .optional()\n .describe('Name of the required-document slot this satisfies'),\n },\n },\n async ({ applicationId, name, fileId, requirement }) => {\n try {\n const input: Record<string, unknown> = { applicationId, name };\n if (fileId !== undefined) input.fileId = fileId;\n if (requirement !== undefined) input.requirement = requirement;\n\n const data = await ctx.gql.workspace.request<{\n govAddDocument: Record<string, unknown>;\n }>(ops.ADD_DOCUMENT, { input });\n return jsonResult(data.govAddDocument);\n } catch (error) {\n ctx.logger.error('govcitizenhub documents_add failed', { error: String(error) });\n return errorResult(\n `Failed to add document: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'documents_review')),\n {\n title: 'Review Document',\n description:\n 'Accept or reject a submitted document. Supply `rejectionReason` when setting status=REJECTED.',\n inputSchema: {\n id: z.string().describe('Document ID'),\n status: DocumentStatusEnum.describe('Review outcome (ACCEPTED/PENDING/REJECTED)'),\n rejectionReason: z.string().optional().describe('Reason when rejecting'),\n },\n },\n async ({ id, status, rejectionReason }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govReviewDocument: Record<string, unknown>;\n }>(ops.REVIEW_DOCUMENT, { id, status, rejectionReason });\n return jsonResult(data.govReviewDocument);\n } catch (error) {\n ctx.logger.error('govcitizenhub documents_review failed', { error: String(error) });\n return errorResult(\n `Failed to review document: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub case-note tools — casework communication trail.\n *\n * Surface (1): case_notes_add (matches the sdk-libs-node `caseNotes.add` op).\n * Backend root field: govAddCaseNote. Case notes are read back via the nested\n * `notes` field on an application (applications_get), so there is no standalone\n * list/get tool — the schema exposes none.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CaseNoteTypeEnum } from './shared.js';\n\nexport function registerNoteTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'case_notes_add')),\n {\n title: 'Add Case Note',\n description:\n 'Add a case note to an application. `type` controls visibility/intent: INTERNAL (staff-only), CITIZEN_MESSAGE, INFO_REQUEST, or DECISION. The author identity comes from the gateway actor headers.',\n inputSchema: {\n applicationId: z.string().min(1).describe('Application the note belongs to'),\n body: z.string().min(1).describe('Note body text'),\n type: CaseNoteTypeEnum.optional().describe('Note type (default INTERNAL)'),\n },\n },\n async ({ applicationId, body, type }) => {\n try {\n const input: Record<string, unknown> = { applicationId, body };\n if (type !== undefined) input.type = type;\n\n const data = await ctx.gql.workspace.request<{\n govAddCaseNote: Record<string, unknown>;\n }>(ops.ADD_CASE_NOTE, { input });\n return jsonResult(data.govAddCaseNote);\n } catch (error) {\n ctx.logger.error('govcitizenhub notes_add failed', { error: String(error) });\n return errorResult(\n `Failed to add case note: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub permit tools — issued permits/licences + public verification.\n *\n * Surface (4): permits_{list,verify,issue,revoke}.\n * Backend root fields: govListPermits (plain array) / govVerifyPermit (@public,\n * by printed verification code) / govIssuePermit / govRevokePermit. There is no\n * single-permit `get` query in the schema — permits are reached via list,\n * verify, or the nested `permits` field on an application.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { PermitStatusEnum } from './shared.js';\n\nexport function registerPermitTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'permits_list')),\n {\n title: 'List Permits',\n description:\n 'List issued permits in the bound workspace, optionally filtered by holder, service, or status.',\n inputSchema: {\n holderId: z.string().optional().describe('Filter by permit holder user ID'),\n serviceId: z.string().optional().describe('Filter by service ID'),\n status: PermitStatusEnum.optional().describe('Filter by permit status'),\n },\n },\n async ({ holderId, serviceId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govListPermits: Array<Record<string, unknown>>;\n }>(ops.LIST_PERMITS, { holderId, serviceId, status });\n return jsonResult(data.govListPermits);\n } catch (error) {\n ctx.logger.error('govcitizenhub permits_list failed', { error: String(error) });\n return errorResult(\n `Failed to list permits: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'permits_verify')),\n {\n title: 'Verify Permit',\n description:\n 'Public permit verification by its printed verification code (citizen-facing trust check). Returns the permit or null if no match.',\n inputSchema: {\n verificationCode: z.string().min(1).describe('The printed permit verification code'),\n },\n },\n async ({ verificationCode }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govVerifyPermit: Record<string, unknown> | null;\n }>(ops.VERIFY_PERMIT, { verificationCode });\n if (!data.govVerifyPermit) {\n return errorResult(`No permit found for verification code ${verificationCode}`);\n }\n return jsonResult(data.govVerifyPermit);\n } catch (error) {\n ctx.logger.error('govcitizenhub permits_verify failed', { error: String(error) });\n return errorResult(\n `Failed to verify permit: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'permits_issue')),\n {\n title: 'Issue Permit',\n description:\n 'Issue a permit/licence to a holder for a service. `verificationCode` must be unique; optionally tie it to the originating application and an expiry.',\n inputSchema: {\n serviceId: z.string().min(1).describe('Service the permit is issued under'),\n holderId: z.string().min(1).describe('User ID of the permit holder'),\n title: z.string().min(1).describe('Permit title'),\n verificationCode: z.string().min(1).describe('Unique printed verification code'),\n applicationId: z.string().optional().describe('Originating application ID'),\n fileId: z.string().optional().describe('wspace-files-svc File ID of the permit PDF'),\n expiresAt: z.string().optional().describe('Expiry timestamp (ISO 8601)'),\n },\n },\n async ({ serviceId, holderId, title, verificationCode, applicationId, fileId, expiresAt }) => {\n try {\n const input: Record<string, unknown> = { serviceId, holderId, title, verificationCode };\n if (applicationId !== undefined) input.applicationId = applicationId;\n if (fileId !== undefined) input.fileId = fileId;\n if (expiresAt !== undefined) input.expiresAt = expiresAt;\n\n const data = await ctx.gql.workspace.request<{\n govIssuePermit: Record<string, unknown>;\n }>(ops.ISSUE_PERMIT, { input });\n return jsonResult(data.govIssuePermit);\n } catch (error) {\n ctx.logger.error('govcitizenhub permits_issue failed', { error: String(error) });\n return errorResult(\n `Failed to issue permit: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'permits_revoke')),\n {\n title: 'Revoke Permit',\n description: 'Revoke an issued permit. `reason` is recorded with the revocation.',\n inputSchema: {\n id: z.string().describe('Permit ID'),\n reason: z.string().optional().describe('Reason for revocation'),\n },\n },\n async ({ id, reason }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govRevokePermit: Record<string, unknown>;\n }>(ops.REVOKE_PERMIT, { id, reason });\n return jsonResult(data.govRevokePermit);\n } catch (error) {\n ctx.logger.error('govcitizenhub permits_revoke failed', { error: String(error) });\n return errorResult(\n `Failed to revoke permit: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub grievance tools — civic grievance reporting + resolution.\n *\n * Surface (5): grievances_{get,list,report,update,transition}.\n * Backend root fields: govGrievance / govListGrievances / govReportGrievance /\n * govUpdateGrievance / govTransitionGrievance. `govListGrievances` returns a\n * `GovGrievanceConnection` ({ items, pageInfo }).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n ServiceCategoryEnum,\n GrievanceStatusEnum,\n CasePriorityEnum,\n buildPagination,\n} from './shared.js';\n\nexport function registerGrievanceTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grievances_get')),\n {\n title: 'Get Grievance',\n description: 'Fetch a single GovCitizenHub civic grievance by ID.',\n inputSchema: { id: z.string().describe('Grievance ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govGrievance: Record<string, unknown> | null;\n }>(ops.GET_GRIEVANCE, { id });\n if (!data.govGrievance) return errorResult(`Grievance ${id} not found`);\n return jsonResult(data.govGrievance);\n } catch (error) {\n ctx.logger.error('govcitizenhub grievances_get failed', { error: String(error) });\n return errorResult(\n `Failed to get grievance: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grievances_list')),\n {\n title: 'List Grievances',\n description:\n 'List civic grievances with optional agency/reporter/status filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n agencyId: z.string().optional().describe('Filter by responsible agency ID'),\n reporterId: z.string().optional().describe('Filter by reporter (citizen) user ID'),\n status: GrievanceStatusEnum.optional().describe('Filter by resolution status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ agencyId, reporterId, status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govListGrievances: Record<string, unknown>;\n }>(ops.LIST_GRIEVANCES, {\n agencyId,\n reporterId,\n status,\n pagination: buildPagination({ limit, offset, cursor }),\n });\n return jsonResult(data.govListGrievances);\n } catch (error) {\n ctx.logger.error('govcitizenhub grievances_list failed', { error: String(error) });\n return errorResult(\n `Failed to list grievances: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grievances_report')),\n {\n title: 'Report Grievance',\n description:\n 'File a new civic grievance. The reporter identity comes from the gateway actor headers. Optionally geotag it (location/latitude/longitude) and attach photo File IDs.',\n inputSchema: {\n title: z.string().min(1).describe('Grievance title'),\n description: z.string().min(1).describe('Detailed description'),\n category: ServiceCategoryEnum.optional().describe('Category (default GRIEVANCES)'),\n priority: CasePriorityEnum.optional().describe('Priority (default NORMAL)'),\n agencyId: z.string().optional().describe('Responsible agency ID'),\n location: z.string().optional().describe('Human-readable location'),\n latitude: z.number().optional().describe('Latitude'),\n longitude: z.number().optional().describe('Longitude'),\n photoFileIds: z\n .array(z.string())\n .optional()\n .describe('wspace-files-svc File IDs for attached photos'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({\n title,\n description,\n category,\n priority,\n agencyId,\n location,\n latitude,\n longitude,\n photoFileIds,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { title, description };\n if (category !== undefined) input.category = category;\n if (priority !== undefined) input.priority = priority;\n if (agencyId !== undefined) input.agencyId = agencyId;\n if (location !== undefined) input.location = location;\n if (latitude !== undefined) input.latitude = latitude;\n if (longitude !== undefined) input.longitude = longitude;\n if (photoFileIds !== undefined) input.photoFileIds = photoFileIds;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n govReportGrievance: Record<string, unknown>;\n }>(ops.REPORT_GRIEVANCE, { input });\n return jsonResult(data.govReportGrievance);\n } catch (error) {\n ctx.logger.error('govcitizenhub grievances_report failed', { error: String(error) });\n return errorResult(\n `Failed to report grievance: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grievances_update')),\n {\n title: 'Update Grievance',\n description:\n 'Update a grievance. At least one mutable field must be provided. Use `assignedToId` to assign an owner and `agencyId` to route it.',\n inputSchema: {\n id: z.string().describe('Grievance ID'),\n assignedToId: z.string().optional().describe('Assigned owner user ID'),\n agencyId: z.string().optional().describe('Responsible agency ID'),\n priority: CasePriorityEnum.optional().describe('Updated priority'),\n location: z.string().optional().describe('Updated location'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, assignedToId, agencyId, priority, location, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (assignedToId !== undefined) input.assignedToId = assignedToId;\n if (agencyId !== undefined) input.agencyId = agencyId;\n if (priority !== undefined) input.priority = priority;\n if (location !== undefined) input.location = location;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of assignedToId/agencyId/priority/location/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n govUpdateGrievance: Record<string, unknown>;\n }>(ops.UPDATE_GRIEVANCE, { id, input });\n return jsonResult(data.govUpdateGrievance);\n } catch (error) {\n ctx.logger.error('govcitizenhub grievances_update failed', { error: String(error) });\n return errorResult(\n `Failed to update grievance: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grievances_transition')),\n {\n title: 'Transition Grievance',\n description:\n 'Advance a grievance through its resolution lifecycle (OPEN → ACKNOWLEDGED → IN_PROGRESS → RESOLVED/CLOSED/REJECTED) with validated transitions. `resolution` is recorded on resolve.',\n inputSchema: {\n id: z.string().describe('Grievance ID'),\n status: GrievanceStatusEnum.describe('Target resolution status'),\n resolution: z.string().optional().describe('Resolution note'),\n },\n },\n async ({ id, status, resolution }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govTransitionGrievance: Record<string, unknown>;\n }>(ops.TRANSITION_GRIEVANCE, { id, status, resolution });\n return jsonResult(data.govTransitionGrievance);\n } catch (error) {\n ctx.logger.error('govcitizenhub grievances_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition grievance: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub payment tools — fee payments against applications.\n *\n * Surface (5): payments_{get,list,create,mark_paid,refund}.\n * Backend root fields: govPayment / govListPayments / govCreatePayment /\n * govMarkPaymentPaid / govRefundPayment. `govListPayments` returns a\n * `GovPaymentConnection` ({ items, pageInfo }).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { PaymentStatusEnum, JsonObject, buildPagination } from './shared.js';\n\nexport function registerPaymentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payments_get')),\n {\n title: 'Get Payment',\n description: 'Fetch a single GovCitizenHub fee payment by ID.',\n inputSchema: { id: z.string().describe('Payment ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govPayment: Record<string, unknown> | null;\n }>(ops.GET_PAYMENT, { id });\n if (!data.govPayment) return errorResult(`Payment ${id} not found`);\n return jsonResult(data.govPayment);\n } catch (error) {\n ctx.logger.error('govcitizenhub payments_get failed', { error: String(error) });\n return errorResult(\n `Failed to get payment: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payments_list')),\n {\n title: 'List Payments',\n description:\n 'List fee payments with optional application/payer/status filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n applicationId: z.string().optional().describe('Filter by application ID'),\n payerId: z.string().optional().describe('Filter by payer user ID'),\n status: PaymentStatusEnum.optional().describe('Filter by payment status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ applicationId, payerId, status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govListPayments: Record<string, unknown>;\n }>(ops.LIST_PAYMENTS, {\n applicationId,\n payerId,\n status,\n pagination: buildPagination({ limit, offset, cursor }),\n });\n return jsonResult(data.govListPayments);\n } catch (error) {\n ctx.logger.error('govcitizenhub payments_list failed', { error: String(error) });\n return errorResult(\n `Failed to list payments: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payments_create')),\n {\n title: 'Create Payment',\n description:\n 'Record a fee payment (created PENDING). Optionally tie it to an application and supply itemised lineItems JSON. The payer identity comes from the gateway actor headers.',\n inputSchema: {\n amount: z.number().describe('Payment amount'),\n applicationId: z.string().optional().describe('Application the fee is for'),\n currency: z.string().optional().describe('ISO currency code'),\n providerRef: z.string().optional().describe('External payment-provider reference'),\n lineItems: JsonObject.optional().describe('Itemised line-items JSON'),\n },\n },\n async ({ amount, applicationId, currency, providerRef, lineItems }) => {\n try {\n const input: Record<string, unknown> = { amount };\n if (applicationId !== undefined) input.applicationId = applicationId;\n if (currency !== undefined) input.currency = currency;\n if (providerRef !== undefined) input.providerRef = providerRef;\n if (lineItems !== undefined) input.lineItems = lineItems;\n\n const data = await ctx.gql.workspace.request<{\n govCreatePayment: Record<string, unknown>;\n }>(ops.CREATE_PAYMENT, { input });\n return jsonResult(data.govCreatePayment);\n } catch (error) {\n ctx.logger.error('govcitizenhub payments_create failed', { error: String(error) });\n return errorResult(\n `Failed to create payment: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payments_mark_paid')),\n {\n title: 'Mark Payment Paid',\n description:\n 'Mark a pending payment as PAID, optionally recording the external provider reference.',\n inputSchema: {\n id: z.string().describe('Payment ID'),\n providerRef: z.string().optional().describe('External payment-provider reference'),\n },\n },\n async ({ id, providerRef }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govMarkPaymentPaid: Record<string, unknown>;\n }>(ops.MARK_PAYMENT_PAID, { id, providerRef });\n return jsonResult(data.govMarkPaymentPaid);\n } catch (error) {\n ctx.logger.error('govcitizenhub payments_mark_paid failed', { error: String(error) });\n return errorResult(\n `Failed to mark payment paid: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payments_refund')),\n {\n title: 'Refund Payment',\n description: 'Refund a paid payment (moves it to REFUNDED).',\n inputSchema: { id: z.string().describe('Payment ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govRefundPayment: Record<string, unknown>;\n }>(ops.REFUND_PAYMENT, { id });\n return jsonResult(data.govRefundPayment);\n } catch (error) {\n ctx.logger.error('govcitizenhub payments_refund failed', { error: String(error) });\n return errorResult(\n `Failed to refund payment: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub health tool.\n *\n * Surface (1): health.\n * Maps to the @public `govHealth` query (no auth required) — the GovCitizenHub\n * subgraph exposes a real liveness/identity probe, so a health tool is wired\n * (mirrors kadaikodi's `health`).\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'GovCitizenHub Health Check',\n description:\n 'Public health probe for the GovCitizenHub subgraph (govHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ govHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.govHealth });\n } catch (error) {\n ctx.logger.error('govcitizenhub health failed', { error: String(error) });\n return errorResult(\n `GovCitizenHub health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_AGENCIES, LIST_SERVICES } from './operations.js';\n\n/**\n * Read-only GovCitizenHub MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerGovcitizenhubResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const agenciesUri = track(mcpResourceUri(ctx.productName, 'agencies'));\n const servicesUri = track(mcpResourceUri(ctx.productName, 'services'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'govcitizenhub-schema',\n schemaUri,\n {\n title: 'GovCitizenHub Domain Schema',\n description:\n 'Overview of the GovCitizenHub domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# GovCitizenHub Domain (Overview)\n\nGovernment & Citizen Services Operating System — a unified catalog of public\nservices, citizen applications, casework and permits, fee payments, and civic\ngrievances.\n\n## Entities\n- GovAgency — a government agency (operates services)\n- GovService — a public service in the catalog (fee model, SLA, required docs)\n- GovApplication — a citizen application against a service (+documents, notes, permits)\n- GovDocument — a supporting document on an application (references a Files-svc File)\n- GovCaseNote — a casework note on an application\n- GovPermit — an issued permit/licence (publicly verifiable by code)\n- GovGrievance — a civic grievance report\n- GovPayment — a fee payment against an application\n\n## Enums\n- GovServiceCategory: CERTIFICATES, EDUCATION, GRIEVANCES, HEALTH, LICENCES_AND_PERMITS, OTHER, SOCIAL_WELFARE, TAXES_AND_PAYMENTS, UTILITIES\n- GovServiceStatus: DRAFT, PUBLISHED, RETIRED, SUSPENDED\n- GovFeeType: FIXED, FREE, VARIABLE\n- GovApplicationStatus: DRAFT, SUBMITTED, IN_REVIEW, INFO_REQUESTED, APPROVED, REJECTED, WITHDRAWN\n- GovCasePriority: LOW, NORMAL, HIGH, URGENT\n- GovCaseNoteType: INTERNAL, CITIZEN_MESSAGE, INFO_REQUEST, DECISION\n- GovDocumentStatus: PENDING, ACCEPTED, REJECTED\n- GovGrievanceStatus: OPEN, ACKNOWLEDGED, IN_PROGRESS, RESOLVED, CLOSED, REJECTED\n- GovPaymentStatus: PENDING, PAID, FAILED, REFUNDED\n- GovPermitStatus: ISSUED, ACTIVE, EXPIRED, REVOKED\n\n## Tool groups\nagencies, services, applications, documents, notes, permits, grievances, payments, health.\nAll run against the WORKSPACE gateway (workspace-scoped) except the public health probe\nand the public permit-verification check.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://agencies — active agency directory\n server.registerResource(\n 'govcitizenhub-agencies',\n agenciesUri,\n {\n title: 'GovCitizenHub Agency Directory',\n description: 'The first 50 active government agencies in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${agenciesUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ govListAgencies: unknown }>(LIST_AGENCIES, {\n isActive: true,\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: agenciesUri,\n text: JSON.stringify(data.govListAgencies, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: agenciesUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://services — published service catalog\n server.registerResource(\n 'govcitizenhub-services',\n servicesUri,\n {\n title: 'GovCitizenHub Service Catalog',\n description: 'The first 50 published public services in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${servicesUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ govListServices: unknown }>(LIST_SERVICES, {\n status: 'PUBLISHED',\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: servicesUri,\n text: JSON.stringify(data.govListServices, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: servicesUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * GovCitizenHub MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerGovcitizenhubPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const catalogName = track(mcpPromptName(p, 'service-catalog-setup'));\n const caseworkName = track(mcpPromptName(p, 'casework-triage'));\n\n // <product>-service-catalog-setup — stand up an agency + its services\n server.registerPrompt(\n catalogName,\n {\n title: 'Service Catalog Setup',\n description:\n 'Guide for standing up a GovCitizenHub agency and its public-service catalog end to end: create the agency, add services, then publish them.',\n argsSchema: {\n agency: z.string().optional().describe('Agency name'),\n category: z.string().optional().describe('Primary service category'),\n },\n },\n ({ agency, category }) => {\n ctx.logger.debug(`Prompt ${catalogName} called`, { agency, category });\n const agencyNote = agency\n ? `Use the agency name \"${agency}\".`\n : 'Ask the user for the agency name.';\n const categoryNote = category\n ? `Use category ${category}.`\n : 'Help the user pick a GovServiceCategory.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me set up a GovCitizenHub agency and its service catalog.\n\n1. **Create Agency**: Use ${p}_agencies_create. ${agencyNote} Optionally set code, jurisdiction, and contact details.\n2. **Add Services**: Use ${p}_services_create for each public service — ${categoryNote} Provide a unique slug, the fee model (feeType + feeAmount), slaDays, and any requiredDocuments.\n3. **Verify Catalog**: Use ${p}_services_list filtered by the new agencyId to confirm the draft services.\n4. **Publish**: Use ${p}_services_transition with status=PUBLISHED for each service that is ready to accept applications.\n5. **Activate Agency**: If needed, use ${p}_agencies_update to confirm the agency is active.\n\nShow results at each step and confirm before publishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-casework-triage — daily casework operations\n server.registerPrompt(\n caseworkName,\n {\n title: 'Casework Triage',\n description:\n 'Daily casework workflow: triage the submitted-application queue, request info or review documents, advance applications, issue permits, and handle grievances.',\n argsSchema: {\n assignedToId: z.string().optional().describe('Caseworker user ID to triage for'),\n },\n },\n ({ assignedToId }) => {\n ctx.logger.debug(`Prompt ${caseworkName} called`, { assignedToId });\n const assigneeNote = assignedToId\n ? `Focus on applications assigned to \"${assignedToId}\".`\n : `Triage across all caseworkers (omit the assignedToId filter).`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run daily GovCitizenHub casework triage. ${assigneeNote}\n\n1. **Queue**: Use ${p}_applications_list with status=SUBMITTED (then IN_REVIEW) to find applications awaiting action.\n2. **Open a Case**: Use ${p}_applications_get to load an application with its documents, notes, and permits.\n3. **Documents**: Use ${p}_documents_review to ACCEPT/REJECT each submitted document (supply a rejectionReason when rejecting).\n4. **Communicate**: Use ${p}_case_notes_add with type=INFO_REQUEST to ask the citizen for more, or type=INTERNAL for staff notes.\n5. **Advance**: Use ${p}_applications_transition to move the case (IN_REVIEW → INFO_REQUESTED/APPROVED/REJECTED), recording a reason.\n6. **Issue Permit**: On approval, use ${p}_permits_issue to grant the permit/licence (unique verificationCode), tying it to the application.\n7. **Payments**: Use ${p}_payments_list to confirm fees are PAID; use ${p}_payments_mark_paid where a provider reference confirms settlement.\n8. **Grievances**: Use ${p}_grievances_list with status=OPEN and ${p}_grievances_transition to acknowledge/progress/resolve them.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * GovCitizenHub module — domain module for the future-products ecosystem program.\n *\n * Covers all 8 @key entities of wspace-govcitizenhub-svc grouped into\n * per-entity sub-APIs: agencies, services, applications, documents, notes,\n * permits, grievances, payments, plus a public health probe. Mirrors the\n * canonical kadaikodi module's structure (tools/<entity>.ts + resources.ts +\n * prompts.ts) and its typing discipline.\n *\n * Backend: ~/products/govcitizenhub/wspace-govcitizenhub-svc/\n * (Hive service name `govcitizenhub`). All operations run against the WORKSPACE\n * gateway; the @public govHealth probe is exposed as `<product>_health` and the\n * @public govVerifyPermit check as `<product>_permits_verify`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerAgencyTools } from './tools/agencies.js';\nimport { registerServiceTools } from './tools/services.js';\nimport { registerApplicationTools } from './tools/applications.js';\nimport { registerDocumentTools } from './tools/documents.js';\nimport { registerNoteTools } from './tools/notes.js';\nimport { registerPermitTools } from './tools/permits.js';\nimport { registerGrievanceTools } from './tools/grievances.js';\nimport { registerPaymentTools } from './tools/payments.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerGovcitizenhubResources } from './resources.js';\nimport { registerGovcitizenhubPrompts } from './prompts.js';\n\nconst govcitizenhubModule: McpModule = {\n id: 'govcitizenhub',\n version: '0.0.1',\n displayName: 'GovCitizenHub',\n dependsOn: ['auth'],\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerAgencyTools(server, ctx, trackTool);\n registerServiceTools(server, ctx, trackTool);\n registerApplicationTools(server, ctx, trackTool);\n registerDocumentTools(server, ctx, trackTool);\n registerNoteTools(server, ctx, trackTool);\n registerPermitTools(server, ctx, trackTool);\n registerGrievanceTools(server, ctx, trackTool);\n registerPaymentTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerGovcitizenhubResources(server, ctx, trackResource);\n registerGovcitizenhubPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default govcitizenhubModule;\n"]}
1
+ {"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/tool-name.ts","../../../src/core/result.ts","../../../src/modules/govcitizenhub/operations.ts","../../../src/modules/govcitizenhub/tools/shared.ts","../../../src/modules/govcitizenhub/tools/agencies.ts","../../../src/modules/govcitizenhub/tools/services.ts","../../../src/modules/govcitizenhub/tools/applications.ts","../../../src/modules/govcitizenhub/tools/documents.ts","../../../src/modules/govcitizenhub/tools/notes.ts","../../../src/modules/govcitizenhub/tools/permits.ts","../../../src/modules/govcitizenhub/tools/grievances.ts","../../../src/modules/govcitizenhub/tools/payments.ts","../../../src/modules/govcitizenhub/tools/health.ts","../../../src/modules/govcitizenhub/resources.ts","../../../src/modules/govcitizenhub/prompts.ts","../../../src/modules/govcitizenhub/index.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Error classes for MCP SDK.\n *\n * Modules MUST throw these instead of throwing raw Errors. The registerTool\n * wrapper in result.ts catches and maps them to MCP-protocol-compliant\n * `{ isError: true, content: [...] }` responses.\n *\n * Throwing past the wrapper to the protocol surfaces as JSON-RPC -32603 to\n * the client and is a protocol bug.\n */\n\nexport class McpUserError extends Error {\n public readonly hint: string | undefined;\n\n constructor(message: string, opts?: { hint?: string }) {\n super(message);\n this.name = 'McpUserError';\n this.hint = opts?.hint;\n }\n}\n\nexport class McpAuthError extends McpUserError {\n constructor(message: string, opts?: { hint?: string }) {\n super(message, {\n hint: opts?.hint ?? 'Run the auth_login tool to authenticate.',\n });\n this.name = 'McpAuthError';\n }\n}\n\nexport class McpInternalError extends Error {\n public override readonly cause: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = 'McpInternalError';\n this.cause = cause;\n }\n}\n","/**\n * Tool / resource / prompt naming helpers.\n *\n * Mandatory product prefix avoids collisions when Claude Desktop runs\n * multiple MCP servers concurrently (typical setup is ~6).\n *\n * Tool names are capped at 63 characters — Claude Desktop pre-1.x\n * truncated at 64 in some versions.\n */\n\nimport { McpInternalError } from './errors.js';\n\nconst MAX_TOOL_NAME_LENGTH = 63;\n\nfunction assertSafeName(name: string, kind: 'tool' | 'resource' | 'prompt'): string {\n if (kind === 'tool' && name.length > MAX_TOOL_NAME_LENGTH) {\n throw new McpInternalError(\n `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`,\n );\n }\n return name;\n}\n\n/**\n * Build a tool name. Format: `<productName>_<...parts>` (snake_case).\n * Example: mcpToolName('vibecontrols', 'vibes', 'list') -> 'vibecontrols_vibes_list'\n */\nexport function mcpToolName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpToolName: productName is required');\n }\n const name = [productName, ...parts].filter(Boolean).join('_');\n return assertSafeName(name, 'tool');\n}\n\n/**\n * Build a resource URI. Format: `<productName>://<...parts>`.\n * Example: mcpResourceUri('vibecontrols', 'schema') -> 'vibecontrols://schema'\n */\nexport function mcpResourceUri(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpResourceUri: productName is required');\n }\n return `${productName}://${parts.filter(Boolean).join('/')}`;\n}\n\n/**\n * Build a prompt name. Format: `<productName>-<...parts>` (kebab-case).\n * Example: mcpPromptName('vibecontrols', 'setup') -> 'vibecontrols-setup'\n */\nexport function mcpPromptName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpPromptName: productName is required');\n }\n return [productName, ...parts].filter(Boolean).join('-');\n}\n\nexport const TOOL_NAME_LIMIT = MAX_TOOL_NAME_LENGTH;\n\n/**\n * Name-based hint heuristics for MCP `annotations` (readOnlyHint /\n * destructiveHint). Used by tool-governance.ts to auto-fill annotations for\n * the fleet of product modules that call `server.registerTool` directly\n * (bypassing the `registerTool()` core helper) and so never set them\n * explicitly today (BOFF-3903). Deliberately conservative — matched against\n * whole `_`-delimited segments so e.g. `timeentries_delete` and\n * `pomodoro_delete_goal` match, but a hypothetical `undeletable_check`\n * would not.\n *\n * A module can always override the inference by passing an explicit\n * `annotations` object to `registerTool()` / `server.registerTool()`.\n */\nconst DESTRUCTIVE_NAME_SEGMENT = /(?:^|_)delete(?:_|$)/i;\nconst READ_ONLY_NAME_SEGMENT = /(?:^|_)(?:list|get|search|check|read|count|stats|by_date)(?:_|$)/i;\n\n/** True when a tool name looks destructive (irreversibly deletes data) by naming convention. */\nexport function inferDestructiveHint(toolName: string): boolean {\n return DESTRUCTIVE_NAME_SEGMENT.test(toolName);\n}\n\n/**\n * True when a tool name looks read-only by naming convention. Never true for\n * a name that also looks destructive (a tool can't be both).\n */\nexport function inferReadOnlyHint(toolName: string): boolean {\n return !inferDestructiveHint(toolName) && READ_ONLY_NAME_SEGMENT.test(toolName);\n}\n","/**\n * MCP tool result helpers + central handler.\n *\n * Modules NEVER call server.registerTool directly — they use registerTool()\n * from this module so the central try/catch wraps the handler and:\n * - maps thrown McpUserError / McpAuthError / McpInternalError to\n * MCP-protocol-compliant `{ isError: true, content: [...] }` shapes\n * - threads `_meta.progressToken` into ctx.progress for long ops\n * - emits a structured log line on every error\n * - never leaks `cause` from McpInternalError to the client\n *\n * This is the analog of cli-sdk's createProgram() central error handler.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { ZodRawShape } from 'zod';\nimport type { McpContext } from './context.js';\nimport { McpAuthError, McpInternalError, McpUserError } from './errors.js';\nimport type { ToolAnnotations } from './tool-governance.js';\n\nexport interface ToolTextContent {\n type: 'text';\n text: string;\n [k: string]: unknown;\n}\n\nexport interface ToolResult {\n content: ToolTextContent[];\n isError?: boolean;\n structuredContent?: Record<string, unknown>;\n [k: string]: unknown;\n}\n\nexport interface ToolMeta {\n progressToken?: string | number;\n}\n\n/**\n * Build a successful tool result with JSON content (pretty-printed).\n */\nexport function jsonResult(data: unknown, structured?: Record<string, unknown>): ToolResult {\n const result: ToolResult = {\n content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],\n };\n if (structured !== undefined) {\n result.structuredContent = structured;\n }\n return result;\n}\n\n/**\n * Build a successful tool result with plain text content.\n */\nexport function textResult(text: string): ToolResult {\n return { content: [{ type: 'text', text }] };\n}\n\n/**\n * Build an error tool result. Honors MCP's `{ isError: true, content }` shape.\n * Optional hint is appended on a new line so the LLM can react.\n */\nexport function errorResult(message: string, hint?: string): ToolResult {\n const text = hint ? `${message}\\n\\nHint: ${hint}` : message;\n return { content: [{ type: 'text', text }], isError: true };\n}\n\nexport interface ToolMetadata {\n title: string;\n description: string;\n inputSchema?: ZodRawShape;\n /**\n * Explicit MCP annotations (readOnlyHint / destructiveHint / ...). Optional\n * — when omitted, `wrapServerWithToolGovernance` (applied centrally in\n * `createMcpServer`) infers them from the tool name. Set this to override\n * the inference for a tool whose name doesn't match the naming convention.\n */\n annotations?: ToolAnnotations;\n}\n\nexport type ToolHandler<TArgs = Record<string, unknown>> = (\n args: TArgs,\n ctx: McpContext,\n meta: ToolMeta,\n) => Promise<unknown>;\n\n/**\n * Register a tool with the central error wrapper.\n *\n * The handler returns a plain value or void. The wrapper:\n * - wraps non-undefined returns in jsonResult()\n * - if the value already looks like a ToolResult (has `content`), passes through\n * - catches McpAuthError / McpUserError / McpInternalError / generic Error\n * - logs every error via ctx.logger.error\n */\nexport function registerTool<TArgs extends Record<string, unknown>>(\n server: McpServer,\n ctx: McpContext,\n name: string,\n metadata: ToolMetadata,\n handler: ToolHandler<TArgs>,\n): void {\n const sdkConfig = {\n title: metadata.title,\n description: metadata.description,\n ...(metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}),\n ...(metadata.annotations ? { annotations: metadata.annotations } : {}),\n };\n\n // The MCP SDK's registerTool signature is `(name, config, handler)`. The\n // handler arity depends on whether inputSchema is present (1-arg without,\n // 2-arg with). We accept a unified handler shape and dispatch at runtime.\n // The SDK's typing is strict and conditional on the inputSchema generic;\n // bypass with a cast since runtime acceptance is unconditional.\n const wrapped = async (...callbackArgs: unknown[]): Promise<ToolResult> => {\n const hasArgs = callbackArgs.length === 2;\n const args = (hasArgs ? callbackArgs[0] : {}) as TArgs;\n const extra = (hasArgs ? callbackArgs[1] : callbackArgs[0]) as\n | { _meta?: { progressToken?: string | number } }\n | undefined;\n\n const progressToken = extra?._meta?.progressToken;\n const meta: ToolMeta = progressToken !== undefined ? { progressToken } : {};\n\n try {\n const result = await handler(args, ctx, meta);\n if (isToolResult(result)) return result;\n if (result === undefined) return textResult('OK');\n return jsonResult(result);\n } catch (error) {\n return mapErrorToResult(error, ctx, name);\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (server as any).registerTool(name, sdkConfig, wrapped);\n}\n\nfunction isToolResult(value: unknown): value is ToolResult {\n return (\n !!value &&\n typeof value === 'object' &&\n 'content' in value &&\n Array.isArray((value as ToolResult).content)\n );\n}\n\nfunction mapErrorToResult(error: unknown, ctx: McpContext, toolName: string): ToolResult {\n if (error instanceof McpAuthError) {\n ctx.logger.warn(`${toolName}: auth required`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpUserError) {\n ctx.logger.info(`${toolName}: user error`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpInternalError) {\n ctx.logger.error(`${toolName}: internal error`, {\n message: error.message,\n cause: stringifyCause(error.cause),\n });\n return errorResult(`Internal error in ${toolName}.`);\n }\n const message = error instanceof Error ? error.message : String(error);\n ctx.logger.error(`${toolName}: unhandled error`, { message });\n return errorResult(`${toolName}: ${message}`);\n}\n\nfunction stringifyCause(cause: unknown): string | undefined {\n if (cause === undefined || cause === null) return undefined;\n if (cause instanceof Error) return cause.message;\n try {\n return JSON.stringify(cause);\n } catch {\n return String(cause);\n }\n}\n","/**\n * Centralized GraphQL operations for the GovCitizenHub MCP module.\n *\n * GovCitizenHub is the Government & Citizen Services Operating System\n * (future-products ecosystem). Backend subgraph:\n * ~/products/govcitizenhub/wspace-govcitizenhub-svc/ (Hive service name\n * `govcitizenhub`).\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is\n * carried by the gateway headers (x-workspace-id / X-Workspace-Authorization)\n * issued by the auth module — GovCitizenHub inputs do NOT carry a workspaceId.\n *\n * Every product-owned root field is prefixed `gov*` and every type/enum/input is\n * prefixed `Gov*` (the workspaces-supergraph collision contract); the operations\n * below call each field by its REAL name. List queries take a `PaginationInput`\n * ({ limit, offset, cursor }); the connection-returning lists surface\n * `{ items, pageInfo { cursor, hasMore } }`.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical kadaikodi module's operations file.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const AGENCY_FIELDS = `\n id code name description jurisdiction contactEmail contactPhone\n isActive tags workspaceId createdAt updatedAt\n`;\n\nexport const SERVICE_FIELDS = `\n id agencyId name slug category status summary eligibility\n feeType feeAmount currency slaDays requiredDocuments formSchema\n tags publishedAt workspaceId createdAt updatedAt\n`;\n\nexport const APPLICATION_FIELDS = `\n id reference serviceId citizenId assignedToId status priority\n formData tags submittedAt dueDate decidedAt decisionReason\n workspaceId createdAt updatedAt\n`;\n\nexport const DOCUMENT_FIELDS = `\n id applicationId name requirement status rejectionReason\n file { id } workspaceId createdAt updatedAt\n`;\n\nexport const CASE_NOTE_FIELDS = `\n id applicationId authorId body type workspaceId createdAt updatedAt\n`;\n\nexport const PERMIT_FIELDS = `\n id title serviceId holderId applicationId status verificationCode\n issuedAt expiresAt revokedAt revokeReason file { id }\n workspaceId createdAt updatedAt\n`;\n\nexport const GRIEVANCE_FIELDS = `\n id title description category status priority reporterId assignedToId\n agencyId location latitude longitude photoFileIds resolution resolvedAt\n tags workspaceId createdAt updatedAt\n`;\n\nexport const PAYMENT_FIELDS = `\n id applicationId payerId amount currency status providerRef\n receiptNumber lineItems paidAt refundedAt workspaceId createdAt updatedAt\n`;\n\nexport const PAGE_INFO_FIELDS = `cursor hasMore`;\n\n// ---------------------------------------------------------------------------\n// Agencies\n// ---------------------------------------------------------------------------\n\nexport const GET_AGENCY = `\n query GovGetAgency($id: ID!) {\n govAgency(id: $id) {\n ${AGENCY_FIELDS}\n services { id name slug category status }\n }\n }\n`;\n\nexport const LIST_AGENCIES = `\n query GovListAgencies($isActive: Boolean, $pagination: PaginationInput) {\n govListAgencies(isActive: $isActive, pagination: $pagination) {\n ${AGENCY_FIELDS}\n }\n }\n`;\n\nexport const CREATE_AGENCY = `\n mutation GovCreateAgency($input: GovCreateAgencyInput!) {\n govCreateAgency(input: $input) {\n ${AGENCY_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_AGENCY = `\n mutation GovUpdateAgency($id: ID!, $input: GovUpdateAgencyInput!) {\n govUpdateAgency(id: $id, input: $input) {\n ${AGENCY_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_AGENCY = `\n mutation GovArchiveAgency($id: ID!) {\n govArchiveAgency(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Services\n// ---------------------------------------------------------------------------\n\nexport const GET_SERVICE = `\n query GovGetService($id: ID!) {\n govService(id: $id) {\n ${SERVICE_FIELDS}\n agency { id name code }\n }\n }\n`;\n\nexport const LIST_SERVICES = `\n query GovListServices(\n $agencyId: ID\n $category: GovServiceCategory\n $status: GovServiceStatus\n $pagination: PaginationInput\n ) {\n govListServices(\n agencyId: $agencyId\n category: $category\n status: $status\n pagination: $pagination\n ) {\n items { ${SERVICE_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_SERVICE = `\n mutation GovCreateService($input: GovCreateServiceInput!) {\n govCreateService(input: $input) {\n ${SERVICE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_SERVICE = `\n mutation GovUpdateService($id: ID!, $input: GovUpdateServiceInput!) {\n govUpdateService(id: $id, input: $input) {\n ${SERVICE_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_SERVICE = `\n mutation GovTransitionService($id: ID!, $status: GovServiceStatus!) {\n govTransitionService(id: $id, status: $status) {\n ${SERVICE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Applications\n// ---------------------------------------------------------------------------\n\nexport const GET_APPLICATION = `\n query GovGetApplication($id: ID!) {\n govApplication(id: $id) {\n ${APPLICATION_FIELDS}\n documents { ${DOCUMENT_FIELDS} }\n notes { ${CASE_NOTE_FIELDS} }\n permits { ${PERMIT_FIELDS} }\n }\n }\n`;\n\nexport const LIST_APPLICATIONS = `\n query GovListApplications(\n $assignedToId: ID\n $citizenId: ID\n $serviceId: ID\n $status: GovApplicationStatus\n $pagination: PaginationInput\n ) {\n govListApplications(\n assignedToId: $assignedToId\n citizenId: $citizenId\n serviceId: $serviceId\n status: $status\n pagination: $pagination\n ) {\n items { ${APPLICATION_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_APPLICATION = `\n mutation GovCreateApplication($input: GovCreateApplicationInput!) {\n govCreateApplication(input: $input) {\n ${APPLICATION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_APPLICATION = `\n mutation GovUpdateApplication($id: ID!, $input: GovUpdateApplicationInput!) {\n govUpdateApplication(id: $id, input: $input) {\n ${APPLICATION_FIELDS}\n }\n }\n`;\n\nexport const SUBMIT_APPLICATION = `\n mutation GovSubmitApplication($id: ID!) {\n govSubmitApplication(id: $id) {\n ${APPLICATION_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_APPLICATION = `\n mutation GovTransitionApplication(\n $id: ID!\n $status: GovApplicationStatus!\n $reason: String\n ) {\n govTransitionApplication(id: $id, status: $status, reason: $reason) {\n ${APPLICATION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Documents\n// ---------------------------------------------------------------------------\n\nexport const ADD_DOCUMENT = `\n mutation GovAddDocument($input: GovAddDocumentInput!) {\n govAddDocument(input: $input) {\n ${DOCUMENT_FIELDS}\n }\n }\n`;\n\nexport const REVIEW_DOCUMENT = `\n mutation GovReviewDocument(\n $id: ID!\n $status: GovDocumentStatus!\n $rejectionReason: String\n ) {\n govReviewDocument(id: $id, status: $status, rejectionReason: $rejectionReason) {\n ${DOCUMENT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Case notes\n// ---------------------------------------------------------------------------\n\nexport const ADD_CASE_NOTE = `\n mutation GovAddCaseNote($input: GovAddCaseNoteInput!) {\n govAddCaseNote(input: $input) {\n ${CASE_NOTE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Permits\n// ---------------------------------------------------------------------------\n\nexport const LIST_PERMITS = `\n query GovListPermits($holderId: ID, $serviceId: ID, $status: GovPermitStatus) {\n govListPermits(holderId: $holderId, serviceId: $serviceId, status: $status) {\n ${PERMIT_FIELDS}\n }\n }\n`;\n\nexport const VERIFY_PERMIT = `\n query GovVerifyPermit($verificationCode: String!) {\n govVerifyPermit(verificationCode: $verificationCode) {\n ${PERMIT_FIELDS}\n }\n }\n`;\n\nexport const ISSUE_PERMIT = `\n mutation GovIssuePermit($input: GovIssuePermitInput!) {\n govIssuePermit(input: $input) {\n ${PERMIT_FIELDS}\n }\n }\n`;\n\nexport const REVOKE_PERMIT = `\n mutation GovRevokePermit($id: ID!, $reason: String) {\n govRevokePermit(id: $id, reason: $reason) {\n ${PERMIT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Grievances\n// ---------------------------------------------------------------------------\n\nexport const GET_GRIEVANCE = `\n query GovGetGrievance($id: ID!) {\n govGrievance(id: $id) {\n ${GRIEVANCE_FIELDS}\n }\n }\n`;\n\nexport const LIST_GRIEVANCES = `\n query GovListGrievances(\n $agencyId: ID\n $reporterId: ID\n $status: GovGrievanceStatus\n $pagination: PaginationInput\n ) {\n govListGrievances(\n agencyId: $agencyId\n reporterId: $reporterId\n status: $status\n pagination: $pagination\n ) {\n items { ${GRIEVANCE_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const REPORT_GRIEVANCE = `\n mutation GovReportGrievance($input: GovReportGrievanceInput!) {\n govReportGrievance(input: $input) {\n ${GRIEVANCE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_GRIEVANCE = `\n mutation GovUpdateGrievance($id: ID!, $input: GovUpdateGrievanceInput!) {\n govUpdateGrievance(id: $id, input: $input) {\n ${GRIEVANCE_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_GRIEVANCE = `\n mutation GovTransitionGrievance(\n $id: ID!\n $status: GovGrievanceStatus!\n $resolution: String\n ) {\n govTransitionGrievance(id: $id, status: $status, resolution: $resolution) {\n ${GRIEVANCE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Payments\n// ---------------------------------------------------------------------------\n\nexport const GET_PAYMENT = `\n query GovGetPayment($id: ID!) {\n govPayment(id: $id) {\n ${PAYMENT_FIELDS}\n }\n }\n`;\n\nexport const LIST_PAYMENTS = `\n query GovListPayments(\n $applicationId: ID\n $payerId: ID\n $status: GovPaymentStatus\n $pagination: PaginationInput\n ) {\n govListPayments(\n applicationId: $applicationId\n payerId: $payerId\n status: $status\n pagination: $pagination\n ) {\n items { ${PAYMENT_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_PAYMENT = `\n mutation GovCreatePayment($input: GovCreatePaymentInput!) {\n govCreatePayment(input: $input) {\n ${PAYMENT_FIELDS}\n }\n }\n`;\n\nexport const MARK_PAYMENT_PAID = `\n mutation GovMarkPaymentPaid($id: ID!, $providerRef: String) {\n govMarkPaymentPaid(id: $id, providerRef: $providerRef) {\n ${PAYMENT_FIELDS}\n }\n }\n`;\n\nexport const REFUND_PAYMENT = `\n mutation GovRefundPayment($id: ID!) {\n govRefundPayment(id: $id) {\n ${PAYMENT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query GovHealth {\n govHealth\n }\n`;\n","/**\n * Shared zod schemas for the GovCitizenHub tool surface.\n *\n * Every backend enum (`Gov*` prefixed) is mirrored as a tight zod enum so\n * Claude Desktop grounds tool calls against the exact allowed values. JSON\n * scalar inputs (formData, formSchema, lineItems) are modelled as permissive\n * object records — the backend accepts arbitrary JSON, but a record shape gives\n * the LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\nexport const ServiceCategoryEnum = z\n .enum([\n 'CERTIFICATES',\n 'EDUCATION',\n 'GRIEVANCES',\n 'HEALTH',\n 'LICENCES_AND_PERMITS',\n 'OTHER',\n 'SOCIAL_WELFARE',\n 'TAXES_AND_PAYMENTS',\n 'UTILITIES',\n ])\n .describe('Top-level category of a public service or grievance');\n\nexport const ServiceStatusEnum = z\n .enum(['DRAFT', 'PUBLISHED', 'RETIRED', 'SUSPENDED'])\n .describe('Publication lifecycle status of a service');\n\nexport const FeeTypeEnum = z\n .enum(['FIXED', 'FREE', 'VARIABLE'])\n .describe('How a service is charged: FREE, a FIXED amount, or VARIABLE');\n\nexport const ApplicationStatusEnum = z\n .enum(['APPROVED', 'DRAFT', 'INFO_REQUESTED', 'IN_REVIEW', 'REJECTED', 'SUBMITTED', 'WITHDRAWN'])\n .describe('Review-lifecycle status of a citizen application');\n\nexport const CasePriorityEnum = z\n .enum(['HIGH', 'LOW', 'NORMAL', 'URGENT'])\n .describe('Priority of an application or grievance');\n\nexport const CaseNoteTypeEnum = z\n .enum(['CITIZEN_MESSAGE', 'DECISION', 'INFO_REQUEST', 'INTERNAL'])\n .describe('Kind of case note on an application');\n\nexport const DocumentStatusEnum = z\n .enum(['ACCEPTED', 'PENDING', 'REJECTED'])\n .describe('Review status of a submitted document');\n\nexport const GrievanceStatusEnum = z\n .enum(['ACKNOWLEDGED', 'CLOSED', 'IN_PROGRESS', 'OPEN', 'REJECTED', 'RESOLVED'])\n .describe('Resolution-lifecycle status of a grievance');\n\nexport const PaymentStatusEnum = z\n .enum(['FAILED', 'PAID', 'PENDING', 'REFUNDED'])\n .describe('Status of a fee payment');\n\nexport const PermitStatusEnum = z\n .enum(['ACTIVE', 'EXPIRED', 'ISSUED', 'REVOKED'])\n .describe('Lifecycle status of an issued permit');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n\n/**\n * Build a `PaginationInput` ({ limit, offset, cursor }) from the flat\n * limit/offset/cursor tool args, omitting unset fields. Returns `undefined`\n * when nothing was supplied so the backend default ({ limit: 50, offset: 0 })\n * applies.\n */\nexport function buildPagination(args: {\n limit?: number;\n offset?: number;\n cursor?: string;\n}): Record<string, unknown> | undefined {\n const pagination: Record<string, unknown> = {};\n if (args.limit !== undefined) pagination.limit = args.limit;\n if (args.offset !== undefined) pagination.offset = args.offset;\n if (args.cursor !== undefined) pagination.cursor = args.cursor;\n return Object.keys(pagination).length > 0 ? pagination : undefined;\n}\n","/**\n * GovCitizenHub agency tools — the government-agency directory.\n *\n * Surface (5): agencies_{get,list,create,update,archive}.\n * Backend root fields: govAgency / govListAgencies / govCreateAgency /\n * govUpdateAgency / govArchiveAgency — all called by their REAL names in\n * operations.ts. `govListAgencies` returns a plain array (not a connection)\n * but still accepts a `PaginationInput`.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { buildPagination } from './shared.js';\n\nexport function registerAgencyTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agencies_get')),\n {\n title: 'Get Agency',\n description:\n 'Fetch a single GovCitizenHub government agency by ID, including the services it operates.',\n inputSchema: { id: z.string().describe('Agency ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govAgency: Record<string, unknown> | null;\n }>(ops.GET_AGENCY, { id });\n if (!data.govAgency) return errorResult(`Agency ${id} not found`);\n return jsonResult(data.govAgency);\n } catch (error) {\n ctx.logger.error('govcitizenhub agencies_get failed', { error: String(error) });\n return errorResult(\n `Failed to get agency: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agencies_list')),\n {\n title: 'List Agencies',\n description:\n 'List government agencies in the bound workspace with an optional active filter and pagination.',\n inputSchema: {\n isActive: z\n .boolean()\n .optional()\n .describe('Only active (true) or archived (false) agencies'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ isActive, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govListAgencies: Array<Record<string, unknown>>;\n }>(ops.LIST_AGENCIES, {\n isActive,\n pagination: buildPagination({ limit, offset, cursor }),\n });\n return jsonResult(data.govListAgencies);\n } catch (error) {\n ctx.logger.error('govcitizenhub agencies_list failed', { error: String(error) });\n return errorResult(\n `Failed to list agencies: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agencies_create')),\n {\n title: 'Create Agency',\n description: 'Register a new government agency in the bound workspace.',\n inputSchema: {\n name: z.string().min(1).describe('Agency display name'),\n code: z.string().optional().describe('Short agency code'),\n description: z.string().optional().describe('Agency description'),\n jurisdiction: z.string().optional().describe('Geographic/legal jurisdiction'),\n contactEmail: z.string().optional().describe('Public contact email'),\n contactPhone: z.string().optional().describe('Public contact phone'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ name, code, description, jurisdiction, contactEmail, contactPhone, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (code !== undefined) input.code = code;\n if (description !== undefined) input.description = description;\n if (jurisdiction !== undefined) input.jurisdiction = jurisdiction;\n if (contactEmail !== undefined) input.contactEmail = contactEmail;\n if (contactPhone !== undefined) input.contactPhone = contactPhone;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n govCreateAgency: Record<string, unknown>;\n }>(ops.CREATE_AGENCY, { input });\n return jsonResult(data.govCreateAgency);\n } catch (error) {\n ctx.logger.error('govcitizenhub agencies_create failed', { error: String(error) });\n return errorResult(\n `Failed to create agency: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agencies_update')),\n {\n title: 'Update Agency',\n description:\n 'Update a government agency. At least one mutable field must be provided. Use `isActive` to (de)activate.',\n inputSchema: {\n id: z.string().describe('Agency ID'),\n name: z.string().optional().describe('Updated display name'),\n code: z.string().optional().describe('Updated agency code'),\n description: z.string().optional().describe('Updated description'),\n jurisdiction: z.string().optional().describe('Updated jurisdiction'),\n contactEmail: z.string().optional().describe('Updated contact email'),\n contactPhone: z.string().optional().describe('Updated contact phone'),\n isActive: z.boolean().optional().describe('Updated active flag'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n code,\n description,\n jurisdiction,\n contactEmail,\n contactPhone,\n isActive,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (code !== undefined) input.code = code;\n if (description !== undefined) input.description = description;\n if (jurisdiction !== undefined) input.jurisdiction = jurisdiction;\n if (contactEmail !== undefined) input.contactEmail = contactEmail;\n if (contactPhone !== undefined) input.contactPhone = contactPhone;\n if (isActive !== undefined) input.isActive = isActive;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/code/description/jurisdiction/contactEmail/contactPhone/isActive/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n govUpdateAgency: Record<string, unknown>;\n }>(ops.UPDATE_AGENCY, { id, input });\n return jsonResult(data.govUpdateAgency);\n } catch (error) {\n ctx.logger.error('govcitizenhub agencies_update failed', { error: String(error) });\n return errorResult(\n `Failed to update agency: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agencies_archive')),\n {\n title: 'Archive Agency',\n description: 'Archive (soft-delete) a government agency. Returns true on success.',\n inputSchema: { id: z.string().describe('Agency ID') },\n // BOFF-3907: the fleet destructiveHint inference (tool-name.ts) only\n // matches a `delete` name segment, so an irreversible archive action\n // needs an explicit annotation to be caught by the confirmation gate that\n // govcitizenhub-mcp/src/index.ts enables via enforceDestructiveConfirmation.\n annotations: { destructiveHint: true },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ govArchiveAgency: boolean }>(\n ops.ARCHIVE_AGENCY,\n { id },\n );\n return jsonResult({ archived: data.govArchiveAgency });\n } catch (error) {\n ctx.logger.error('govcitizenhub agencies_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive agency: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub service tools — the public-service catalog.\n *\n * Surface (5): services_{get,list,create,update,transition}.\n * Backend root fields: govService / govListServices / govCreateService /\n * govUpdateService / govTransitionService. `govListServices` returns a\n * `GovServiceConnection` ({ items, pageInfo }).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n ServiceCategoryEnum,\n ServiceStatusEnum,\n FeeTypeEnum,\n JsonObject,\n buildPagination,\n} from './shared.js';\n\nexport function registerServiceTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'services_get')),\n {\n title: 'Get Service',\n description:\n 'Fetch a single GovCitizenHub public service by ID, including its owning agency.',\n inputSchema: { id: z.string().describe('Service ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govService: Record<string, unknown> | null;\n }>(ops.GET_SERVICE, { id });\n if (!data.govService) return errorResult(`Service ${id} not found`);\n return jsonResult(data.govService);\n } catch (error) {\n ctx.logger.error('govcitizenhub services_get failed', { error: String(error) });\n return errorResult(\n `Failed to get service: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'services_list')),\n {\n title: 'List Services',\n description:\n 'List public services in the bound workspace with optional agency/category/status filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n agencyId: z.string().optional().describe('Filter by owning agency ID'),\n category: ServiceCategoryEnum.optional().describe('Filter by category'),\n status: ServiceStatusEnum.optional().describe('Filter by publication status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ agencyId, category, status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govListServices: Record<string, unknown>;\n }>(ops.LIST_SERVICES, {\n agencyId,\n category,\n status,\n pagination: buildPagination({ limit, offset, cursor }),\n });\n return jsonResult(data.govListServices);\n } catch (error) {\n ctx.logger.error('govcitizenhub services_list failed', { error: String(error) });\n return errorResult(\n `Failed to list services: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'services_create')),\n {\n title: 'Create Service',\n description:\n 'Create a public service under an agency. `slug` must be unique within the workspace; `feeType`+`feeAmount` define the fee model.',\n inputSchema: {\n agencyId: z.string().min(1).describe('Owning agency ID'),\n name: z.string().min(1).describe('Service display name'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n category: ServiceCategoryEnum.optional().describe('Service category (default OTHER)'),\n summary: z.string().optional().describe('Short summary'),\n eligibility: z.string().optional().describe('Eligibility criteria text'),\n feeType: FeeTypeEnum.optional().describe('Fee model (default FREE)'),\n feeAmount: z.number().optional().describe('Fee amount (for FIXED/VARIABLE)'),\n currency: z.string().optional().describe('ISO currency code for the fee'),\n slaDays: z.number().int().optional().describe('Target turnaround in days'),\n requiredDocuments: z\n .array(z.string())\n .optional()\n .describe('Names of documents the citizen must submit'),\n formSchema: JsonObject.optional().describe('JSON schema describing the application form'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({\n agencyId,\n name,\n slug,\n category,\n summary,\n eligibility,\n feeType,\n feeAmount,\n currency,\n slaDays,\n requiredDocuments,\n formSchema,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { agencyId, name, slug };\n if (category !== undefined) input.category = category;\n if (summary !== undefined) input.summary = summary;\n if (eligibility !== undefined) input.eligibility = eligibility;\n if (feeType !== undefined) input.feeType = feeType;\n if (feeAmount !== undefined) input.feeAmount = feeAmount;\n if (currency !== undefined) input.currency = currency;\n if (slaDays !== undefined) input.slaDays = slaDays;\n if (requiredDocuments !== undefined) input.requiredDocuments = requiredDocuments;\n if (formSchema !== undefined) input.formSchema = formSchema;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n govCreateService: Record<string, unknown>;\n }>(ops.CREATE_SERVICE, { input });\n return jsonResult(data.govCreateService);\n } catch (error) {\n ctx.logger.error('govcitizenhub services_create failed', { error: String(error) });\n return errorResult(\n `Failed to create service: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'services_update')),\n {\n title: 'Update Service',\n description: 'Update a public service. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Service ID'),\n name: z.string().optional().describe('Updated display name'),\n category: ServiceCategoryEnum.optional().describe('Updated category'),\n summary: z.string().optional().describe('Updated summary'),\n eligibility: z.string().optional().describe('Updated eligibility text'),\n feeType: FeeTypeEnum.optional().describe('Updated fee model'),\n feeAmount: z.number().optional().describe('Updated fee amount'),\n currency: z.string().optional().describe('Updated currency'),\n slaDays: z.number().int().optional().describe('Updated SLA days'),\n requiredDocuments: z.array(z.string()).optional().describe('Updated required documents'),\n formSchema: JsonObject.optional().describe('Updated form schema JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n category,\n summary,\n eligibility,\n feeType,\n feeAmount,\n currency,\n slaDays,\n requiredDocuments,\n formSchema,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (category !== undefined) input.category = category;\n if (summary !== undefined) input.summary = summary;\n if (eligibility !== undefined) input.eligibility = eligibility;\n if (feeType !== undefined) input.feeType = feeType;\n if (feeAmount !== undefined) input.feeAmount = feeAmount;\n if (currency !== undefined) input.currency = currency;\n if (slaDays !== undefined) input.slaDays = slaDays;\n if (requiredDocuments !== undefined) input.requiredDocuments = requiredDocuments;\n if (formSchema !== undefined) input.formSchema = formSchema;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/category/summary/eligibility/feeType/feeAmount/currency/slaDays/requiredDocuments/formSchema/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n govUpdateService: Record<string, unknown>;\n }>(ops.UPDATE_SERVICE, { id, input });\n return jsonResult(data.govUpdateService);\n } catch (error) {\n ctx.logger.error('govcitizenhub services_update failed', { error: String(error) });\n return errorResult(\n `Failed to update service: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'services_transition')),\n {\n title: 'Transition Service',\n description:\n 'Advance a service through its publication lifecycle (DRAFT → PUBLISHED → SUSPENDED/RETIRED) with validated transitions.',\n inputSchema: {\n id: z.string().describe('Service ID'),\n status: ServiceStatusEnum.describe('Target publication status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govTransitionService: Record<string, unknown>;\n }>(ops.TRANSITION_SERVICE, { id, status });\n return jsonResult(data.govTransitionService);\n } catch (error) {\n ctx.logger.error('govcitizenhub services_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition service: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub application tools — citizen applications + casework lifecycle.\n *\n * Surface (6): applications_{get,list,create,update,submit,transition}.\n * Backend root fields: govApplication / govListApplications /\n * govCreateApplication / govUpdateApplication / govSubmitApplication /\n * govTransitionApplication. `govListApplications` returns a\n * `GovApplicationConnection` ({ items, pageInfo }). `applications_get` hydrates\n * the nested documents, case notes, and permits.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ApplicationStatusEnum, CasePriorityEnum, JsonObject, buildPagination } from './shared.js';\n\nexport function registerApplicationTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'applications_get')),\n {\n title: 'Get Application',\n description:\n 'Fetch a single GovCitizenHub citizen application by ID, including its documents, case notes, and issued permits.',\n inputSchema: { id: z.string().describe('Application ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govApplication: Record<string, unknown> | null;\n }>(ops.GET_APPLICATION, { id });\n if (!data.govApplication) return errorResult(`Application ${id} not found`);\n return jsonResult(data.govApplication);\n } catch (error) {\n ctx.logger.error('govcitizenhub applications_get failed', { error: String(error) });\n return errorResult(\n `Failed to get application: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'applications_list')),\n {\n title: 'List Applications',\n description:\n 'List citizen applications with optional citizen/service/assignee/status filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n citizenId: z.string().optional().describe('Filter by applicant (citizen) user ID'),\n serviceId: z.string().optional().describe('Filter by service ID'),\n assignedToId: z.string().optional().describe('Filter by assigned caseworker user ID'),\n status: ApplicationStatusEnum.optional().describe('Filter by review status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ citizenId, serviceId, assignedToId, status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govListApplications: Record<string, unknown>;\n }>(ops.LIST_APPLICATIONS, {\n citizenId,\n serviceId,\n assignedToId,\n status,\n pagination: buildPagination({ limit, offset, cursor }),\n });\n return jsonResult(data.govListApplications);\n } catch (error) {\n ctx.logger.error('govcitizenhub applications_list failed', { error: String(error) });\n return errorResult(\n `Failed to list applications: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'applications_create')),\n {\n title: 'Create Application',\n description:\n 'Start a new citizen application against a service (created in DRAFT). The applicant identity comes from the gateway actor headers.',\n inputSchema: {\n serviceId: z.string().min(1).describe('Service being applied for'),\n reference: z.string().optional().describe('Optional caller-supplied reference number'),\n priority: CasePriorityEnum.optional().describe('Priority (default NORMAL)'),\n formData: JsonObject.optional().describe('Submitted form data JSON'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ serviceId, reference, priority, formData, tags }) => {\n try {\n const input: Record<string, unknown> = { serviceId };\n if (reference !== undefined) input.reference = reference;\n if (priority !== undefined) input.priority = priority;\n if (formData !== undefined) input.formData = formData;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n govCreateApplication: Record<string, unknown>;\n }>(ops.CREATE_APPLICATION, { input });\n return jsonResult(data.govCreateApplication);\n } catch (error) {\n ctx.logger.error('govcitizenhub applications_create failed', { error: String(error) });\n return errorResult(\n `Failed to create application: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'applications_update')),\n {\n title: 'Update Application',\n description:\n 'Update a draft/in-progress application. At least one mutable field must be provided. Use `assignedToId` to assign a caseworker.',\n inputSchema: {\n id: z.string().describe('Application ID'),\n assignedToId: z.string().optional().describe('Assigned caseworker user ID'),\n priority: CasePriorityEnum.optional().describe('Updated priority'),\n formData: JsonObject.optional().describe('Updated form data JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, assignedToId, priority, formData, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (assignedToId !== undefined) input.assignedToId = assignedToId;\n if (priority !== undefined) input.priority = priority;\n if (formData !== undefined) input.formData = formData;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of assignedToId/priority/formData/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n govUpdateApplication: Record<string, unknown>;\n }>(ops.UPDATE_APPLICATION, { id, input });\n return jsonResult(data.govUpdateApplication);\n } catch (error) {\n ctx.logger.error('govcitizenhub applications_update failed', { error: String(error) });\n return errorResult(\n `Failed to update application: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'applications_submit')),\n {\n title: 'Submit Application',\n description: 'Submit a DRAFT application for review (moves it to SUBMITTED).',\n inputSchema: { id: z.string().describe('Application ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govSubmitApplication: Record<string, unknown>;\n }>(ops.SUBMIT_APPLICATION, { id });\n return jsonResult(data.govSubmitApplication);\n } catch (error) {\n ctx.logger.error('govcitizenhub applications_submit failed', { error: String(error) });\n return errorResult(\n `Failed to submit application: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'applications_transition')),\n {\n title: 'Transition Application',\n description:\n 'Advance an application through its review lifecycle (SUBMITTED → IN_REVIEW → INFO_REQUESTED/APPROVED/REJECTED/WITHDRAWN) with validated transitions. `reason` is recorded with the decision.',\n inputSchema: {\n id: z.string().describe('Application ID'),\n status: ApplicationStatusEnum.describe('Target review status'),\n reason: z.string().optional().describe('Reason/decision note for the transition'),\n },\n },\n async ({ id, status, reason }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govTransitionApplication: Record<string, unknown>;\n }>(ops.TRANSITION_APPLICATION, { id, status, reason });\n return jsonResult(data.govTransitionApplication);\n } catch (error) {\n ctx.logger.error('govcitizenhub applications_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition application: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub document tools — supporting documents on an application.\n *\n * Surface (2): documents_{add,review}.\n * Backend root fields: govAddDocument / govReviewDocument. Documents reference\n * a wspace-files-svc `File` via federation (the Files service owns storage +\n * signed URLs) — only the file `id` is threaded here.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { DocumentStatusEnum } from './shared.js';\n\nexport function registerDocumentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'documents_add')),\n {\n title: 'Add Document',\n description:\n 'Attach a supporting document to an application. `fileId` references an already-uploaded wspace-files-svc File; `requirement` ties it to a service-required document.',\n inputSchema: {\n applicationId: z.string().min(1).describe('Application the document belongs to'),\n name: z.string().min(1).describe('Document display name'),\n fileId: z.string().optional().describe('wspace-files-svc File ID for the uploaded blob'),\n requirement: z\n .string()\n .optional()\n .describe('Name of the required-document slot this satisfies'),\n },\n },\n async ({ applicationId, name, fileId, requirement }) => {\n try {\n const input: Record<string, unknown> = { applicationId, name };\n if (fileId !== undefined) input.fileId = fileId;\n if (requirement !== undefined) input.requirement = requirement;\n\n const data = await ctx.gql.workspace.request<{\n govAddDocument: Record<string, unknown>;\n }>(ops.ADD_DOCUMENT, { input });\n return jsonResult(data.govAddDocument);\n } catch (error) {\n ctx.logger.error('govcitizenhub documents_add failed', { error: String(error) });\n return errorResult(\n `Failed to add document: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'documents_review')),\n {\n title: 'Review Document',\n description:\n 'Accept or reject a submitted document. Supply `rejectionReason` when setting status=REJECTED.',\n inputSchema: {\n id: z.string().describe('Document ID'),\n status: DocumentStatusEnum.describe('Review outcome (ACCEPTED/PENDING/REJECTED)'),\n rejectionReason: z.string().optional().describe('Reason when rejecting'),\n },\n },\n async ({ id, status, rejectionReason }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govReviewDocument: Record<string, unknown>;\n }>(ops.REVIEW_DOCUMENT, { id, status, rejectionReason });\n return jsonResult(data.govReviewDocument);\n } catch (error) {\n ctx.logger.error('govcitizenhub documents_review failed', { error: String(error) });\n return errorResult(\n `Failed to review document: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub case-note tools — casework communication trail.\n *\n * Surface (1): case_notes_add (matches the sdk-libs-node `caseNotes.add` op).\n * Backend root field: govAddCaseNote. Case notes are read back via the nested\n * `notes` field on an application (applications_get), so there is no standalone\n * list/get tool — the schema exposes none.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CaseNoteTypeEnum } from './shared.js';\n\nexport function registerNoteTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'case_notes_add')),\n {\n title: 'Add Case Note',\n description:\n 'Add a case note to an application. `type` controls visibility/intent: INTERNAL (staff-only), CITIZEN_MESSAGE, INFO_REQUEST, or DECISION. The author identity comes from the gateway actor headers.',\n inputSchema: {\n applicationId: z.string().min(1).describe('Application the note belongs to'),\n body: z.string().min(1).describe('Note body text'),\n type: CaseNoteTypeEnum.optional().describe('Note type (default INTERNAL)'),\n },\n },\n async ({ applicationId, body, type }) => {\n try {\n const input: Record<string, unknown> = { applicationId, body };\n if (type !== undefined) input.type = type;\n\n const data = await ctx.gql.workspace.request<{\n govAddCaseNote: Record<string, unknown>;\n }>(ops.ADD_CASE_NOTE, { input });\n return jsonResult(data.govAddCaseNote);\n } catch (error) {\n ctx.logger.error('govcitizenhub notes_add failed', { error: String(error) });\n return errorResult(\n `Failed to add case note: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub permit tools — issued permits/licences + public verification.\n *\n * Surface (4): permits_{list,verify,issue,revoke}.\n * Backend root fields: govListPermits (plain array) / govVerifyPermit (@public,\n * by printed verification code) / govIssuePermit / govRevokePermit. There is no\n * single-permit `get` query in the schema — permits are reached via list,\n * verify, or the nested `permits` field on an application.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { PermitStatusEnum } from './shared.js';\n\nexport function registerPermitTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'permits_list')),\n {\n title: 'List Permits',\n description:\n 'List issued permits in the bound workspace, optionally filtered by holder, service, or status.',\n inputSchema: {\n holderId: z.string().optional().describe('Filter by permit holder user ID'),\n serviceId: z.string().optional().describe('Filter by service ID'),\n status: PermitStatusEnum.optional().describe('Filter by permit status'),\n },\n },\n async ({ holderId, serviceId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govListPermits: Array<Record<string, unknown>>;\n }>(ops.LIST_PERMITS, { holderId, serviceId, status });\n return jsonResult(data.govListPermits);\n } catch (error) {\n ctx.logger.error('govcitizenhub permits_list failed', { error: String(error) });\n return errorResult(\n `Failed to list permits: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'permits_verify')),\n {\n title: 'Verify Permit',\n description:\n 'Public permit verification by its printed verification code (citizen-facing trust check). Returns the permit or null if no match.',\n inputSchema: {\n verificationCode: z.string().min(1).describe('The printed permit verification code'),\n },\n },\n async ({ verificationCode }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govVerifyPermit: Record<string, unknown> | null;\n }>(ops.VERIFY_PERMIT, { verificationCode });\n if (!data.govVerifyPermit) {\n return errorResult(`No permit found for verification code ${verificationCode}`);\n }\n return jsonResult(data.govVerifyPermit);\n } catch (error) {\n ctx.logger.error('govcitizenhub permits_verify failed', { error: String(error) });\n return errorResult(\n `Failed to verify permit: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'permits_issue')),\n {\n title: 'Issue Permit',\n description:\n 'Issue a permit/licence to a holder for a service. `verificationCode` must be unique; optionally tie it to the originating application and an expiry.',\n inputSchema: {\n serviceId: z.string().min(1).describe('Service the permit is issued under'),\n holderId: z.string().min(1).describe('User ID of the permit holder'),\n title: z.string().min(1).describe('Permit title'),\n verificationCode: z.string().min(1).describe('Unique printed verification code'),\n applicationId: z.string().optional().describe('Originating application ID'),\n fileId: z.string().optional().describe('wspace-files-svc File ID of the permit PDF'),\n expiresAt: z.string().optional().describe('Expiry timestamp (ISO 8601)'),\n },\n },\n async ({ serviceId, holderId, title, verificationCode, applicationId, fileId, expiresAt }) => {\n try {\n const input: Record<string, unknown> = { serviceId, holderId, title, verificationCode };\n if (applicationId !== undefined) input.applicationId = applicationId;\n if (fileId !== undefined) input.fileId = fileId;\n if (expiresAt !== undefined) input.expiresAt = expiresAt;\n\n const data = await ctx.gql.workspace.request<{\n govIssuePermit: Record<string, unknown>;\n }>(ops.ISSUE_PERMIT, { input });\n return jsonResult(data.govIssuePermit);\n } catch (error) {\n ctx.logger.error('govcitizenhub permits_issue failed', { error: String(error) });\n return errorResult(\n `Failed to issue permit: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'permits_revoke')),\n {\n title: 'Revoke Permit',\n description: 'Revoke an issued permit. `reason` is recorded with the revocation.',\n inputSchema: {\n id: z.string().describe('Permit ID'),\n reason: z.string().optional().describe('Reason for revocation'),\n },\n // BOFF-3907: the fleet destructiveHint inference (tool-name.ts) only\n // matches a `delete` name segment, so an irreversible revocation action\n // needs an explicit annotation to be caught by the confirmation gate that\n // govcitizenhub-mcp/src/index.ts enables via enforceDestructiveConfirmation.\n annotations: { destructiveHint: true },\n },\n async ({ id, reason }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govRevokePermit: Record<string, unknown>;\n }>(ops.REVOKE_PERMIT, { id, reason });\n return jsonResult(data.govRevokePermit);\n } catch (error) {\n ctx.logger.error('govcitizenhub permits_revoke failed', { error: String(error) });\n return errorResult(\n `Failed to revoke permit: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub grievance tools — civic grievance reporting + resolution.\n *\n * Surface (5): grievances_{get,list,report,update,transition}.\n * Backend root fields: govGrievance / govListGrievances / govReportGrievance /\n * govUpdateGrievance / govTransitionGrievance. `govListGrievances` returns a\n * `GovGrievanceConnection` ({ items, pageInfo }).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n ServiceCategoryEnum,\n GrievanceStatusEnum,\n CasePriorityEnum,\n buildPagination,\n} from './shared.js';\n\nexport function registerGrievanceTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grievances_get')),\n {\n title: 'Get Grievance',\n description: 'Fetch a single GovCitizenHub civic grievance by ID.',\n inputSchema: { id: z.string().describe('Grievance ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govGrievance: Record<string, unknown> | null;\n }>(ops.GET_GRIEVANCE, { id });\n if (!data.govGrievance) return errorResult(`Grievance ${id} not found`);\n return jsonResult(data.govGrievance);\n } catch (error) {\n ctx.logger.error('govcitizenhub grievances_get failed', { error: String(error) });\n return errorResult(\n `Failed to get grievance: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grievances_list')),\n {\n title: 'List Grievances',\n description:\n 'List civic grievances with optional agency/reporter/status filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n agencyId: z.string().optional().describe('Filter by responsible agency ID'),\n reporterId: z.string().optional().describe('Filter by reporter (citizen) user ID'),\n status: GrievanceStatusEnum.optional().describe('Filter by resolution status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ agencyId, reporterId, status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govListGrievances: Record<string, unknown>;\n }>(ops.LIST_GRIEVANCES, {\n agencyId,\n reporterId,\n status,\n pagination: buildPagination({ limit, offset, cursor }),\n });\n return jsonResult(data.govListGrievances);\n } catch (error) {\n ctx.logger.error('govcitizenhub grievances_list failed', { error: String(error) });\n return errorResult(\n `Failed to list grievances: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grievances_report')),\n {\n title: 'Report Grievance',\n description:\n 'File a new civic grievance. The reporter identity comes from the gateway actor headers. Optionally geotag it (location/latitude/longitude) and attach photo File IDs.',\n inputSchema: {\n title: z.string().min(1).describe('Grievance title'),\n description: z.string().min(1).describe('Detailed description'),\n category: ServiceCategoryEnum.optional().describe('Category (default GRIEVANCES)'),\n priority: CasePriorityEnum.optional().describe('Priority (default NORMAL)'),\n agencyId: z.string().optional().describe('Responsible agency ID'),\n location: z.string().optional().describe('Human-readable location'),\n latitude: z.number().optional().describe('Latitude'),\n longitude: z.number().optional().describe('Longitude'),\n photoFileIds: z\n .array(z.string())\n .optional()\n .describe('wspace-files-svc File IDs for attached photos'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({\n title,\n description,\n category,\n priority,\n agencyId,\n location,\n latitude,\n longitude,\n photoFileIds,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { title, description };\n if (category !== undefined) input.category = category;\n if (priority !== undefined) input.priority = priority;\n if (agencyId !== undefined) input.agencyId = agencyId;\n if (location !== undefined) input.location = location;\n if (latitude !== undefined) input.latitude = latitude;\n if (longitude !== undefined) input.longitude = longitude;\n if (photoFileIds !== undefined) input.photoFileIds = photoFileIds;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n govReportGrievance: Record<string, unknown>;\n }>(ops.REPORT_GRIEVANCE, { input });\n return jsonResult(data.govReportGrievance);\n } catch (error) {\n ctx.logger.error('govcitizenhub grievances_report failed', { error: String(error) });\n return errorResult(\n `Failed to report grievance: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grievances_update')),\n {\n title: 'Update Grievance',\n description:\n 'Update a grievance. At least one mutable field must be provided. Use `assignedToId` to assign an owner and `agencyId` to route it.',\n inputSchema: {\n id: z.string().describe('Grievance ID'),\n assignedToId: z.string().optional().describe('Assigned owner user ID'),\n agencyId: z.string().optional().describe('Responsible agency ID'),\n priority: CasePriorityEnum.optional().describe('Updated priority'),\n location: z.string().optional().describe('Updated location'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, assignedToId, agencyId, priority, location, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (assignedToId !== undefined) input.assignedToId = assignedToId;\n if (agencyId !== undefined) input.agencyId = agencyId;\n if (priority !== undefined) input.priority = priority;\n if (location !== undefined) input.location = location;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of assignedToId/agencyId/priority/location/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n govUpdateGrievance: Record<string, unknown>;\n }>(ops.UPDATE_GRIEVANCE, { id, input });\n return jsonResult(data.govUpdateGrievance);\n } catch (error) {\n ctx.logger.error('govcitizenhub grievances_update failed', { error: String(error) });\n return errorResult(\n `Failed to update grievance: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grievances_transition')),\n {\n title: 'Transition Grievance',\n description:\n 'Advance a grievance through its resolution lifecycle (OPEN → ACKNOWLEDGED → IN_PROGRESS → RESOLVED/CLOSED/REJECTED) with validated transitions. `resolution` is recorded on resolve.',\n inputSchema: {\n id: z.string().describe('Grievance ID'),\n status: GrievanceStatusEnum.describe('Target resolution status'),\n resolution: z.string().optional().describe('Resolution note'),\n },\n },\n async ({ id, status, resolution }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govTransitionGrievance: Record<string, unknown>;\n }>(ops.TRANSITION_GRIEVANCE, { id, status, resolution });\n return jsonResult(data.govTransitionGrievance);\n } catch (error) {\n ctx.logger.error('govcitizenhub grievances_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition grievance: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub payment tools — fee payments against applications.\n *\n * Surface (5): payments_{get,list,create,mark_paid,refund}.\n * Backend root fields: govPayment / govListPayments / govCreatePayment /\n * govMarkPaymentPaid / govRefundPayment. `govListPayments` returns a\n * `GovPaymentConnection` ({ items, pageInfo }).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { PaymentStatusEnum, JsonObject, buildPagination } from './shared.js';\n\nexport function registerPaymentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payments_get')),\n {\n title: 'Get Payment',\n description: 'Fetch a single GovCitizenHub fee payment by ID.',\n inputSchema: { id: z.string().describe('Payment ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govPayment: Record<string, unknown> | null;\n }>(ops.GET_PAYMENT, { id });\n if (!data.govPayment) return errorResult(`Payment ${id} not found`);\n return jsonResult(data.govPayment);\n } catch (error) {\n ctx.logger.error('govcitizenhub payments_get failed', { error: String(error) });\n return errorResult(\n `Failed to get payment: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payments_list')),\n {\n title: 'List Payments',\n description:\n 'List fee payments with optional application/payer/status filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n applicationId: z.string().optional().describe('Filter by application ID'),\n payerId: z.string().optional().describe('Filter by payer user ID'),\n status: PaymentStatusEnum.optional().describe('Filter by payment status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ applicationId, payerId, status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govListPayments: Record<string, unknown>;\n }>(ops.LIST_PAYMENTS, {\n applicationId,\n payerId,\n status,\n pagination: buildPagination({ limit, offset, cursor }),\n });\n return jsonResult(data.govListPayments);\n } catch (error) {\n ctx.logger.error('govcitizenhub payments_list failed', { error: String(error) });\n return errorResult(\n `Failed to list payments: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payments_create')),\n {\n title: 'Create Payment',\n description:\n 'Record a fee payment (created PENDING). Optionally tie it to an application and supply itemised lineItems JSON. The payer identity comes from the gateway actor headers.',\n inputSchema: {\n amount: z.number().describe('Payment amount'),\n applicationId: z.string().optional().describe('Application the fee is for'),\n currency: z.string().optional().describe('ISO currency code'),\n providerRef: z.string().optional().describe('External payment-provider reference'),\n lineItems: JsonObject.optional().describe('Itemised line-items JSON'),\n },\n },\n async ({ amount, applicationId, currency, providerRef, lineItems }) => {\n try {\n const input: Record<string, unknown> = { amount };\n if (applicationId !== undefined) input.applicationId = applicationId;\n if (currency !== undefined) input.currency = currency;\n if (providerRef !== undefined) input.providerRef = providerRef;\n if (lineItems !== undefined) input.lineItems = lineItems;\n\n const data = await ctx.gql.workspace.request<{\n govCreatePayment: Record<string, unknown>;\n }>(ops.CREATE_PAYMENT, { input });\n return jsonResult(data.govCreatePayment);\n } catch (error) {\n ctx.logger.error('govcitizenhub payments_create failed', { error: String(error) });\n return errorResult(\n `Failed to create payment: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payments_mark_paid')),\n {\n title: 'Mark Payment Paid',\n description:\n 'Mark a pending payment as PAID, optionally recording the external provider reference.',\n inputSchema: {\n id: z.string().describe('Payment ID'),\n providerRef: z.string().optional().describe('External payment-provider reference'),\n },\n },\n async ({ id, providerRef }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govMarkPaymentPaid: Record<string, unknown>;\n }>(ops.MARK_PAYMENT_PAID, { id, providerRef });\n return jsonResult(data.govMarkPaymentPaid);\n } catch (error) {\n ctx.logger.error('govcitizenhub payments_mark_paid failed', { error: String(error) });\n return errorResult(\n `Failed to mark payment paid: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payments_refund')),\n {\n title: 'Refund Payment',\n description: 'Refund a paid payment (moves it to REFUNDED).',\n inputSchema: { id: z.string().describe('Payment ID') },\n // BOFF-3907: the fleet destructiveHint inference (tool-name.ts) only\n // matches a `delete` name segment, so an irreversible refund action\n // needs an explicit annotation to be caught by the confirmation gate that\n // govcitizenhub-mcp/src/index.ts enables via enforceDestructiveConfirmation.\n annotations: { destructiveHint: true },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n govRefundPayment: Record<string, unknown>;\n }>(ops.REFUND_PAYMENT, { id });\n return jsonResult(data.govRefundPayment);\n } catch (error) {\n ctx.logger.error('govcitizenhub payments_refund failed', { error: String(error) });\n return errorResult(\n `Failed to refund payment: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * GovCitizenHub health tool.\n *\n * Surface (1): health.\n * Maps to the @public `govHealth` query (no auth required) — the GovCitizenHub\n * subgraph exposes a real liveness/identity probe, so a health tool is wired\n * (mirrors kadaikodi's `health`).\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'GovCitizenHub Health Check',\n description:\n 'Public health probe for the GovCitizenHub subgraph (govHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ govHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.govHealth });\n } catch (error) {\n ctx.logger.error('govcitizenhub health failed', { error: String(error) });\n return errorResult(\n `GovCitizenHub health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_AGENCIES, LIST_SERVICES } from './operations.js';\n\n/**\n * Read-only GovCitizenHub MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerGovcitizenhubResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const agenciesUri = track(mcpResourceUri(ctx.productName, 'agencies'));\n const servicesUri = track(mcpResourceUri(ctx.productName, 'services'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'govcitizenhub-schema',\n schemaUri,\n {\n title: 'GovCitizenHub Domain Schema',\n description:\n 'Overview of the GovCitizenHub domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# GovCitizenHub Domain (Overview)\n\nGovernment & Citizen Services Operating System — a unified catalog of public\nservices, citizen applications, casework and permits, fee payments, and civic\ngrievances.\n\n## Entities\n- GovAgency — a government agency (operates services)\n- GovService — a public service in the catalog (fee model, SLA, required docs)\n- GovApplication — a citizen application against a service (+documents, notes, permits)\n- GovDocument — a supporting document on an application (references a Files-svc File)\n- GovCaseNote — a casework note on an application\n- GovPermit — an issued permit/licence (publicly verifiable by code)\n- GovGrievance — a civic grievance report\n- GovPayment — a fee payment against an application\n\n## Enums\n- GovServiceCategory: CERTIFICATES, EDUCATION, GRIEVANCES, HEALTH, LICENCES_AND_PERMITS, OTHER, SOCIAL_WELFARE, TAXES_AND_PAYMENTS, UTILITIES\n- GovServiceStatus: DRAFT, PUBLISHED, RETIRED, SUSPENDED\n- GovFeeType: FIXED, FREE, VARIABLE\n- GovApplicationStatus: DRAFT, SUBMITTED, IN_REVIEW, INFO_REQUESTED, APPROVED, REJECTED, WITHDRAWN\n- GovCasePriority: LOW, NORMAL, HIGH, URGENT\n- GovCaseNoteType: INTERNAL, CITIZEN_MESSAGE, INFO_REQUEST, DECISION\n- GovDocumentStatus: PENDING, ACCEPTED, REJECTED\n- GovGrievanceStatus: OPEN, ACKNOWLEDGED, IN_PROGRESS, RESOLVED, CLOSED, REJECTED\n- GovPaymentStatus: PENDING, PAID, FAILED, REFUNDED\n- GovPermitStatus: ISSUED, ACTIVE, EXPIRED, REVOKED\n\n## Tool groups\nagencies, services, applications, documents, notes, permits, grievances, payments, health.\nAll run against the WORKSPACE gateway (workspace-scoped) except the public health probe\nand the public permit-verification check.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://agencies — active agency directory\n server.registerResource(\n 'govcitizenhub-agencies',\n agenciesUri,\n {\n title: 'GovCitizenHub Agency Directory',\n description: 'The first 50 active government agencies in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${agenciesUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ govListAgencies: unknown }>(LIST_AGENCIES, {\n isActive: true,\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: agenciesUri,\n text: JSON.stringify(data.govListAgencies, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: agenciesUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://services — published service catalog\n server.registerResource(\n 'govcitizenhub-services',\n servicesUri,\n {\n title: 'GovCitizenHub Service Catalog',\n description: 'The first 50 published public services in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${servicesUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ govListServices: unknown }>(LIST_SERVICES, {\n status: 'PUBLISHED',\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: servicesUri,\n text: JSON.stringify(data.govListServices, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: servicesUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * GovCitizenHub MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerGovcitizenhubPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const catalogName = track(mcpPromptName(p, 'service-catalog-setup'));\n const caseworkName = track(mcpPromptName(p, 'casework-triage'));\n\n // <product>-service-catalog-setup — stand up an agency + its services\n server.registerPrompt(\n catalogName,\n {\n title: 'Service Catalog Setup',\n description:\n 'Guide for standing up a GovCitizenHub agency and its public-service catalog end to end: create the agency, add services, then publish them.',\n argsSchema: {\n agency: z.string().optional().describe('Agency name'),\n category: z.string().optional().describe('Primary service category'),\n },\n },\n ({ agency, category }) => {\n ctx.logger.debug(`Prompt ${catalogName} called`, { agency, category });\n const agencyNote = agency\n ? `Use the agency name \"${agency}\".`\n : 'Ask the user for the agency name.';\n const categoryNote = category\n ? `Use category ${category}.`\n : 'Help the user pick a GovServiceCategory.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me set up a GovCitizenHub agency and its service catalog.\n\n1. **Create Agency**: Use ${p}_agencies_create. ${agencyNote} Optionally set code, jurisdiction, and contact details.\n2. **Add Services**: Use ${p}_services_create for each public service — ${categoryNote} Provide a unique slug, the fee model (feeType + feeAmount), slaDays, and any requiredDocuments.\n3. **Verify Catalog**: Use ${p}_services_list filtered by the new agencyId to confirm the draft services.\n4. **Publish**: Use ${p}_services_transition with status=PUBLISHED for each service that is ready to accept applications.\n5. **Activate Agency**: If needed, use ${p}_agencies_update to confirm the agency is active.\n\nShow results at each step and confirm before publishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-casework-triage — daily casework operations\n server.registerPrompt(\n caseworkName,\n {\n title: 'Casework Triage',\n description:\n 'Daily casework workflow: triage the submitted-application queue, request info or review documents, advance applications, issue permits, and handle grievances.',\n argsSchema: {\n assignedToId: z.string().optional().describe('Caseworker user ID to triage for'),\n },\n },\n ({ assignedToId }) => {\n ctx.logger.debug(`Prompt ${caseworkName} called`, { assignedToId });\n const assigneeNote = assignedToId\n ? `Focus on applications assigned to \"${assignedToId}\".`\n : `Triage across all caseworkers (omit the assignedToId filter).`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run daily GovCitizenHub casework triage. ${assigneeNote}\n\n1. **Queue**: Use ${p}_applications_list with status=SUBMITTED (then IN_REVIEW) to find applications awaiting action.\n2. **Open a Case**: Use ${p}_applications_get to load an application with its documents, notes, and permits.\n3. **Documents**: Use ${p}_documents_review to ACCEPT/REJECT each submitted document (supply a rejectionReason when rejecting).\n4. **Communicate**: Use ${p}_case_notes_add with type=INFO_REQUEST to ask the citizen for more, or type=INTERNAL for staff notes.\n5. **Advance**: Use ${p}_applications_transition to move the case (IN_REVIEW → INFO_REQUESTED/APPROVED/REJECTED), recording a reason.\n6. **Issue Permit**: On approval, use ${p}_permits_issue to grant the permit/licence (unique verificationCode), tying it to the application.\n7. **Payments**: Use ${p}_payments_list to confirm fees are PAID; use ${p}_payments_mark_paid where a provider reference confirms settlement.\n8. **Grievances**: Use ${p}_grievances_list with status=OPEN and ${p}_grievances_transition to acknowledge/progress/resolve them.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * GovCitizenHub module — domain module for the future-products ecosystem program.\n *\n * Covers all 8 @key entities of wspace-govcitizenhub-svc grouped into\n * per-entity sub-APIs: agencies, services, applications, documents, notes,\n * permits, grievances, payments, plus a public health probe. Mirrors the\n * canonical kadaikodi module's structure (tools/<entity>.ts + resources.ts +\n * prompts.ts) and its typing discipline.\n *\n * Backend: ~/products/govcitizenhub/wspace-govcitizenhub-svc/\n * (Hive service name `govcitizenhub`). All operations run against the WORKSPACE\n * gateway; the @public govHealth probe is exposed as `<product>_health` and the\n * @public govVerifyPermit check as `<product>_permits_verify`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerAgencyTools } from './tools/agencies.js';\nimport { registerServiceTools } from './tools/services.js';\nimport { registerApplicationTools } from './tools/applications.js';\nimport { registerDocumentTools } from './tools/documents.js';\nimport { registerNoteTools } from './tools/notes.js';\nimport { registerPermitTools } from './tools/permits.js';\nimport { registerGrievanceTools } from './tools/grievances.js';\nimport { registerPaymentTools } from './tools/payments.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerGovcitizenhubResources } from './resources.js';\nimport { registerGovcitizenhubPrompts } from './prompts.js';\n\nconst govcitizenhubModule: McpModule = {\n id: 'govcitizenhub',\n version: '0.0.1',\n displayName: 'GovCitizenHub',\n dependsOn: ['auth'],\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerAgencyTools(server, ctx, trackTool);\n registerServiceTools(server, ctx, trackTool);\n registerApplicationTools(server, ctx, trackTool);\n registerDocumentTools(server, ctx, trackTool);\n registerNoteTools(server, ctx, trackTool);\n registerPermitTools(server, ctx, trackTool);\n registerGrievanceTools(server, ctx, trackTool);\n registerPaymentTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerGovcitizenhubResources(server, ctx, trackResource);\n registerGovcitizenhubPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default govcitizenhubModule;\n"]}