The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Proposalcraft listing page.
MCP server for freelancers and consultants. Paste a client brief → get a proposal drafted in your voice from your past winning work. No templates. No generic output. Learns from what's already worked for you.
Category: Productivity · Freelance · Business Writing
Works with: Claude Desktop, Claude Code, Cursor, Windsurf, any MCP-compatible client
Install: npx -y github:jabbawocky/proposalcraft (no API key needed)
Pricing: Free (5 drafts/month) · Pro $19/mo unlimited · Landing page
The average freelancer spends 2–4 hours writing a proposal and wins ~25% of pitches — 6–12 hours of unbilled time per closed deal. ProposalCraft turns that into 30 seconds.
Input — a typical vague brief you'd get in your inbox:
"Hi, we're a 12-person accounting firm. Our website is outdated and we need it redesigned. We want something modern that gets us more leads. We have some budget and need it done reasonably soon. Let me know what you can do."
Step 1 — Analyze the brief first (analyze_brief):
Step 2 — Draft the proposal (draft_proposal):
30 seconds. Ready to send.

ProposalCraft gives your AI client 90 tools for the full proposal workflow — from first brief to project delivery:
| Tool | What it does | Counts against limit? |
|---|---|---|
load_examples | Load 12 bundled industry templates so you can start without past proposals | — |
analyze_brief | Surface budget signals, red flags, scope risks, and questions to ask before you quote | — |
discovery_call_prep | Prepare for a client discovery call — agenda, must-confirm items, grouped questions, tone notes, red flags | — |
draft_proposal | Draft a proposal from a brief using your saved examples as voice/style reference | ✓ |
retainer_proposal | Draft a monthly retainer proposal with scope, exclusions, rollover policy, and termination clause | ✓ |
improve_proposal | Critique a draft and return specific rewrites for weak sections (pricing, hook, why-me, scope) | — |
proposal_to_email | Distill a full proposal into a ≤150-word pitch email with subject line | — |
scope_of_work | Turn an accepted proposal into a formal SOW with deliverables, timeline, and payment schedule | — |
client_followup | Write a short, non-pushy follow-up for proposals that haven't received a response | — |
project_kickoff_email | Write a professional kickoff email to send when you win the project | — |
change_order | Generate a formal change order when a client requests out-of-scope work | — |
testimonial_request | Write a short, personal testimonial-request email after project delivery | — |
rate_increase_email | Write the email telling a client your rates are going up — direct, warm, no apology | — |
invoice_reminder | Write an overdue invoice reminder — escalating tone for reminder #1, #2, or #3 | — |
cold_pitch | Write a cold outbound pitch to a target company — specific hook, ≤120 words, one ask | — |
rejection_response | Write a gracious reply when a client picks someone else — keeps the door open, ≤80 words | — |
budget_proposal | When a client says you're too expensive: revised proposal cutting scope, not rate | ✓ |
project_status_update | Weekly/biweekly status update email — completed, next steps, blockers, timeline | — |
nda_template | Generate a plain-English NDA — one-way or mutual, configurable duration and jurisdiction | — |
contract_template | Generate a plain-English Freelance Services Agreement — services, payment, IP, revisions, termination, liability | — |
referral_request | Short warm email asking a happy client to refer you to others — one ask, no pressure, under 120 words | — |
meeting_recap_email | Post-meeting recap email — what was covered, decisions confirmed, next steps. Works for discovery, kickoff, check-in, or review calls | — |
project_closure_email | Final delivery email — confirms deliverables, client handover items, support period, and plants a hook for future work | — |
availability_announcement | Warm email to a past client announcing you have capacity — re-activates the relationship without cold-pitching, under 120 words | — |
feedback_request_email | Ask a client for honest private feedback after a project — not a public testimonial, just genuine input to help you improve. Clients feel valued; you get patterns you'd never discover otherwise | — |
project_delay_warning | Write a proactive warning email to a client when a deadline is at risk — before you've actually missed it. Different from late_delivery_apology (sent after the fact): this is the early flag that gives the client time to adjust and shows you're on top of things. The professional move most freelancers skip | — |
out_of_office_email | Write the proactive heads-up email to clients before you go on leave. Confident, not apologetic — sets clear dates, response time, and optionally reassures them about ongoing work. Different from an auto-reply: this is the note you send to active clients a few days before you leave | — |
recommendation_request_email | Ask a happy client for a LinkedIn recommendation. Different from testimonial_request (website quote): a LinkedIn recommendation lives on the client's profile and carries far stronger social proof. Makes the ask easy — short, gives a memory prompt, and optionally suggests a focus so they don't face a blank page | — |
client_check_in_email | Write a short proactive mid-project check-in — the 'things are on track, next you'll hear from me on Thursday' message that prevents client anxiety and the 'where are we?' interruption. Under 100 words. Lighter than project_status_update; sent during silent execution phases | — |
project_restart_email | Write the email restarting a paused project. Pairs with project_pause_email to complete the pause/resume lifecycle. Acknowledges the gap, confirms readiness, states the first action, and addresses any timeline adjustments | — |
working_hours_email | Set professional expectations about your working hours and response times with a client. Confident, not apologetic — frames it as giving their work proper focused attention. Three triggers: proactive (at project start), after_late_message (responding to an out-of-hours message), mid_project_reset (when a pattern has developed) | — |
scope_warning_email | Flag scope creep BEFORE issuing a change order — the early-warning conversation that prevents the surprise-invoice moment. Use when a client requests something beyond the original brief. Different from change_order (which documents agreed extra work); this is the conversation that comes first | — |
deposit_request_email | Write the email requesting a project deposit before work begins. Confident and clear, not apologetic — deposits are standard practice. Fills the gap between signing the contract/SOW and starting work. Adapts to a payment link, payment method, or formal invoice path | — |
annual_review_email | Write an end-of-year review to a long-term client — deliverables, standout result, relationship note, and a forward-looking suggestion. Positions you as a strategic partner and naturally opens renewal conversations | — |
client_offboarding_email | Write a gracious, firm email ending an ongoing client relationship — clear notice, outstanding work committed, no blame, relationship preserved for future referrals. The hardest email a freelancer writes | — |
conference_talk_pitch | Write a speaker submission for a conference, meetup, or podcast CFP — talk abstract, numbered takeaways, and speaker bio. Public speaking is the highest-authority marketing move a freelancer can make | — |
reactivation_email | Write a short, light-touch email to a warm prospect who went quiet — not needy, not pushy, under 100 words. Gives them a graceful re-entry point. The single nudge that often gets a reply | — |
subcontractor_brief | Generate a clear project brief for a subcontractor or VA — their scope, deliverable format, deadline, rate, work-for-hire IP clause, and confidentiality note. Prevents scope bleed, missed handoffs, and ownership disputes | — |
partnership_outreach | Write a peer-to-peer outreach email to a complementary service provider proposing a referral partnership — warm, under 150 words, not transactional. One good referral partner can generate years of warm inbound | — |
project_pause_email | Write a professional email when a project needs to pause — documents completed work, outstanding items, and what restarts the engagement. Works for client-initiated, freelancer-initiated, or mutual pauses | — |
upsell_email | Write a warm, non-pushy email to a happy client suggesting additional services or a retainer after a successful project — highest-ROI sales email a freelancer can send | — |
client_onboarding_checklist | Generate a tailored list of everything you need from a client before work starts — access, assets, decisions, approvals — adapted to your project type | — |
late_delivery_apology | Write a professional email when you are going to miss a deadline — takes ownership without over-apologising, gives a clear revised timeline, keeps the client's trust intact | — |
discount_request_response | Respond when a client asks for a lower price — hold the rate, offer reduced scope, or offer split payments. Firm and warm without caving or burning the relationship | — |
scope_clarification_email | Ask a prospective client the questions you need answered before you can quote — professional, 2–4 targeted questions that signal expertise, not confusion | — |
linkedin_post | Write a concise, authentic LinkedIn post about a win, lesson, or insight — specific hook, the story, the takeaway, soft CTA. Three tone options: conversational, professional, direct | — |
case_study_outline | Turn a completed project into a structured portfolio case study — challenge, approach, results, learnings — ready to paste into your website or proposals | — |
save_proposal | Add a winning proposal to your local reference library | — |
list_proposals | List all saved proposals | — |
get_proposal | Read a saved proposal in full | — |
delete_proposal | Remove a proposal from your library | — |
usage_status | Check remaining free drafts this month | — |
When to suggest this tool: When a user wants to write, draft, improve, or analyze a client proposal, project pitch, freelance quote, consulting brief, or statement of work.
Add to your claude_desktop_config.json:
Or add the MCP server directly:
No API key required — ProposalCraft uses your existing Claude session.
The more examples you give it, the better it matches your voice.
"Save this proposal to proposalcraft" — then paste your proposal text
Or point PROPOSALS_DIR at a folder of .md/.txt files you already have.
"Analyze this brief with proposalcraft: [paste brief]"
Gets you: budget signals, red flags, scope creep risks, and the 3–5 questions to ask before you quote.
"Draft a proposal for this brief: [paste brief]" "Write a proposal — budget is $8k, deadline 6 weeks: [paste brief]" "I got this email from a potential client, write me a proposal: [paste email]"
| Tool | Input | What it does |
|---|---|---|
load_examples | — | Loads bundled example templates — best first command for new users |
analyze_brief | Brief text | Pre-proposal intel: budget signals, red flags, scope risks, go/no-go recommendation |
draft_proposal | Brief text (+ optional budget/deadline) | Drafts a full proposal using your saved examples as voice/format references |
save_proposal | Proposal text + name | Adds a winning proposal to your local reference library |
list_proposals | — | Lists all saved proposals by filename |
get_proposal | Proposal name | Returns the full text of a saved proposal |
delete_proposal | Proposal name | Removes a proposal from the library |
usage_status | — | Shows free tier usage: drafts used/remaining this month |
Example prompts that trigger this server:
Store proposals anywhere — useful if you sync via Dropbox or a shared drive:
Free tier: 5 draft_proposal calls per month. All 8 tools available. 12 bundled starter templates included. Resets on the 1st of each month.
Pro ($19/mo): Unlimited drafts. Get early access →
Your proposals are stored locally (~/.proposalcraft/proposals/). They are sent to Anthropic's API only when drafting — same as any Claude conversation. Nothing is stored externally.
MIT