Skip to main content
Glama

classify_opportunity

Analyze sales deals to determine fit, identify risks, and recommend actions using multiple scoring engines for comprehensive assessment.

Instructions

Run a full read on a deal in one call — fit score, persona match, risk flags, disqualification check, and a verdict: pursue, pause, or walk away. Combines multiple scoring engines for a comprehensive assessment.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
companyNameYesCompany name
contactTitleNoPrimary contact job title
industryNoIndustry
employeeCountNoNumber of employees
revenueNoRevenue range
geographyNoLocation
dealValueNoEstimated deal value
dealStageNoCurrent deal stage
techStackNoTechnologies used
painPointsNoKnown pain points
triggerEventsNoTrigger events
championIdentifiedNoHas a champion been identified?
competitorInvolvedNoKnown competitor in the deal
productDescriptionNoA 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.
verticalNoThe 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.
targetRoleNoThe 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:166-186 (registration)
    Definition of the 'classify_opportunity' tool in the static catalog.
    {
      name: 'classify_opportunity',
      description: 'Run a full read on a deal in one call — fit score, persona match, risk flags, disqualification check, and a verdict: pursue, pause, or walk away. Combines multiple scoring engines for a comprehensive assessment.',
      annotations: READ_ONLY,
      inputSchema: {
        type: 'object',
        properties: {
          companyName: { type: 'string', description: 'Company name' },
          contactTitle: { type: 'string', description: 'Primary contact job title' },
          industry: { type: 'string', description: 'Industry' },
          employeeCount: { type: 'number', description: 'Number of employees' },
          revenue: { type: 'string', description: 'Revenue range' },
          geography: { type: 'string', description: 'Location' },
          dealValue: { type: 'number', description: 'Estimated deal value' },
          dealStage: { type: 'string', description: 'Current deal stage' },
          techStack: { type: 'array', items: { type: 'string' }, description: 'Technologies used' },
          painPoints: { type: 'array', items: { type: 'string' }, description: 'Known pain points' },
          triggerEvents: { type: 'array', items: { type: 'string' }, description: 'Trigger events' },
          championIdentified: { type: 'boolean', description: 'Has a champion been identified?' },
          competitorInvolved: { type: 'string', description: 'Known competitor in the deal' },
          ...COLD_START_PARAMS,
  • The MCP RequestHandler that proxies tool calls (including classify_opportunity) 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,
          };
        }
      }
    );
  • The AndruClient method that makes the actual HTTP POST request to the backend for the tool execution.
    async callTool(name, args) {
      return this.post('/api/mcp/tools/call', { tool: name, arguments: args });
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/geter-andru/andru-revenue-intelligence'

If you have feedback or need assistance with the MCP directory API, please join our Discord server