ΣSigma
Guía de integración

Conectá Sigma a tu IA

Sigma expone un servidor MCP (Model Context Protocol) sobre HTTP. Desde Claude Desktop, ChatGPT, Cursor o cualquier cliente compatible, tu asistente puede cargar gastos, listar inversiones y sincronizar IBKR con un par de pasos.

1

Generá una API key

En Settings podés crear una key por cada cliente (Claude, ChatGPT, Cursor). El token se muestra una sola vez; guardalo en un lugar seguro.

2

Configurá el MCP

Agregá el endpoint + Authorization: Bearer <tu-key> en el config del cliente. Abajo tenés el snippet para cada uno.

3

Usalo desde el chat

Pedile al asistente cosas como "agregá este gasto", "listame mis inversiones" o "sincronizá IBKR". El cliente llama las tools automáticamente.

Endpoint del MCP
URL única para todos los clientes. Autenticación por header Authorization: Bearer.
https://sigma-lovat-eta.vercel.app/api/mcp
Claude Desktop
Agregá esto a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows).
{
  "mcpServers": {
    "sigma": {
      "transport": {
        "type": "http",
        "url": "https://sigma-lovat-eta.vercel.app/api/mcp",
        "headers": {
          "Authorization": "Bearer sk_sigma_..."
        }
      }
    }
  }
}

Reemplazá sk_sigma_... por la key que generaste. Reiniciá Claude Desktop después de guardar.

ChatGPT (Custom Connector)
En ChatGPT Plus/Enterprise, Settings → Connectors → Build your own connector → HTTP MCP.
  1. Nombre: Sigma
  2. URL: https://sigma-lovat-eta.vercel.app/api/mcp
  3. Auth: Bearer token → pegá tu API key completa (empieza con sk_sigma_).
  4. Guardá, y activalo en el chat que uses.
Cursor
Editá ~/.cursor/mcp.json.
{
  "mcpServers": {
    "sigma": {
      "url": "https://sigma-lovat-eta.vercel.app/api/mcp",
      "headers": {
        "Authorization": "Bearer sk_sigma_..."
      }
    }
  }
}
Cualquier cliente HTTP MCP
Transporte: HTTP JSON-RPC. Método: POST. Body: JSON-RPC 2.0.
curl -X POST https://sigma-lovat-eta.vercel.app/api/mcp \
  -H "Authorization: Bearer sk_sigma_..." \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Tools disponibles (21)
Lista actual de tools que el MCP expone. El asistente las descubre automáticamente.
list_expenses

Lista gastos del usuario con filtros opcionales (from, to, categoryId, paymentMethodId, limit, sort). Devuelve los gastos y un summary con total y breakdown por categoría en USD.

add_expense

Crea un gasto manual. Si currency es ARS y no se pasa exchangeRate, el server trae el blue del día. category y paymentMethod aceptan nombre o ObjectId.

add_expenses_batch

Carga múltiples gastos (1-100) en una sola llamada. Fetchea el blue del día una sola vez para todos los ARS. Útil para importar un resumen de tarjeta completo. Si pasás exchangeRate, se usa para TODOS los items ARS del batch; sino se busca el blue del día actual.

add_expense_from_image

Carga un gasto a partir de los datos ya extraídos por el modelo desde una foto de ticket. NO procesa imágenes — el modelo debe parsear la foto con su vision y pasarnos los campos (merchant, date, total, currency, paymentMethod, category, items). Marca source=ocr-via-chat.

update_expense

Actualiza campos de un gasto existente por id. Útil para corregir fecha, agregar purchaseDate (cuotas), cambiar categoría/medio de pago, etc. Por default NO recalcula amountUSD; pasá recalcUSD:true para re-cotizar con el blue del date nuevo.

get_month_summary

Resumen del mes (default actual): total en USD y ARS, breakdown por categoría, por medio de pago y top merchants.

list_investments

Lista posiciones del portfolio del usuario. Por defecto solo las abiertas (openOnly=true). Filtros opcionales: `type` (un type puntual) o `assetClass` ('financial' = acciones/ETF/bonos/cash/crypto, 'patrimony' = auto/inmueble/colección/préstamos otorgados). Devuelve totales en USD y P&L si hay currentPrice.

add_investment

Agrega una posición al portfolio. Si currency es ARS y no se pasa exchangeRate, trae el blue para normalizar avgPrice a USD.

update_investment

Actualiza campos de una posición existente (name, ticker, qty, avgPrice, currency, broker, notes, currentPrice, closedAt). Scope-safe: solo opera sobre inversiones del userId autenticado. Si cambia qty/avgPrice/currency, recalcula avgPriceUSD y totalCostUSD. Si envías currentPrice, marca lastPriceAt=ahora (útil para fondos sin ticker).

delete_investment

Elimina (hard delete) una posición del portfolio del usuario autenticado. Requiere el _id de Mongo (lo devuelve list_investments como 'id'). Scope-safe: solo borra si pertenece al mismo userId.

list_investment_wishes

Lista la wishlist de inversiones del usuario. Opcional filter por status (pending, in-progress, done, cancelled).

add_investment_wish

Agrega una inversión deseada a la wishlist del usuario.

update_expense_rate

Edita manualmente el tipo de cambio de un gasto y recalcula amountUSD. Marca el source como 'manual'.

ibkr_validate

Valida la configuración de la Flex Query de IBKR del usuario autenticado. Hace un pull real contra IBKR usando el token guardado (cifrado en DB) y reporta, por sección (Open Positions, Cash Transactions, Trades, Cash Report, Change in NAV, Account Information), qué campos críticos y recomendados están presentes/faltantes en el XML. No importa nada a la DB; es solo diagnóstico. Útil para detectar fields no tildados en la UI de IBKR antes de hacer sync.

ibkr_sync

Sincroniza el portfolio IBKR del usuario autenticado: pide la Flex Query, hace upsert de las Open Positions (qty, avgPrice, currentPrice/markPrice) y de los Cash Transactions como movimientos de inversión. Devuelve el conteo de posiciones y movimientos actualizados. Usar cuando el usuario pida 'actualizar IBKR', 'refrescar mi portfolio', 'traer los últimos precios'.

list_payment_methods

Lista los medios de pago del usuario (cash, debit, credit, transfer, crypto). Por defecto solo los activos; pasá includeInactive:true para traer todos.

add_payment_method

Crea un medio de pago nuevo (cash, debit, credit, transfer, crypto). name debe ser único por usuario.

update_payment_method

Actualiza un medio de pago. `id` acepta ObjectId o el nombre actual. Para desactivar pasá isActive:false. Falla si el medio de pago no existe.

list_categories

Lista categorías disponibles para el usuario (defaults del sistema + las propias). Útil para elegir una antes de crear un gasto.

add_category

Crea una categoría propia del usuario. name debe ser único. Si ya existe (propia o default), la devuelve en vez de duplicar.

update_category

Actualiza una categoría propia del usuario. `id` acepta ObjectId o el nombre actual. Falla si no existe. Las categorías default del sistema no se pueden editar.

¿Listo para conectar?

Generá tu primera API key en Settings. Podés crear una por cada cliente para que revocar una no rompa las demás.

Entrar y generar la key