npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

purprose

v0.1.2

Published

Proposal management MCP server and CLI — generate, track, and analyze proposals

Downloads

80

Readme

purprose

Proposal management MCP server and CLI — generate, track, and analyze proposals.

Create → Send → Track → Report — the full proposal lifecycle, designed for AI agent integration.

Installation

npm install @cubicrew/purprose

Or from source:

npm install
npm run build

Optional: PDF Generation

npm install puppeteer

Puppeteer enables direct PDF output. Without it, purprose generates HTML (which you can print to PDF from a browser).

Usage

MCP Server

Add to your MCP client configuration:

{
  "mcpServers": {
    "purprose": {
      "command": "node",
      "args": ["/path/to/purprose/dist/index.js"]
    }
  }
}

CLI

# Generate from JSON
purprose generate proposal-data.json -o client-proposal.html

# Generate PDF (requires puppeteer)
purprose generate proposal-data.json -f pdf -o proposal.pdf

# Generate and save to database
purprose generate proposal-data.json --save

# Create draft
purprose draft --client "Acme Corp" --description "Website redesign" --budget 5000 --by "Your Name"

# Validate structure
purprose validate proposal-data.json

# List saved proposals
purprose list --status draft --client "Acme"

# Get proposal details
purprose get <id>

# Update status
purprose status <id> sent --notes "Emailed to client"

# Delete proposal
purprose delete <id>

Tools

Generation

| Tool | Description | |------|-------------| | generate_proposal | Generate HTML/PDF from proposal data. Set save: true to persist. | | draft_proposal | Create a proposal draft from minimal input (client, description, budget). | | validate_proposal | Validate proposal data structure before generation. | | add_section | Add a new section to an existing proposal. | | update_investment | Update the investment/pricing section. | | list_templates | List available templates (default, minimal, professional). |

Lifecycle

| Tool | Description | |------|-------------| | save_proposal | Save a proposal to the database with status tracking. | | get_proposal | Retrieve a saved proposal by UUID. | | list_proposals | List proposals with filters (status, client, date range, pagination). | | update_proposal_status | Change status: draftreviewedsentapprovedwon/lost. | | delete_proposal | Remove a proposal and its history. |

Analytics

| Tool | Description | |------|-------------| | pipeline_report | Pipeline summary: counts/values by status, weighted pipeline, win/loss rates, top clients. | | proposal_history | Full status change audit trail for a proposal. |

CRM Alignment

| Tool | Description | |------|-------------| | check_crm_alignment | Compare proposal against CRM data — finds gaps, value mismatches, stage misalignment. |

Templates

  • default — Clean Inter font, dark text, balanced spacing
  • minimal — Lighter colors, smaller margins, simplified header
  • professional — Serif header font (Playfair Display), accent bar, section dividers

Proposal Structure

{
  title: string;
  clientName: string;
  preparedBy: string;
  date: string;
  sections: [
    { title: string, content: string, type: 'text' | 'list' | 'timeline' | 'table' }
  ];
  investment: [
    { item: string, amount: number, recurring?: boolean }
  ];
  paymentTerms: {
    structure: 'upfront' | '50-50' | 'milestone' | 'custom'
  };
  style?: {
    primaryColor: string;
    fontFamily: string;
    logoUrl?: string;
  }
}

Section Types

  • text — Paragraphs (split by double newlines)
  • list — Bullet points (split by single newlines)
  • timeline — Phases with tasks (phases separated by blank lines, first line is phase name, subsequent lines are tasks)
  • table — Data table (comma-separated values, first row is headers)

Status Lifecycle

draft → reviewed → sent → approved → won
                                   → lost

Each status change is recorded with timestamp and optional notes, creating a full audit trail.

Configuration

| Variable | Description | Default | |----------|-------------|---------| | PURPROSE_DB_PATH | SQLite database file path | ~/.purprose/proposals.db |

Pipeline Analytics

The pipeline_report tool returns:

  • Summary: total proposals, count + value by status
  • Pipeline: total active value, weighted value (draft=10%, reviewed=25%, sent=50%, approved=75%)
  • Win/loss: won count, lost count, win rate %, average won/lost value
  • Recent activity: last 10 status changes
  • Top clients: grouped by client with count + total value

CRM Alignment

The check_crm_alignment tool compares proposals against CRM context data:

  • Client name matching
  • Deal value alignment (delta + percentage)
  • Stage alignment (maps CRM stages to proposal statuses)
  • Date alignment (proposal validity vs close date)
  • Gap detection (missing fields, mismatches)
  • Actionable suggestions

No API calls — pure data comparison. The LLM does the reasoning.

Flavor

Uses proposals flavor:

  • No em-dashes (use colons)
  • "Investment" not "Cost"
  • Minimum 13px font
  • #444 secondary color
  • 50/50 payment structure default
  • High readability for 60+ clients

License

MIT — CubiCrew 2026