{"_id":"@adhd/sox-mcp-runtime","_rev":"7-fc6f63188682e0ca0464edc35dabcc92","name":"@adhd/sox-mcp-runtime","dist-tags":{"latest":"0.3.5"},"versions":{"0.2.0":{"name":"@adhd/sox-mcp-runtime","version":"0.2.0","license":"MIT","_id":"@adhd/sox-mcp-runtime@0.2.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"dist":{"shasum":"5d7b23075d632efae6287bc7369400b21e6324ef","tarball":"https://registry.npmjs.org/@adhd/sox-mcp-runtime/-/sox-mcp-runtime-0.2.0.tgz","fileCount":18,"integrity":"sha512-11AHzpS4bihxPMIWQw6eChmpTby/pToVPsyvaJaN/jiLMLII7iXIO20cYkFUiv2ihZid2LNNIjbvDW9HB9NZqg==","signatures":[{"sig":"MEUCIQDZc5VBu3a3/3M9ml1aHt3q7c5W3VGHBP8AwnO01n38UwIgRG/t2YRUZINUMO99nQGDsLc7dyGfwHoQ8TerFLi9Rt4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40140},"main":"./dist/index.js","_from":"file:adhd-sox-mcp-runtime-0.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/6a5f62ebfa5d9a1259c135acbfadd539/adhd-sox-mcp-runtime-0.2.0.tgz","_integrity":"sha512-11AHzpS4bihxPMIWQw6eChmpTby/pToVPsyvaJaN/jiLMLII7iXIO20cYkFUiv2ihZid2LNNIjbvDW9HB9NZqg==","_npmVersion":"11.6.2","description":"Sox MCP runtime wrapper — uniform C6 enforcement across stdio + sse transports","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-host-runtime":"0.2.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sox-mcp-runtime_0.2.0_1782451185043_0.8728770879270198","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@adhd/sox-mcp-runtime","version":"0.3.0","license":"MIT","_id":"@adhd/sox-mcp-runtime@0.3.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"dist":{"shasum":"03fdf35d2921f3215c69955d9e98af892008ed5a","tarball":"https://registry.npmjs.org/@adhd/sox-mcp-runtime/-/sox-mcp-runtime-0.3.0.tgz","fileCount":18,"integrity":"sha512-2Z4TYARNqqLCaAMdyn2bmF8qAFfIbOikFBJITt0gHAtwOo3n07MZaLYurpGeZ4zBPiF6rSIWSjPEbL+HIw7v2w==","signatures":[{"sig":"MEUCIEp6ZrEg1dI9JWvAM2vQ3gm8sMQbhjmyYMzNSjiFa8/fAiEAm8V4ygnSnnIXSK6Ydk5a3Lr7pX36po2Pm/JRh1XGjVw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58331},"main":"./dist/index.js","_from":"file:adhd-sox-mcp-runtime-0.3.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/7b2485b1d284a7c8ba24316002d61044/adhd-sox-mcp-runtime-0.3.0.tgz","_integrity":"sha512-2Z4TYARNqqLCaAMdyn2bmF8qAFfIbOikFBJITt0gHAtwOo3n07MZaLYurpGeZ4zBPiF6rSIWSjPEbL+HIw7v2w==","_npmVersion":"11.6.2","description":"Sox MCP runtime wrapper — uniform C6 enforcement across stdio + sse transports","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-host-runtime":"0.3.0","@adhd/sox-service-proxy":"0.3.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sox-mcp-runtime_0.3.0_1786144737654_0.510868649229399","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@adhd/sox-mcp-runtime","version":"0.3.1","license":"MIT","_id":"@adhd/sox-mcp-runtime@0.3.1","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"dist":{"shasum":"3e00b46410ca3965e05d6f2ce5a6141cec9efac2","tarball":"https://registry.npmjs.org/@adhd/sox-mcp-runtime/-/sox-mcp-runtime-0.3.1.tgz","fileCount":18,"integrity":"sha512-G+DDnOoEU0h49E0PHMK4FrwoCiK5QZlwRRmwXU8BcypYvYeH8xkPzw2XaBOqh1MY4U7+s1Zp37B1rP55AAZLoA==","signatures":[{"sig":"MEUCIDeJtLCnC6fibxGHs1nxWsRxIHPFmR3Nu3/I6AeYAV2EAiEAmtwYQYptEFB1SzAmZ1ey+Tqq/rt88iWu2fdqHSTFkhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64464},"main":"./dist/index.js","_from":"file:adhd-sox-mcp-runtime-0.3.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/e4b98cbd6d92d281b55980ea20584c05/adhd-sox-mcp-runtime-0.3.1.tgz","_integrity":"sha512-G+DDnOoEU0h49E0PHMK4FrwoCiK5QZlwRRmwXU8BcypYvYeH8xkPzw2XaBOqh1MY4U7+s1Zp37B1rP55AAZLoA==","_npmVersion":"11.6.2","description":"Sox MCP runtime wrapper — uniform C6 enforcement across stdio + sse transports","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.2.1","@adhd/sox-host-runtime":"^0.4.0","@adhd/sox-service-proxy":"^0.3.1","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sox-mcp-runtime_0.3.1_1787113047223_0.3074739454025808","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@adhd/sox-mcp-runtime","version":"0.3.2","keywords":["mcp","runtime","stdio","sse","typescript"],"license":"MIT","_id":"@adhd/sox-mcp-runtime@0.3.2","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"homepage":"https://github.com/PseudoSky/adhd","bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"dist":{"shasum":"4ccaf6fb4f1dd7285e687f3aa8e220da96c7212e","tarball":"https://registry.npmjs.org/@adhd/sox-mcp-runtime/-/sox-mcp-runtime-0.3.2.tgz","fileCount":20,"integrity":"sha512-5WnqPiV0iwRPjw5KZfnQwVHU4vjv3rLCy9dM5nZd5rFp1jn6DMBEzXUwhr10jXy7AJCVl+sfSC9yCaKBSQ7oXw==","signatures":[{"sig":"MEYCIQCeOTgGu+K+4eRcji5JzB/e+NxwuD1SGlWMkR2jB1YiZwIhAIuU2w8KhYeDJSd3hvYqOTueeQUGyWAtvCJ+ggooSEIl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74159},"main":"./dist/index.js","_from":"file:adhd-sox-mcp-runtime-0.3.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/01943a5936e57c031f8c1d8572090ab9/adhd-sox-mcp-runtime-0.3.2.tgz","_integrity":"sha512-5WnqPiV0iwRPjw5KZfnQwVHU4vjv3rLCy9dM5nZd5rFp1jn6DMBEzXUwhr10jXy7AJCVl+sfSC9yCaKBSQ7oXw==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Sox MCP runtime wrapper — uniform C6 enforcement across stdio + sse transports","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.0","@adhd/sox-host-runtime":"^0.5.0","@adhd/sox-listen-guard":"^0.1.1","@adhd/sox-service-proxy":"^0.4.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sox-mcp-runtime_0.3.2_1788566485561_0.11793721626928644","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@adhd/sox-mcp-runtime","version":"0.3.3","keywords":["mcp","runtime","stdio","sse","typescript"],"license":"MIT","_id":"@adhd/sox-mcp-runtime@0.3.3","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"homepage":"https://github.com/PseudoSky/adhd","bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"dist":{"shasum":"30058a8845d0541048a7feb473d68b9f76fc2f27","tarball":"https://registry.npmjs.org/@adhd/sox-mcp-runtime/-/sox-mcp-runtime-0.3.3.tgz","fileCount":20,"integrity":"sha512-MchWXdRAEFij0XnKgN/PWGo73kwN7MqoYHFg9SGGLpUIXWbGxNLAsgORr99xNu9AYzFc/1PC7zm4hPpsO0b/hQ==","signatures":[{"sig":"MEQCICqmBmk/5XASwqYm7xePlJweEvvB6r7izo0uN+dZ11ymAiAtihNy3yMCt5biTBPAvXLSN+I9TapDVm9nHNRrEsTHuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAU6LQTA4lnsmMpJ5ifnYVAZfgHuL4jMSjKnKVGnNGrLAiAYQS2dSmEz8tRkMxGt5C7Tu4IOxzTx1VIkiqar9mTg1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74159},"main":"./dist/index.js","_from":"file:adhd-sox-mcp-runtime-0.3.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/1bda015d6a89b56e0963cd75293fe6e0/adhd-sox-mcp-runtime-0.3.3.tgz","_integrity":"sha512-MchWXdRAEFij0XnKgN/PWGo73kwN7MqoYHFg9SGGLpUIXWbGxNLAsgORr99xNu9AYzFc/1PC7zm4hPpsO0b/hQ==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Sox MCP runtime wrapper — uniform C6 enforcement across stdio + sse transports","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.1","@adhd/sox-host-runtime":"^0.6.0","@adhd/sox-listen-guard":"^0.1.1","@adhd/sox-service-proxy":"^0.4.3","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sox-mcp-runtime_0.3.3_1790298410446_0.8773011363710888","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@adhd/sox-mcp-runtime","version":"0.3.4","keywords":["mcp","runtime","stdio","sse","typescript"],"license":"MIT","_id":"@adhd/sox-mcp-runtime@0.3.4","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"homepage":"https://github.com/PseudoSky/adhd","bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"dist":{"shasum":"683ba5a4d5f9efedcd1a484a436649bdf6f22321","tarball":"https://registry.npmjs.org/@adhd/sox-mcp-runtime/-/sox-mcp-runtime-0.3.4.tgz","fileCount":20,"integrity":"sha512-Iiwafu/HaHrjA4pTzm5GK6WOow+fFhJIdJf9AtmN19cNfP0zZAHcaEGiugYDPDoDnzAEQk3XFnOKtpmgUTY+QA==","signatures":[{"sig":"MEUCIQDBrLwAdCNF7IVzP2OzkieFDjciyd8Ra/aJaB1X8+6/bQIgSsIARgCdOM65qfTXU+9SrPSbJCIjGb2sL1qFKvlRWf0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF6+fuGiapcCaNZju+6x73L6OtA6ZRDC5jC0ICsAv/ZgAiEA7AIrT/thC+xSAdS+fmEdGhhgUHpOlCRYnRTCbc7aGBg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74159},"main":"./dist/index.js","_from":"file:adhd-sox-mcp-runtime-0.3.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/6f51dde8bf4db7fce5386d01afb4d02e/adhd-sox-mcp-runtime-0.3.4.tgz","_integrity":"sha512-Iiwafu/HaHrjA4pTzm5GK6WOow+fFhJIdJf9AtmN19cNfP0zZAHcaEGiugYDPDoDnzAEQk3XFnOKtpmgUTY+QA==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Sox MCP runtime wrapper — uniform C6 enforcement across stdio + sse transports","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.2","@adhd/sox-host-runtime":"^0.6.2","@adhd/sox-listen-guard":"^0.1.1","@adhd/sox-service-proxy":"^0.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sox-mcp-runtime_0.3.4_1790650270127_0.3677957643813756","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"_id":"@adhd/sox-mcp-runtime@0.3.5","bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"dist":{"shasum":"3e855c6080582171ad81125bc066a9ff7181c816","tarball":"https://registry.npmjs.org/@adhd/sox-mcp-runtime/-/sox-mcp-runtime-0.3.5.tgz","fileCount":20,"integrity":"sha512-BdhqZjcIzPLH53e2w6qWs4rLyU6xBBGy5wSKgBGT8gzhE1w8kQd4ZN9jtg4sWZIqp0Mf2IF3B8zAFdvdHOPwuA==","signatures":[{"sig":"MEQCIDbaFyN8aHrl13y5nAgUBx+l8eB4XfOIXCqhinJJIFBtAiAscop5RMrLfKKZnkMULFfTo/ArToa3MazAf5HYp1bskg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFaoD9ugGxgBfa9GpFyQWdOYlS9mnILLP8WuKgr8mO+KAiA0YAbEh7QHQ6Ju8YFkCe2ohXkjjvW6r5crsMfhyQEMjA=="}],"unpackedSize":76791},"main":"./dist/index.js","name":"@adhd/sox-mcp-runtime","_from":"file:adhd-sox-mcp-runtime-0.3.5.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"license":"MIT","version":"0.3.5","_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"homepage":"https://github.com/PseudoSky/adhd","keywords":["mcp","runtime","stdio","sse","typescript"],"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/5ceea290e10d2323ea4d5b49832007c0/adhd-sox-mcp-runtime-0.3.5.tgz","_integrity":"sha512-BdhqZjcIzPLH53e2w6qWs4rLyU6xBBGy5wSKgBGT8gzhE1w8kQd4ZN9jtg4sWZIqp0Mf2IF3B8zAFdvdHOPwuA==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Sox MCP runtime wrapper — uniform C6 enforcement across stdio + sse transports","directories":{},"maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.4.0","@adhd/sox-host-runtime":"^0.6.2","@adhd/sox-listen-guard":"^0.1.1","@adhd/sox-service-proxy":"^0.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sox-mcp-runtime_0.3.5_1790798695020_0.08890605581184308"}}},"time":{"created":"2026-06-26T05:19:44.930Z","modified":"2026-09-30T20:04:55.307Z","0.2.0":"2026-06-26T05:19:45.191Z","0.3.0":"2026-08-07T23:18:57.812Z","0.3.1":"2026-08-19T04:17:27.375Z","0.3.2":"2026-09-05T00:01:25.756Z","0.3.3":"2026-09-25T01:06:50.523Z","0.3.4":"2026-09-29T02:51:10.232Z","0.3.5":"2026-09-30T20:04:55.154Z"},"bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"license":"MIT","homepage":"https://github.com/PseudoSky/adhd","keywords":["mcp","runtime","stdio","sse","typescript"],"repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"description":"Sox MCP runtime wrapper — uniform C6 enforcement across stdio + sse transports","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"readme":"# @adhd/sox-mcp-runtime\n\nA thin author-facing wrapper around `@modelcontextprotocol/sdk`: write tools as plain functions, call `serve(tools, opts)`, and get stdio + Unix-domain-socket + Streamable-HTTP transports, C6 permission enforcement at the resource sink, health, and graceful shutdown for free. Every extension built on this package automatically serves all three transports — there is no reimplementation of the MCP protocol here, only transport selection, policy enforcement, and lifecycle wiring layered on top of the official SDK.\n\n```bash\npnpm add @adhd/sox-mcp-runtime\n```\n\n## Quick start\n\n```typescript\nimport { defineTool, serve, type ToolResult } from '@adhd/sox-mcp-runtime';\n\nconst echo = defineTool({\n  name: 'echo',\n  description: 'Echoes the given text back.',\n  inputSchema: {\n    type: 'object',\n    properties: { text: { type: 'string' } },\n    required: ['text'],\n  },\n  handler: (args, ctx): ToolResult => {\n    // ctx exposes the compiled C6 policy — check it before touching any resource.\n    if (!ctx.allowsFsRead(process.cwd())) {\n      return { isError: true, content: [{ type: 'text', text: 'fs read denied by policy' }] };\n    }\n    return { content: [{ type: 'text', text: String(args['text']) }] };\n  },\n});\n\nawait serve([echo], { name: 'echo-server', version: '1.0.0' });\n```\n\nThat's a complete MCP server. Run it directly and it serves `stdio` by default (or `SOX_MCP_TRANSPORT`/`--transport`, or the multi-bind `transports` option below); `soxe` spawns it as a supervised extension via `@adhd/sox-host-runtime` without any further wiring.\n\n### Binding multiple transports at once\n\n```typescript\nawait serve([echo], {\n  name: 'echo-server',\n  version: '1.0.0',\n  transport: {\n    transports: ['stdio', 'uds', 'http'],\n    port: 3099,           // SOX_MCP_PORT env var also works\n    host: '127.0.0.1',    // non-loopback requires authToken (TR-2)\n    socketPath: '/tmp/echo-server.sock',\n  },\n});\n```\n\n## API reference\n\n### Author API\n\n```typescript\nconst serves: readonly ['stdio', 'sse', 'http'];\ntype ServesValue = 'stdio' | 'sse' | 'http';\n\nfunction defineTool<TArgs extends Record<string, unknown> = Record<string, unknown>>(\n  def: ToolDefinition<TArgs>,\n): RegisteredTool;\n\ninterface ToolDefinition<TArgs> {\n  name: string;\n  description: string;\n  inputSchema: { type: 'object'; properties: Record<string, object>; required?: string[] };\n  handler: (args: TArgs, ctx: ToolContext) => Promise<ToolResult> | ToolResult;\n}\n\ninterface ToolContext {\n  enforced: boolean;\n  allowsFsRead(absPath: string): boolean;\n  allowsFsWrite(absPath: string): boolean;\n  allowsNetwork(hostOrUrl: string): boolean;\n  allowsSocket(absPath: string): boolean;\n}\n\ninterface ToolResultContent { type: 'text'; text: string; }\ninterface ToolResult {\n  content: ToolResultContent[];\n  isError?: boolean;\n}\n/** A compiled, registered tool ready for serve() — returned by defineTool(). */\ninterface RegisteredTool { definition: ToolDefinition; }\n\nfunction serve(tools: RegisteredTool[], opts: ServeOptions): Promise<void>;\ninterface ServeOptions {\n  name: string;\n  version?: string;\n  transport?: TransportOptions; // see below — defaults to stdio only\n}\n\nfunction buildToolDispatch(tools: RegisteredTool[], serverInfo: { name: string; version: string }): ToolDispatch;\nfunction formatToolError(err: unknown, ctx?: { tool?: string }): { isError: true; content: [{ type: 'text'; text: string }] };\n```\n\n`formatToolError` is what to reach for in a `catch` block around your own dispatch logic — it preserves a structured error's shape (rather than collapsing it to `\"[object Object]\"` via `String()`) and traces the failure through `@adhd/sox-telemetry`.\n\n### Transport (advanced — for a custom dispatch loop or tests)\n\n```typescript\ntype TransportMode = 'stdio' | 'uds' | 'http' | 'sse';\ninterface TransportOptions {\n  mode?: TransportMode;           // single-mode back-compat; ignored when `transports` is set\n  transports?: TransportMode[];   // multi-bind, e.g. ['stdio', 'uds', 'http']\n  port?: number;                  // default: SOX_MCP_PORT env, then 3000\n  host?: string;                  // default: '127.0.0.1'\n  bindAddress?: string;           // alias for host\n  socketPath?: string;            // for 'uds' mode\n  authToken?: string;             // bearer token — REQUIRED for a non-loopback http bind\n}\ninterface TransportHandle {\n  mode: TransportMode;\n  port?: number;\n  socketPath?: string;\n  close(): Promise<void>;\n}\ninterface ToolDispatch {\n  serverInfo: { name: string; version: string };\n  listTools(): Array<{ name: string; description: string; inputSchema: object }>;\n  callTool(name: string, args: Record<string, unknown>): Promise<{ content: Array<{ type: 'text'; text: string }>; isError?: boolean }>;\n}\n\nfunction resolveTransportMode(opts?: TransportOptions): TransportMode;\nfunction resolveTransports(opts?: TransportOptions): TransportMode[];\nfunction resolveBindHost(opts: TransportOptions): string;\nfunction isLoopback(host: string): boolean;\nfunction validateBindAuth(opts: TransportOptions): void; // throws if non-loopback bind has no authToken\nfunction authMiddleware(req: IncomingMessage, res: ServerResponse, expectedToken: string): boolean;\n\nfunction connectStdio(server: Server): Promise<TransportHandle>;\nfunction connectStreamableHttp(server: Server, opts?: TransportOptions): Promise<TransportHandle>;\nfunction connectUds(dispatch: ToolDispatch, socketPath: string): Promise<TransportHandle>;\n/** @deprecated alias of connectStreamableHttp */\nconst connectSse: typeof connectStreamableHttp;\n```\n\n### Enforcement (advanced — C6 policy at the resource sink)\n\n```typescript\nfunction getPolicy(): Policy; // re-exported from @adhd/sox-host-runtime; reads SOX_PERM_* env\n\ninterface EnforcementDenial { denied: true; reason: string; }\nfunction checkFsAccess(absPath: string): EnforcementDenial | null;\nfunction checkNetworkAccess(hostOrUrl: string): EnforcementDenial | null;\nfunction checkSocketAccess(absPath: string): EnforcementDenial | null;\n```\n\n`ToolContext.allowsFsRead`/`allowsFsWrite`/`allowsNetwork`/`allowsSocket` (passed into every tool handler) are the intended call site — reach for `checkFsAccess`/`checkNetworkAccess`/`checkSocketAccess` directly only if you're building a resource sink outside the handler's own `ctx`.\n\n## Invariants / gotchas\n\n- **Enforcement is opt-in and env-driven.** `SOX_PERM_ENFORCE` must be present in the process environment for any `allows*()`/`check*Access()` call to actually deny anything; absent, every check returns \"allowed\" (legacy compatibility for a server run standalone, outside a supervised extension). The policy itself (`SOX_PERM_FS_*`, `SOX_PERM_SOCKET`, `SOX_PERM_NETWORK`) is injected by `@adhd/sox-host-runtime`'s `Policy.toEnv()` when a supervisor spawns your process — you don't construct it by hand.\n- **A non-loopback HTTP bind without an `authToken` refuses to start.** `validateBindAuth` (called internally by `serve()`) throws rather than silently exposing an unauthenticated port.\n- **`connectSse` is deprecated** — it's a plain alias for `connectStreamableHttp`; SSE-as-a-transport-name is kept only for backward compatibility with older `transports`/`mode` config.\n- **`serves = ['stdio', 'sse', 'http']` is a static, derived fact**, not a runtime capability probe — any extension importing from this package is guaranteed to support all three because the wrapper implements all three uniformly, regardless of which `transports` a given process actually binds at runtime.\n","readmeFilename":"README.md"}