get_competitive_positioning
Analyze competitor strengths and weaknesses to develop effective sales strategies, identify key differentiators, and prepare for competitive discussions in enterprise deals.
Instructions
Gives you the battlecard for a specific competitor — where you win, where they'll attack, which questions to plant in the buyer's mind, and which landmines to avoid.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| competitorName | Yes | Competitor company name | |
| competitorFeatures | No | Known competitor features or capabilities | |
| context | No | Additional context (e.g., "enterprise deal", "competing on price") | |
| productDescription | No | A brief description of what the user's product does and who it's for. Infer this from the conversation if the user has already described their product. If the user hasn't mentioned their product yet, ask them: "What does your product do, and who do you sell to?" before calling this tool. | |
| vertical | No | The industry the user sells into (e.g., "fintech", "healthcare", "defense"). Infer from conversation context — the user's product description, company name, or the companies they're asking about. If unclear, ask. | |
| targetRole | No | The buyer role being evaluated (e.g., "CFO", "CTO", "VP Sales"). Infer from context — often explicit in the user's question. If not mentioned, default to the most senior relevant role for their vertical. |
Implementation Reference
- src/catalog.js:143-160 (schema)Definition and input schema for the get_competitive_positioning tool in the static catalog.
{ name: 'get_competitive_positioning', description: 'Gives you the battlecard for a specific competitor — where you win, where they\'ll attack, which questions to plant in the buyer\'s mind, and which landmines to avoid.', annotations: READ_ONLY, inputSchema: { type: 'object', properties: { competitorName: { type: 'string', description: 'Competitor company name' }, competitorFeatures: { type: 'array', items: { type: 'string' }, description: 'Known competitor features or capabilities', }, context: { type: 'string', description: 'Additional context (e.g., "enterprise deal", "competing on price")', }, ...COLD_START_PARAMS, - src/server.js:47-58 (handler)The handler for all tool execution requests, which proxies calls to the Andru backend via the AndruClient.
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 || {}); - src/client.js:36-38 (helper)Client method that performs the actual network request to the backend to execute the specified tool.
async callTool(name, args) { return this.post('/api/mcp/tools/call', { tool: name, arguments: args }); }