get_pre_brief
Generate pre-call briefs with talk tracks, discovery questions, and objection handling based on calendar events and buyer intelligence for enterprise sales meetings.
Instructions
Writes your pre-call prep so you don't walk in cold — talk track, discovery questions tuned to this buyer, anticipated objections, and the one thing you need to get done in this meeting. Just say who you're meeting with — Andru checks your calendar automatically.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| companyName | No | Company you're meeting with. Andru finds the matching calendar event and pulls attendee context automatically. | |
| contactName | No | Name of the person you're meeting (optional — helps match the right event and personalize the brief). | |
| eventId | No | Calendar event ID (from Andru calendar integration). If provided, skips calendar search. | |
| dealId | No | Associated deal ID for additional deal intelligence | |
| briefType | No | Type of meeting brief to generate (default: general) |
Implementation Reference
- src/catalog.js:316-330 (schema)The tool 'get_pre_brief' is defined in the catalog.js, which acts as the static definition for MCP tools. It specifies the tool name, description, and input schema.
{ name: 'get_pre_brief', description: 'Writes your pre-call prep so you don\'t walk in cold — talk track, discovery questions tuned to this buyer, anticipated objections, and the one thing you need to get done in this meeting. Just say who you\'re meeting with — Andru checks your calendar automatically.', annotations: READ_ONLY, inputSchema: { type: 'object', properties: { companyName: { type: 'string', description: 'Company you\'re meeting with. Andru finds the matching calendar event and pulls attendee context automatically.', }, contactName: { type: 'string', description: 'Name of the person you\'re meeting (optional — helps match the right event and personalize the brief).', }, - src/server.js:47-68 (handler)The actual execution of 'get_pre_brief' happens by proxying the request to an external backend service through the `client.callTool` method. The server doesn't contain the implementation logic itself, but handles the routing of the tool execution call.
server.setRequestHandler( CallToolRequestSchema, async (request) => { if (!client) { return { content: [{ type: 'text', text: JSON.stringify({ error: 'ANDRU_API_KEY not configured. Tool execution requires an API key.' }) }], isError: true, }; } const { name, arguments: args } = request.params; try { return await client.callTool(name, args || {}); } catch (error) { return { content: [{ type: 'text', text: JSON.stringify({ error: error.message }), }], isError: true, }; } } - src/client.js:36-38 (helper)The `AndruClient` class in `client.js` is responsible for sending the tool execution request to the remote Andru API backend, where the business logic for 'get_pre_brief' is implemented.
async callTool(name, args) { return this.post('/api/mcp/tools/call', { tool: name, arguments: args }); }