npm package: @orionislabs/mcp
Description: MCP server for Orionis AI & automation consulting estimates
Latest version: 1.0.0

# @orionis/mcp

MCP server for generating AI & automation consulting estimates from [Orionis](https://orionis.consulting).

Designed for AI agents and chatbots that want to help users get a quote for automating business processes. The agent collects information through natural conversation, then calls the tools to calculate an estimate and create a lead.

## Quick Start

```bash
npx @orionis/mcp
```

Or add to your MCP client config:

```json
{
  "mcpServers": {
    "orionis": {
      "command": "npx",
      "args": ["@orionis/mcp"]
    }
  }
}
```

### Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "orionis": {
      "command": "npx",
      "args": ["@orionis/mcp"]
    }
  }
}
```

### Claude Code

Add to `.mcp.json` in your project root:

```json
{
  "mcpServers": {
    "orionis": {
      "type": "stdio",
      "command": "npx",
      "args": ["@orionis/mcp"]
    }
  }
}
```

## Tools

### `get_schema`

Returns the data schema the agent needs to collect from the user. Call this first.

**Parameters:**
- `locale` (optional, default `"en"`) — Language for field descriptions and options. Supported: `es`, `en`, `pt`, `de`, `fr`, `zh`, `ar`.

**Response includes:**
- `instructions` — How to guide the conversation, with an example
- `company` — Industry, size, AI usage
- `objective` — Motivation for seeking consulting
- `processes` — Array of processes to automate (at least one required)
- `delivery` — Technical team, who builds/maintains
- `pricing` — Timeline, budget, future phases
- `contact` — Name, email (collected last, only when user wants to proceed)

Each field has `type`, `required`, `description`, `options` (for choice fields), `condition` (when to ask optional fields), and `note`.

### `calculate_estimate`

Calculate an estimate from the collected data. Returns a detailed breakdown or lists missing fields.

**Parameters:**
- `data` — JSON object matching the schema sections (company, objective, processes, delivery, pricing)
- `locale` (optional, default `"en"`)

**For choice fields**, you can send either the key (`"b"`) or the label text (`"11-50"`).

**If data is complete**, returns:
```json
{
  "status": "complete",
  "estimate": {
    "implementation": { "min_usd": 24600, "max_usd": 49200 },
    "monthly_ops": { "min_usd": 900, "max_usd": 2400 },
    "confidence": { "level": "High", "score": 95 },
    "delivery_model": { "key": "nosotros_todo", "label": "We handle everything" },
    "process_count": 2,
    "flags": [
      { "key": "info_no_digitalizada", "description": "Some input data is not fully digitized" }
    ],
    "breakdown": [
      { "label": "Development (x2)", "min_usd": 12000, "max_usd": 24000 },
      { "label": "Integrations (x2)", "min_usd": 5000, "max_usd": 10000 }
    ],
    "monthly_breakdown": [
      { "label": "Process 1 (Invoice processing)", "min_usd": 600, "max_usd": 1600 }
    ],
    "timeline": {
      "urgent": false,
      "phases": [
        { "name": "MVP", "duration": "5-9 weeks" },
        { "name": "Production", "duration": "4-7 weeks" }
      ],
      "total_weeks": { "min": 9, "max": 16 }
    }
  }
}
```

**If data is incomplete**, returns missing fields with type and options so the agent knows exactly what to ask:
```json
{
  "status": "incomplete",
  "missing_fields": [
    {
      "section": "company",
      "field": "size",
      "description": "How many people are in the company?",
      "type": "choice",
      "options": [
        { "key": "a", "label": "1-10" },
        { "key": "b", "label": "11-50" }
      ]
    }
  ]
}
```

### `create_lead`

Create a lead after the user sees the estimate and wants to proceed. Persists the full session for the Orionis team.

**Parameters:**
- `data` — All estimate data plus `contact` section (name, email, optional LinkedIn and website)
- `locale` (optional, default `"en"`)

**Response:**
```json
{
  "status": "created",
  "session_id": "abc-123",
  "estimate": { ... },
  "calendar_url": "https://cal.com/orionis/validation"
}
```

## Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `ORIONIS_API_URL` | `https://api.orionis.consulting` | API endpoint |

## How It Works

```
User ←→ AI Agent ←→ MCP Server ←→ Orionis API
                         │
                    get_schema (read once)
                         │
              (agent collects info naturally)
                         │
                  calculate_estimate
                         │
              (agent presents estimate)
                         │
                    create_lead
                         │
              (calendar link returned)
```

The MCP server is a thin HTTP client. All business logic (pricing, validation, flag derivation) runs on the Orionis API. The agent decides how to conduct the conversation — the schema provides guidance but doesn't enforce question order.

## License

MIT