{"_id":"@cubicrew/purprose","_rev":"2-f39e16d389c802c0a17a1fe4de335c48","name":"@cubicrew/purprose","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@cubicrew/purprose","version":"0.1.0","keywords":["mcp","proposals","html","templates"],"author":{"name":"CubiCrew"},"license":"MIT","_id":"@cubicrew/purprose@0.1.0","maintainers":[{"name":"quarlwithcode","email":"vince@vincequarles.com"}],"bin":{"purprose":"dist/cli.js"},"dist":{"shasum":"547d0e882dbe8f5a7c5870db34f0afbe9320e4ed","tarball":"https://registry.npmjs.org/@cubicrew/purprose/-/purprose-0.1.0.tgz","fileCount":15,"integrity":"sha512-qJ+u1j4XndsnpR5wd5TTkISHLS2cocI6ssTYttr4110MeJH+HCRHut2I8lbSDWS2lYfafvQXQyl3tLWUv6lhrw==","signatures":[{"sig":"MEUCIFwITYJZNYA96YO8BqdtthA1EBsIOVVR631zFEXFWPBXAiEArxPSeUkvxAEOFwb4qfyY7vAKlTNNPZnE8K2AUfv2Z+s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72336},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cf778b5c6f76ac9ba2319b69a8582b51609161ed","scripts":{"dev":"npx tsc --watch","test":"vitest run","build":"npx tsc","start":"node dist/index.js","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"quarlwithcode","email":"vince@vincequarles.com"},"_npmVersion":"11.6.2","description":"Proposal generation MCP server and CLI — HTML output with print-ready styling","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.22.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.3.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/purprose_0.1.0_1772989938124_0.07452527205688186","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cubicrew/purprose","version":"0.1.1","description":"Proposal generation MCP server and CLI — HTML output with print-ready styling","type":"module","main":"dist/index.js","types":"dist/index.d.ts","bin":{"purprose":"dist/cli.js"},"scripts":{"build":"npx tsc","dev":"npx tsc --watch","start":"node dist/index.js","test":"vitest run","prepublishOnly":"npm run build && npm test"},"keywords":["mcp","proposals","html","templates"],"author":{"name":"CubiCrew"},"license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","zod":"^3.22.0"},"devDependencies":{"@types/node":"^20.0.0","typescript":"^5.3.0","vitest":"^1.0.0"},"engines":{"node":">=18.0.0"},"gitHead":"cf778b5c6f76ac9ba2319b69a8582b51609161ed","_id":"@cubicrew/purprose@0.1.1","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-iq3LQdZwy0O/pi1Ur0y3SpVpoGMerfcma4WnWfHVQ2eD39yZhKCxViwCILEs6q7GmISurfwK601Dc3itTe0/7A==","shasum":"813b8f55ef3c7db1f83a1c04d4bbe2312965db18","tarball":"https://registry.npmjs.org/@cubicrew/purprose/-/purprose-0.1.1.tgz","fileCount":15,"unpackedSize":72354,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICfKOMbeDZY4M+997OpDlw/WN/GbsqmWLX+rOtHLdrcyAiEAtCa8lrn5G6ZChcKhpgThTLq71kv1RrMOtGXfY0q06O4="}]},"_npmUser":{"name":"quarlwithcode","email":"vince@vincequarles.com"},"directories":{},"maintainers":[{"name":"quarlwithcode","email":"vince@vincequarles.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/purprose_0.1.1_1772991022974_0.5238870673908644"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-08T17:12:18.053Z","modified":"2026-03-08T17:30:23.258Z","0.1.0":"2026-03-08T17:12:18.262Z","0.1.1":"2026-03-08T17:30:23.144Z"},"author":{"name":"CubiCrew"},"license":"MIT","keywords":["mcp","proposals","html","templates"],"description":"Proposal generation MCP server and CLI — HTML output with print-ready styling","maintainers":[{"name":"quarlwithcode","email":"vince@vincequarles.com"}],"readme":"# purprose\n\nProposal generation MCP server and CLI — HTML output with print-ready styling.\n\n## Installation\n\n```bash\nnpm install @cubicrew/purprose\n```\n\nOr from source:\n\n```bash\nnpm install\nnpm run build\n```\n\n## Usage\n\nAdd to your MCP client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"purprose\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/purprose/dist/index.js\"]\n    }\n  }\n}\n```\n\n## Tools\n\n### generate_proposal\nGenerate a complete proposal as HTML. Provide full proposal data and get formatted output.\n\n### draft_proposal\nCreate a proposal draft from minimal input (client name, description, budget). Returns a structure you can refine.\n\n### validate_proposal\nValidate proposal data structure before generation.\n\n### add_section\nAdd a new section to an existing proposal.\n\n### update_investment\nUpdate the investment/pricing section.\n\n### list_templates\nList available proposal templates (`default`, `minimal`, `professional`).\n\n## Templates\n\n- **default** — Clean Inter font, dark text, balanced spacing\n- **minimal** — Lighter colors, smaller margins, simplified header\n- **professional** — Serif header font (Playfair Display), accent bar, section dividers\n\n## Proposal Structure\n\n```typescript\n{\n  title: string;\n  clientName: string;\n  preparedBy: string;\n  date: string;\n  sections: [\n    { title: string, content: string, type: 'text' | 'list' | 'timeline' | 'table' }\n  ];\n  investment: [\n    { item: string, amount: number, recurring?: boolean }\n  ];\n  paymentTerms: {\n    structure: 'upfront' | '50-50' | 'milestone' | 'custom'\n  };\n  style?: {\n    primaryColor: string;\n    fontFamily: string;\n    logoUrl?: string;\n  }\n}\n```\n\n## Section Types\n\n- `text` — Paragraphs (split by double newlines)\n- `list` — Bullet points (split by single newlines)\n- `timeline` — Phases with tasks (phases separated by blank lines, first line is phase name, subsequent lines are tasks)\n- `table` — Data table (comma-separated values, first row is headers)\n\n## Output\n\npurprose generates print-ready HTML. To create a PDF:\n\n1. Generate the HTML proposal\n2. Open in a browser\n3. Print > Save as PDF\n\nThe HTML includes print-optimized CSS that prevents mid-section page breaks.\n\n## Flavor\n\nUses `proposals` flavor:\n- No em-dashes (use colons)\n- \"Investment\" not \"Cost\"\n- Minimum 13px font\n- #444 secondary color\n- 50/50 payment structure default\n- High readability for 60+ clients\n\n## License\n\nMIT — CubiCrew 2026\n","readmeFilename":"README.md"}