get_thesis_match
Identify venture capital firms aligned with your company's profile by analyzing investment thesis compatibility, scoring fit, and providing tailored approach strategies.
Instructions
Finds the 5 VCs whose investment thesis best matches your company — scores each on fit, explains why they'd be interested, and tells you how to approach them. Saves weeks of investor research.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| productDescription | Yes | What the company does and who it serves. Infer from conversation context if the user has already described their product. | |
| stage | Yes | Current funding stage. Infer from context if mentioned. | |
| arrRange | No | Current ARR range (e.g., "$0-$500K", "$500K-$2M", "$2M-$10M"). Infer or ask. | |
| vertical | No | Industry vertical (e.g., "AI/ML", "FinTech", "HealthTech", "SaaS"). Infer from product description. |
Implementation Reference
- src/catalog.js:438-464 (schema)The tool definition (name, description, and input schema) for 'get_thesis_match' in the catalog.
name: 'get_thesis_match', description: 'Finds the 5 VCs whose investment thesis best matches your company — scores each on fit, explains why they\'d be interested, and tells you how to approach them. Saves weeks of investor research.', annotations: READ_ONLY, inputSchema: { type: 'object', properties: { productDescription: { type: 'string', description: 'What the company does and who it serves. Infer from conversation context if the user has already described their product.', }, stage: { type: 'string', enum: ['Pre-Seed', 'Seed', 'Series A', 'Series B', 'Series C+'], description: 'Current funding stage. Infer from context if mentioned.', }, arrRange: { type: 'string', description: 'Current ARR range (e.g., "$0-$500K", "$500K-$2M", "$2M-$10M"). Infer or ask.', }, vertical: { type: 'string', description: 'Industry vertical (e.g., "AI/ML", "FinTech", "HealthTech", "SaaS"). Infer from product description.', }, }, required: ['productDescription', 'stage'], }, }, - src/server.js:47-69 (handler)The request handler in the MCP server that receives the tool call and proxies it to the Andru backend API.
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:31-38 (helper)The client method responsible for sending the tool execution request to the Andru backend API.
* Execute an MCP tool. * @param {string} name - Tool name * @param {object} args - Tool arguments * @returns {Promise<{ content: Array<{ type: string, text: string }>, isError?: boolean }>} */ async callTool(name, args) { return this.post('/api/mcp/tools/call', { tool: name, arguments: args }); }