Falconara falcon logoFalconaraTMS
All docs

Portales e integraciones

API REST y servidor MCP

Todas las llamadas, documentadas — una API REST completa más un servidor MCP nativo para Claude, Cursor y cualquier agente de IA.

Autenticación

Dos credenciales, un solo límite. Una API key de plataforma para integraciones servidor a servidor y agentes, o una sesión iniciada para las llamadas que hace la propia app. El aislamiento entre cuentas lo impone Postgres con row-level security, no el handler: una credencial solo puede leer los datos de su propia cuenta.

curl -H "Authorization: Bearer $FALCONARA_API_KEY" \
  https://falconarahn.com/api/v1/fleet

Creá tu key en Settings → Integrations → API keys. Copiala cuando se muestra — solo se guarda un hash, así que no se puede volver a mostrar; si la perdés, revocala y emití otra. Las keys llevan su propia cuenta, así que una llamada solo puede leer tus datos, y la misma key sirve para la API REST y para MCP.

Las llamadas por sesión tienen un piso de rol: solo owner, admin y dispatcher llegan a estos endpoints. Las sesiones de driver y carrier owner se rechazan — sus portales nunca los llaman, y estos endpoints responden con datos de toda la cuenta.

Especificación legible por máquina

La descripción completa en OpenAPI 3.1 es pública en /api/v1/openapi.json — no hace falta key para leerla. Importala en Postman o Insomnia, o generá un cliente tipado directo desde ahí.

curl https://falconarahn.com/api/v1/openapi.json

Cargas y flota

LlamadaQué hace
GET /api/v1/loadsLista de cargas, más recientes primero. Filtros: status, dateFrom, dateTo, carrierId, brokerId, limit (máx. 100), offset.
POST /api/v1/quick-claimCrea una carga desde un aviso del load board y, si querés, manda la consulta al broker en la misma llamada.
GET /api/v1/fleetCada truck activo con la carga que está corriendo, más totales por carrier.
GET /api/v1/next-load-suggestionsPor cada truck libre o que entrega en las próximas 24h: su próxima ubicación libre, los mejores corredores desde ahí y los brokers que mejor pagan en ellos.

Inteligencia de tarifas y brokers

LlamadaQué hace
GET /api/v1/brokersDirectorio de brokers con contacto, rating y tarifa por milla histórica. Filtrá por mc o name.
GET /api/v1/broker-pulseWin rate, cantidad de cargas y mejores lanes por broker en los últimos 30 días.
GET /api/v1/corridors?from=TX&to=GATu propio RPM promedio, rango y cantidad de cargas para un par origen-destino. Ambos estados son obligatorios.
GET /api/v1/hot-corridorsTop 10 de lanes por RPM promedio de esta semana contra la anterior, con la tendencia.
GET /api/v1/mc-lookup?mc=123456Resuelve un número MC a su razón social y domicilio registrados en SAFER.

Analítica

LlamadaQué hace
GET /api/v1/analyticsIngresos, cargas por estado, PODs pendientes y cargas en tránsito. from y to opcionales.
GET /api/v1/analytics-insightsLos últimos 30 días contra los 30 anteriores, redactado como hallazgos en lenguaje natural. Consume créditos de IA.

Documentos

Todos los endpoints de documentos reciben multipart/form-data con una parte file.

LlamadaQué hace
POST /api/v1/ocr-rate-conLee una rate confirmation. Con loadId la adjunta a esa carga; sin loadId identifica la carga desde el propio documento (MC# del broker más número de carga) e informa si el match fue claro, ambiguo o inexistente.
POST /api/v1/ocr-receiptExtrae monto, fecha, categoría y proveedor de un recibo de gasto.
POST /api/v1/documents/ingestClasifica un POD, BOL, rate con, recibo de lumper o factura, lo matchea a una carga y lo archiva. Un POD sobre una carga entregada la avanza a POD recibido.
POST /api/v1/documents/migrateLa variante de importación masiva: mismo matcheo, pero el resultado queda registrado en un batch para revisar en Doc Migration.

Leer una rate con nunca pisa tu carga. Aplicar los valores extraídos es un paso aparte, campo por campo — un error del OCR no puede reescribir una tarifa en silencio.

Exportaciones

LlamadaQué hace
GET /api/documents/exportZIP de documentos por carga, o por carrier y rango de fechas, o un rango completo. Un carrier owner siempre queda limitado a su propio carrier.
GET /api/loads/exportCargas en CSV, hasta 5000 filas, con los mismos filtros que el listado.
GET /api/quickbooks/exportFacturas de carrier en formato de importación de QuickBooks Online, Net 15. Solo admin; from y to obligatorios.

Servidor MCP

FalconaraTMS es un servidor Model Context Protocol de primera clase, así que Claude, Cursor o cualquier agente compatible con MCP puede consultar tu TMS directo. JSON-RPC 2.0 sobre POST /api/mcp: initialize, tools/list y tools/call.

{
  "mcpServers": {
    "falconaratms": {
      "url": "https://falconarahn.com/api/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}
HerramientaArgumentosDevuelve
fleet_statusningunoTodos los trucks, cargados o disponibles
list_loadsstatus, dateFrom, dateTo, limit (máx. 50)Las cargas que coinciden
pending_podsningunoCargas entregadas que siguen sin POD — el bloqueo para facturar
corridor_ratespickupState, deliveryStateTarifas históricas de ese corredor
broker_lookupname (coincidencia parcial)Un broker y su score de confiabilidad
curl -X POST https://falconarahn.com/api/mcp \
  -H "Authorization: Bearer $FALCONARA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"pending_pods","arguments":{}}}'

Respuestas y errores

Las llamadas exitosas devuelven { data: ... }, a veces con un bloque meta. Los errores devuelven { error: "..." } con un status con sentido.

StatusSignificado
400Parámetros faltantes o mal formados — el cuerpo dice cuáles
401Sin credencial, key inválida, o una sesión cuyo rol no está permitido
403Autenticado pero fuera de alcance (otro carrier, exportación deshabilitada, solo admin)
404No hubo coincidencias — también se devuelve cuando el registro es de otra cuenta
402Créditos de IA agotados, en los endpoints que llaman a un modelo
  • Las fechas son YYYY-MM-DD y el dinero es un número en USD.
  • Los períodos de ingresos se agrupan por fecha de entrega, porque ahí se reconoce el ingreso. Los filtros de cargas usan la fecha de pickup — son sobre cuándo está ocupado un truck.
  • El estado de la carga sigue una máquina de estados validada; los saltos arbitrarios se rechazan del lado del servidor.