get_discovery_script
Qualify prospects with a tailored discovery script. Choose a tone to match your relationship and ask the right questions before pitching.
Instructions
Get a discovery script to qualify prospects before pitching. Always ask questions first.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tone | Yes | professional=email/linkedin, warm=existing relationship, ultra_short=DM, cold_outbound=first contact, inbound_lead=they reached out |
Implementation Reference
- src/main.ts:666-676 (schema)Input schema for get_discovery_script: requires a 'tone' parameter with enum values (professional, warm, ultra_short, cold_outbound, inbound_lead).
inputSchema: { type: "object", properties: { tone: { type: "string", enum: ["professional", "warm", "ultra_short", "cold_outbound", "inbound_lead"], description: "professional=email/linkedin, warm=existing relationship, ultra_short=DM, cold_outbound=first contact, inbound_lead=they reached out" } }, required: ["tone"] } - src/main.ts:804-823 (handler)Handler for get_discovery_script tool call: extracts tone arg, looks up DISCOVERY_SCRIPTS, returns discovery script with pushback handlers.
case "get_discovery_script": { const tone = args?.tone as string; const script = DISCOVERY_SCRIPTS[tone as keyof typeof DISCOVERY_SCRIPTS]; return { content: [{ type: "text", text: JSON.stringify({ module: "Discovery System", rule: "NEVER pitch before qualifying. Ask questions first.", psychology: "When prospects invest in answering questions, they're more likely to buy.", script: script, pushback_handlers: { just_send_rate: "Happy to — I just need those details so I don't under or overquote.", need_ballpark: "Totally get it. The reason I ask: scope changes the pricing significantly.", send_portfolio: "Happy to share — quick context first: what's the main goal here?" } }, null, 2) }] }; } - src/main.ts:22-69 (helper)DISCOVERY_SCRIPTS constant: defines script templates for each tone variant (professional, warm, ultra_short, cold_outbound, inbound_lead).
const DISCOVERY_SCRIPTS = { professional: { tone: "professional", context: "Email, LinkedIn DM, formal settings", template: `Great timing — quick 2 questions before I put anything together: 1. What's the main outcome you're hoping to achieve with this? 2. What's driving the timeline — is there a launch date or deadline I should know about? Once I have that, I'll send 3 options that fit your situation.` }, warm: { tone: "warm", context: "Existing relationship, warm intro, second touchpoint", template: `Absolutely — 2 quick ones so I don't guess: 1. What's the main goal here? 2. Any deadline driving this? Then I'll send options that actually fit.` }, ultra_short: { tone: "dm", context: "Instagram DM, text, informal", template: `Quick 2 before I quote: What's the goal? Any deadline? Then options.` }, cold_outbound: { tone: "cold", context: "First cold email or LinkedIn message", template: `Hi [Name], Quick question: is [specific problem you solve] something that's on your radar right now, or is this a 'not right now' situation? Either answer is fine — just want to know if it's worth sending more info.` }, inbound_lead: { tone: "inbound", context: "Someone reached out to you first", template: `Thanks for reaching out! Before I dive in, 2 quick questions: 1. What prompted you to reach out now? (Helps me understand urgency) 2. Who else would be involved in this decision? Once I know that, I'll make sure I'm showing you the right thing.` } }; - src/main.ts:661-677 (registration)Tool registration: server.setRequestHandler(ListToolsRequestSchema) registering get_discovery_script as an available tool with description and input schema.
return { tools: [ { name: "get_discovery_script", description: "Get a discovery script to qualify prospects before pitching. Always ask questions first.", inputSchema: { type: "object", properties: { tone: { type: "string", enum: ["professional", "warm", "ultra_short", "cold_outbound", "inbound_lead"], description: "professional=email/linkedin, warm=existing relationship, ultra_short=DM, cold_outbound=first contact, inbound_lead=they reached out" } }, required: ["tone"] } },