compliance_audit
Scan data for PHI exposure (SSN, MRN, DOB) with severity scores and remediation recommendations to ensure HIPAA compliance.
Instructions
HIPAA compliance audit. Scans data for PHI exposure (SSN, MRN, DOB patterns), returns findings with severity, score (0-100), and remediation recommendations.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Data to audit for compliance issues | |
| auditType | No | Type of audit (default: general) |
Implementation Reference
- src/tools.js:102-110 (schema)Schema/tool definition for compliance_audit. Defines input schema with 'data' (record of unknown) and optional 'auditType' (general|hipaa). Points to endpoint '/agent/v1/compliance/audit'.
{ name: 'compliance_audit', description: 'HIPAA compliance audit. Scans data for PHI exposure (SSN, MRN, DOB patterns), returns findings with severity, score (0-100), and remediation recommendations.', price: '$0.25', endpoint: '/agent/v1/compliance/audit', schema: { data: z.record(z.unknown()).describe('Data to audit for compliance issues'), auditType: z.enum(['general', 'hipaa']).optional().describe('Type of audit (default: general)'), }, - src/index.js:19-61 (registration)Registration of compliance_audit via the generic MCP_TOOLS loop in createMcpServer(). The tool is registered with the MCP server using s.tool().
for (const tool of MCP_TOOLS) { s.tool(tool.name, tool.description, tool.schema, async (params) => { const toolDef = getToolByName(tool.name); if (!toolDef) { return { content: [{ type: 'text', text: `Unknown tool: ${tool.name}` }], isError: true }; } try { const response = await fetch(`${API_BASE_URL}${toolDef.endpoint}`, { method: 'POST', headers: { 'Content-Type': 'application/json', ...(API_KEY && { 'X-API-Key': API_KEY }), 'X-Agent-ID': 'mcp-client', 'User-Agent': '@mymedi-ai/mcp-server/1.2.1', }, body: JSON.stringify(params), }); if (response.status === 402) { const paymentInfo = await response.json(); return { content: [{ type: 'text', text: JSON.stringify({ error: 'payment_required', message: `This tool costs ${toolDef.price} per call. Register at ${API_BASE_URL}/bot-marketplace/register for an API key with 10 free starter credits, or pay per call with on-chain USDC (no signup) via the x402 protocol.`, price: toolDef.price, register: `${API_BASE_URL}/bot-marketplace/register`, ...paymentInfo, }, null, 2) }], isError: true, }; } if (!response.ok) { const error = await response.json().catch(() => ({ message: response.statusText })); return { content: [{ type: 'text', text: JSON.stringify({ error: true, status: response.status, ...error }, null, 2) }], isError: true }; } const data = await response.json(); const creditsSpent = response.headers.get('X-Credits-Spent'); const creditsRemaining = response.headers.get('X-Credits-Remaining'); if (creditsSpent) { data._billing = { creditsSpent: parseInt(creditsSpent, 10), creditsRemaining: creditsRemaining ? parseInt(creditsRemaining, 10) : undefined, priceUSD: toolDef.price }; } return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] }; } catch (err) { return { content: [{ type: 'text', text: JSON.stringify({ error: true, message: err.message, hint: 'Ensure MCP_API_BASE_URL and MCP_API_KEY environment variables are set.' }, null, 2) }], isError: true }; } }); } - src/tools.js:255-257 (helper)Helper function getToolByName that looks up tool definitions by name, used during handler execution to find the compliance_audit definition.
export function getToolByName(name) { return MCP_TOOLS.find((t) => t.name === name); }