{"_id":"@dwizi/dzx","_rev":"6-d55ac13c3bdf29c955b82a6b129fb6dd","name":"@dwizi/dzx","dist-tags":{"latest":"0.1.8"},"versions":{"0.1.1":{"name":"@dwizi/dzx","version":"0.1.1","license":"MIT","_id":"@dwizi/dzx@0.1.1","maintainers":[{"name":"carlos_rivera","email":"me@carlosrivera.im"}],"homepage":"https://dwizi.com","bugs":{"url":"https://github.com/dwizi/dzx/issues"},"bin":{"dzx":"dist/cli/dzx.js","create-dzx":"dist/cli/create-dzx.js"},"dist":{"shasum":"aa5c6866aca441f970aa5244a63f7be48d129097","tarball":"https://registry.npmjs.org/@dwizi/dzx/-/dzx-0.1.1.tgz","fileCount":44,"integrity":"sha512-LR4TW//rZIRWCMfYK4w7YlSfUx3mVwN9+IWsezCf5zxLJEHeaqIluO+hxcgBRqDhJqYs/lO/KcB8XBdo63gWbw==","signatures":[{"sig":"MEYCIQDXtssTq8tRuHmNiq00hcHLrWXMgw57xAyJAOiNTjEQRAIhAMTGrCbVz+0YeCJc/k2AfN0Ad6aJm42RwV7UrhCynu43","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":381427},"type":"module","_from":"file:dwizi-dzx-0.1.1.tgz","engines":{"node":">=24"},"exports":{"./schema":"./dist/schema/index.js","./runtime":"./dist/runtime/index.js","./testing":"./dist/testing/index.js","./cli/init":"./dist/cli/init.js"},"scripts":{"dev":"node scripts/build.mjs --watch","lint":"pnpm biome:check && pnpm typecheck","test":"pnpm build && node --test tests/*.test.mjs","build":"node scripts/build.mjs","biome:fix":"biome check . --write","typecheck":"tsc -p tsconfig.json --noEmit","biome:lint":"biome lint .","biome:check":"biome check .","publish:dry":"pnpm publish --dry-run","biome:format":"biome format .","fix:lockfile":"pnpm install --lockfile-only --ignore-workspace"},"_npmUser":{"name":"carlos_rivera","email":"me@carlosrivera.im"},"_resolved":"/private/var/folders/1z/yvsj51ns10g037sw68y4hqmc0000gn/T/4c1da3f380e58efe80e89d8d505f03f0/dwizi-dzx-0.1.1.tgz","_integrity":"sha512-LR4TW//rZIRWCMfYK4w7YlSfUx3mVwN9+IWsezCf5zxLJEHeaqIluO+hxcgBRqDhJqYs/lO/KcB8XBdo63gWbw==","repository":{"url":"git+https://github.com/dwizi/dzx.git","type":"git"},"_npmVersion":"11.6.4","description":"Dzx is the open framework for building MCP servers on Dwizi. It standardizes repo structure, tool/resource/prompt discovery, and runtime configuration for Node and Deno.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ajv":"^8.17.1","zod":"^4.3.6","json5":"^2.2.3","preact":"^10.27.2","esbuild":"^0.27.2","chokidar":"^5.0.0","ts-pattern":"^5.9.0","@clack/prompts":"^1.0.0","zod-to-json-schema":"^3.25.1","preact-render-to-string":"^6.6.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.1.0","@biomejs/biome":"^2.3.13"},"_npmOperationalInternal":{"tmp":"tmp/dzx_0.1.1_1769700629844_0.8159630635824466","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@dwizi/dzx","version":"0.1.5","license":"MIT","_id":"@dwizi/dzx@0.1.5","maintainers":[{"name":"carlos_rivera","email":"me@carlosrivera.im"}],"homepage":"https://dwizi.com","bugs":{"url":"https://github.com/dwizi/dzx/issues"},"bin":{"dzx":"dist/cli/dzx.js","create-dzx":"dist/cli/create-dzx.js"},"dist":{"shasum":"723def254ce0ea9b0243cb07e76ef85e323ade7f","tarball":"https://registry.npmjs.org/@dwizi/dzx/-/dzx-0.1.5.tgz","fileCount":44,"integrity":"sha512-KTMPO4wAd9uTjWvNy4/xI0YXGbcnngXnugJ+lTYpDhk3O1g3jq8Dg3KQXnF1ZfETEw/3JnsZsRb6J1Pxq8plcA==","signatures":[{"sig":"MEYCIQCaaT9YrCNoU3qUoVV1q3y17RqUCESIdVpebICReLKYngIhAInbu1duUWA7XD3FsqT+9AFwjNyFzCcfcixZrotbpMIb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dwizi%2fdzx@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":381427},"type":"module","_from":"file:dwizi-dzx-0.1.5.tgz","engines":{"node":">=24"},"exports":{"./schema":"./dist/schema/index.js","./runtime":"./dist/runtime/index.js","./testing":"./dist/testing/index.js","./cli/init":"./dist/cli/init.js"},"scripts":{"dev":"node scripts/build.mjs --watch","lint":"pnpm biome:check && pnpm typecheck","test":"pnpm build && node --test tests/*.test.mjs","build":"node scripts/build.mjs","biome:fix":"biome check . --write","typecheck":"tsc -p tsconfig.json --noEmit","biome:lint":"biome lint .","biome:check":"biome check .","publish:dry":"pnpm publish --dry-run","biome:format":"biome format .","fix:lockfile":"pnpm install --lockfile-only --ignore-workspace"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f981c178-d496-42bc-9dbd-1abc213a1f66"}},"_resolved":"/tmp/1a50bdc0a8c845c2f61fbb8691c86249/dwizi-dzx-0.1.5.tgz","_integrity":"sha512-KTMPO4wAd9uTjWvNy4/xI0YXGbcnngXnugJ+lTYpDhk3O1g3jq8Dg3KQXnF1ZfETEw/3JnsZsRb6J1Pxq8plcA==","repository":{"url":"git+https://github.com/dwizi/dzx.git","type":"git"},"_npmVersion":"11.6.2","description":"Dzx is the open framework for building MCP servers on Dwizi. It standardizes repo structure, tool/resource/prompt discovery, and runtime configuration for Node and Deno.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ajv":"^8.17.1","zod":"^4.3.6","json5":"^2.2.3","preact":"^10.27.2","esbuild":"^0.27.2","chokidar":"^5.0.0","ts-pattern":"^5.9.0","@clack/prompts":"^1.0.0","zod-to-json-schema":"^3.25.1","preact-render-to-string":"^6.6.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.1.0","@biomejs/biome":"^2.3.13"},"_npmOperationalInternal":{"tmp":"tmp/dzx_0.1.5_1769702643777_0.2203594229152801","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@dwizi/dzx","version":"0.1.7","license":"MIT","_id":"@dwizi/dzx@0.1.7","maintainers":[{"name":"carlos_rivera","email":"me@carlosrivera.im"}],"homepage":"https://dzx.dwizi.com","bugs":{"url":"https://github.com/dwizi/dzx/issues"},"bin":{"dzx":"dist/cli/dzx.js"},"dist":{"shasum":"1e3c53de0f83122855d6822d7021d09f9a41e53c","tarball":"https://registry.npmjs.org/@dwizi/dzx/-/dzx-0.1.7.tgz","fileCount":43,"integrity":"sha512-x8DXE6urU/A3r98GfmuapxqRuQlEnbeYFS0noZvKgPDq//k3Lxwh1H0q6gxAwjGUu/kYi9XMAEuYnJyRigbN4Q==","signatures":[{"sig":"MEUCIGZxJgcOIBH6SFdhOyIpPRpAmNS3o+Tz47B57nE2YL6GAiEAlSXtKPiA4qPnY2jL2/jSofRsZkdackI0U9xRldnAkys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dwizi%2fdzx@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367759},"type":"module","_from":"file:dwizi-dzx-0.1.7.tgz","engines":{"node":">=24"},"exports":{"./schema":"./dist/schema/index.js","./runtime":"./dist/runtime/index.js","./testing":"./dist/testing/index.js","./cli/init":"./dist/cli/init.js"},"scripts":{"dev":"node scripts/build.mjs --watch","lint":"pnpm biome:check && pnpm typecheck","test":"pnpm build && node --test tests/*.test.mjs","build":"node scripts/build.mjs","biome:fix":"biome check . --write","typecheck":"tsc -p tsconfig.json --noEmit","biome:lint":"biome lint .","biome:check":"biome check .","publish:dry":"pnpm publish --dry-run","biome:format":"biome format .","fix:lockfile":"pnpm install --lockfile-only --ignore-workspace","version:update-templates":"node scripts/update-template-versions.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f981c178-d496-42bc-9dbd-1abc213a1f66"}},"_resolved":"/tmp/b2d4e9fb08cde861871a775f6101d2b8/dwizi-dzx-0.1.7.tgz","_integrity":"sha512-x8DXE6urU/A3r98GfmuapxqRuQlEnbeYFS0noZvKgPDq//k3Lxwh1H0q6gxAwjGUu/kYi9XMAEuYnJyRigbN4Q==","repository":{"url":"git+https://github.com/dwizi/dzx.git","type":"git"},"_npmVersion":"11.6.2","description":"Dzx is the open framework for building MCP servers on Dwizi. It standardizes repo structure, tool/resource/prompt discovery, and runtime configuration for Node and Deno.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ajv":"^8.17.1","zod":"^4.3.6","json5":"^2.2.3","preact":"^10.27.2","esbuild":"^0.27.2","chokidar":"^5.0.0","ts-pattern":"^5.9.0","@clack/prompts":"^1.0.0","zod-to-json-schema":"^3.25.1","preact-render-to-string":"^6.6.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.1.0","@biomejs/biome":"^2.3.13"},"_npmOperationalInternal":{"tmp":"tmp/dzx_0.1.7_1770083874843_0.3482732562360191","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@dwizi/dzx","homepage":"https://dzx.dwizi.com","repository":{"type":"git","url":"git+https://github.com/dwizi/dzx.git"},"bugs":{"url":"https://github.com/dwizi/dzx/issues"},"version":"0.1.8","type":"module","license":"MIT","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"bin":{"dzx":"dist/cli/dzx.js"},"exports":{"./cli/init":"./dist/cli/init.js","./runtime":"./dist/runtime/index.js","./testing":"./dist/testing/index.js","./schema":"./dist/schema/index.js"},"dependencies":{"@clack/prompts":"^1.0.0","ajv":"^8.17.1","chokidar":"^5.0.0","esbuild":"^0.27.2","json5":"^2.2.3","preact":"^10.27.2","preact-render-to-string":"^6.6.1","ts-pattern":"^5.9.0","zod":"^4.3.6","zod-to-json-schema":"^3.25.1"},"devDependencies":{"@biomejs/biome":"^2.3.13","@types/node":"^25.1.0","typescript":"^5.9.3"},"engines":{"node":">=24"},"scripts":{"build":"node scripts/build.mjs","dev":"node scripts/build.mjs --watch","test":"pnpm build && node --test tests/*.test.mjs","typecheck":"tsc -p tsconfig.json --noEmit","lint":"pnpm biome:check && pnpm typecheck","version:update-templates":"node scripts/update-template-versions.mjs","publish:dry":"pnpm publish --dry-run","fix:lockfile":"pnpm install --lockfile-only --ignore-workspace","biome:check":"biome check .","biome:fix":"biome check . --write","biome:lint":"biome lint .","biome:format":"biome format ."},"_id":"@dwizi/dzx@0.1.8","description":"Dzx is the open framework for building MCP servers on Dwizi. It standardizes repo structure, tool/resource/prompt discovery, and runtime configuration for Node and Deno.","_integrity":"sha512-UDyrhNwh+O8Ku74eE3kCZQdHAfpAIvVrNSlYnCa4jh/g4vLkhLGfqWMcZ0B8WnjlcDtcey69aDKcwCMTHl4FOw==","_resolved":"/tmp/f3ec7de89da6e9f47021a99f3e70bef7/dwizi-dzx-0.1.8.tgz","_from":"file:dwizi-dzx-0.1.8.tgz","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-UDyrhNwh+O8Ku74eE3kCZQdHAfpAIvVrNSlYnCa4jh/g4vLkhLGfqWMcZ0B8WnjlcDtcey69aDKcwCMTHl4FOw==","shasum":"dc591648781e0c279e1043d3de8a5192f8fda96c","tarball":"https://registry.npmjs.org/@dwizi/dzx/-/dzx-0.1.8.tgz","fileCount":46,"unpackedSize":378365,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dwizi%2fdzx@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIG8qHZ374PnLfGNv4+FA8j+pkcg7F7zaELmc0vTdQgIIAiEAgl6bph1tnaUCRIK8p+nJVkvDGCc+2eqaRM1PNX4L6o4="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f981c178-d496-42bc-9dbd-1abc213a1f66"}},"directories":{},"maintainers":[{"name":"carlos_rivera","email":"me@carlosrivera.im"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dzx_0.1.8_1770197475724_0.6027231424119444"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-29T15:30:29.729Z","modified":"2026-02-04T09:31:16.229Z","0.1.1":"2026-01-29T15:30:29.987Z","0.1.5":"2026-01-29T16:04:03.955Z","0.1.6":"2026-02-03T01:54:05.190Z","0.1.7":"2026-02-03T01:57:55.003Z","0.1.8":"2026-02-04T09:31:15.891Z"},"bugs":{"url":"https://github.com/dwizi/dzx/issues"},"license":"MIT","homepage":"https://dzx.dwizi.com","repository":{"type":"git","url":"git+https://github.com/dwizi/dzx.git"},"description":"Dzx is the open framework for building MCP servers on Dwizi. It standardizes repo structure, tool/resource/prompt discovery, and runtime configuration for Node and Deno.","maintainers":[{"name":"carlos_rivera","email":"me@carlosrivera.im"}],"readme":"# Dzx\n\nDzx is the open framework for building MCP servers on Dwizi. It standardizes repo structure, tool/resource/prompt discovery, and runtime configuration for Node and Deno.\n\n**Runtime requirements:** Node.js 24+ (ESM-first).\n\n## Getting Started\n\n**New to dzx?** Start with the [Getting Started Guide](docs/getting-started.md) for a comprehensive introduction covering:\n- Why dzx and when to use it\n- Quick start tutorial\n- Understanding Build vs Dev vs Runtime modes\n- Project structure and common questions\n\n**Quick scaffold:**\n```bash\nnpx @dwizi/create-dzx@latest\n```\n\n`create-dzx` is an alias of `dzx init` (scaffold mode) so the entire setup ships from the same codebase.\n\n## Repo Layout\n```\n.\n├─ mcp.json\n├─ tools/\n│  └─ *.ts\n├─ resources/\n│  └─ *.md\n├─ prompts/\n│  └─ *.md\n└─ src/\n   └─ server.ts\n```\n\n## Runtime & CLI Architecture\n- Shared core: manifest parsing, discovery, and bundling logic.\n- Node CLI: `@dwizi/dzx` (dev/inspect/validate/build).\n- Deno CLI: `@dwizi/dzx-deno` (same commands, Deno runtime).\n\n## Package Structure (dzx)\n```\npackages/dzx/\n  src/        core + runtime + CLI\n  templates/  create-dzx templates\n  scripts/    build + smoke test\n  mcp.schema.json\n  tool-manifest.schema.json\n```\n\n## Dev logs & env loading\n`dzx dev` prints request + tool logs by default. Use `--quiet` to minimize output or `--verbose` to include RPC + structured output logs.\n\nEnvironment files are loaded in this order:\n1. `.env`\n2. `.env.local`\n3. `.env.<mode>`\n4. `.env.<mode>.local`\n\n`mode` is `development` by default (or `NODE_ENV` / `DZX_ENV`). Existing `process.env` values override file values.\n\nDev dashboard:\n- Visit `http://localhost:3333/` to see a simple local dashboard with endpoints and tool/resource/prompt lists.\n\nTimeouts:\n- `DZX_TOOL_TIMEOUT_MS` sets the tool execution timeout (default: 30000ms).\n\n## mcp.json\nThe manifest defines runtime, entrypoint, and permissions. See `mcp.schema.json` for the full schema.\n\nMinimal example:\n```json\n{\n  \"name\": \"weather-tools\",\n  \"version\": \"0.1.0\",\n  \"runtime\": \"node\",\n  \"entry\": \"src/server.ts\",\n  \"toolsDir\": \"tools\",\n  \"resourcesDir\": \"resources\",\n  \"promptsDir\": \"prompts\",\n  \"permissions\": {\n    \"network\": false,\n    \"filesystem\": { \"read\": [\"./resources\", \"./prompts\"], \"write\": [] }\n  }\n}\n```\n\n### Validation rules (summary)\n- `name`, `version`, `runtime`, and `entry` are required.\n- `runtime` must be `node` or `deno`.\n- `entry` must be a relative path within the repo.\n- `toolsDir`, `resourcesDir`, `promptsDir` must be relative paths.\n- `permissions.filesystem.read/write` are path allowlists; default is no write access.\n- `build.command` is optional; if present, `build.output` must be provided.\n\n## Tool Discovery\nTools are discovered from `tools/` as **default exports**. Tool names come from the file path (for example, `tools/smart-hello.ts` → `smart-hello`).\n\n### Build Output\n`dzx build` produces:\n- `dist/tools/*` bundled tool files (per-tool or bundled)\n- `dist/resources/*` copied resources\n- `dist/prompts/*` copied prompts\n- `dist/tool-manifest.json` manifest used by the dwizi import flow\n\n### Dev Watch Mode\nIf your system hits file descriptor limits, enable polling:\n```\ndzx dev --poll\n```\n\n### Socket-less Dev Mode (EPERM)\nSome sandboxed environments block TCP listeners and raise `EPERM`. In dev, dzx\nfalls back to a Unix socket (default: `/tmp/dzx-<name>.sock`). If sockets are\nalso blocked, it keeps the process alive without listening and prints a warning.\n\nYou can control the socket path with:\n```\nDZX_SOCKET=/tmp/dzx.sock dzx dev\n```\n\n### Protocol Version\nIf your MCP client expects a specific protocol version, set it in `mcp.json`:\n```\n{\n  \"protocolVersion\": \"2025-06-18\"\n}\n```\n\n### Client Compatibility\ndzx accepts both slash and dotted method names and supports SSE streaming.\n\nSupported methods:\n- `initialize` (returns tools/resources/prompts and `protocolVersion`)\n- `notifications/initialized`\n- `tools/list`, `tools/call` (also `tools.list`, `tools.call`)\n- `resources/list`, `resources/read`, `resources/subscribe`, `resources/unsubscribe`\n- `prompts/list`, `prompts/get`\n- `logging/setLevel`, `notifications/cancelled`, `notifications/canceled`\n\nStreaming:\n- Add `?stream=1` or `Accept: text/event-stream` to get SSE (`event: message`).\n\n### Recommended (Zod-first)\nInstall Zod in your MCP repo:\n```\npnpm add zod\n```\n\n```ts\nimport { z } from \"zod\";\nimport { defineSchema } from \"@dwizi/dzx/schema\";\n\n/**\n * Adds two numbers.\n */\nexport default async function add(input: { a: number; b: number }) {\n  return { sum: input.a + input.b };\n}\n\nexport const schema = {\n  input: defineSchema(z.object({\n    a: z.number(),\n    b: z.number()\n  })),\n  output: defineSchema(z.object({\n    sum: z.number()\n  }))\n};\n```\n\n### Standard (JSON Schema)\n```ts\n/**\n * Adds two numbers.\n */\nexport default async function add(input: { a: number; b: number }) {\n  return { sum: input.a + input.b };\n}\n\nexport const schema = {\n  input: {\n    type: \"object\",\n    properties: { a: { type: \"number\" }, b: { type: \"number\" } },\n    required: [\"a\", \"b\"]\n  },\n  output: {\n    type: \"object\",\n    properties: { sum: { type: \"number\" } }\n  }\n};\n```\n\n### Automatic Schema Inference (JSDoc)\nIf you don't export a schema, `dzx` infers it from JSDoc `@param` tags.\n\n```ts\n/**\n * Multiply two numbers.\n * @param {object} input\n * @param {number} input.a\n * @param {number} [input.b] Optional multiplier\n */\nexport default async function multiply(input) {\n  // ...\n}\n```\nThis generates a JSON Schema with `a` (required) and `b` (optional).\n\n### Schema Requirements\nSchemas are always produced for the tool manifest and runtime validation.\n- If you export `schema`, it will be used directly.\n- Otherwise, dzx infers schemas from JSDoc (`@param`, `@returns`).\n- If JSDoc is missing, dzx infers from the function signature (typed params or destructured params).\n- If inference finds nothing, dzx falls back to permissive schemas:\n  - Input: `{ type: \"object\", properties: {}, additionalProperties: true }`\n  - Output: `{ type: \"object\", properties: {}, additionalProperties: true }`\n\n### Custom Validators (Joi/Yup/etc.)\n`dzx` is library-agnostic. If your schema object implements `.parse()` or `.validate()`, runtime validation will use it. If it also implements `.toJSONSchema()`, discovery and tooling will expose it to LLMs.\n\n## Context Middleware\nYou can inject a request-scoped context (e.g., authentication, database connections) into all tools.\n\n1. Create `src/context.ts` (or `.js`):\n   ```ts\n   import type { IncomingMessage } from \"http\";\n\n   export default function createContext(req: IncomingMessage) {\n     return {\n       user: req.headers[\"x-user-id\"],\n       db: process.env.DB_URL\n     };\n   }\n   ```\n\n2. Access context in your tool (2nd argument):\n   ```ts\n   export default async function myTool(args, context) {\n     console.log(context.user); // Access injected context\n   }\n   ```\n\n## Testing SDK\n`dzx` provides a Testing SDK to verify your tools and context in-process (without spinning up a full HTTP server).\n\n```ts\nimport { createTestServer } from \"@dwizi/dzx/testing\";\nimport assert from \"node:assert\";\n\n// 1. Initialize server\nconst client = await createTestServer({ cwd: process.cwd() });\n\n// 2. Call tool with arguments and optional mock context\nconst result = await client.callTool(\"myTool\", { a: 1 }, { user: \"TestUser\" });\n\nassert.equal(result.sum, 2);\n```\n\n## Resources\nResources are Markdown files in `resources/`. File name is the default resource name.\n\nOptional frontmatter:\n```\n---\nname: getting-started\ndescription: Quick start guide\n---\n# Getting Started\n...\n```\n\n## Prompts\nPrompts are Markdown files in `prompts/` with optional frontmatter.\n\n```\n---\nname: summarize\ndescription: Summarize text in 3 bullets\ninputs:\n  - name: text\n    type: string\n---\nSummarize the following:\n{{text}}\n```\n\n## Planned CLI\n- `dzx dev` local MCP server\n- `dzx inspect` list tools/resources/prompts\n- `dzx validate` validate `mcp.json`\n- `dzx build` produce deployable bundle\n\n## create-dzx\nScaffolds a new MCP repo with a template.\n\nExample:\n```bash\nnpx @dwizi/create-dzx@latest --template basic\n```\n\nBy default it installs dependencies. Use `--no-install` to skip.\n\nFor manual setup in an existing directory:\n```bash\ndzx init --template basic --force\n```\n\n## Publish (Checklist)\nBefore publishing to npm as `@dwizi/dzx`:\n- `pnpm --filter @dwizi/dzx test`\n- `pnpm --filter @dwizi/dzx build`\n- `pnpm -C packages/dzx publish --dry-run`\n- `pnpm -C packages/dzx publish --access public`\n\n## Additional Docs\n- `docs/getting-started.md` — **Start here**: comprehensive getting started guide\n- `docs/README.md` — documentation index\n- `CLI.md` — command and flag matrix\n- `ARCHITECTURE.md` — design + flow overview\n- `CORE.md` — shared core layout\n- `tool-manifest.schema.json` — build output schema\n- `examples/tool-manifest.json` — example manifest\n\n## License\nMIT (see root `LICENSE`).\n","readmeFilename":"README.md"}