Floe Working Capital

Otorga a los agentes de IA (Claude, Cursor, personalizados) acceso completo al capital de trabajo para pagar recibos x402.

Documentación

@floelabs/mcp-server

npm version npm downloads CI License: MIT Base Mainnet

Floe a través de MCP: conoce cuánto cuesta realmente cada llamada de IA. Floe calcula el costo de cada llamada en el momento en que termina, en todos los proveedores (telefonía, STT, LLM, TTS, herramientas), en un solo libro de contabilidad, vincula el gasto al cliente y a la campaña, y muestra tu margen por contrato, para que puedas facturar a tus propios clientes con base en esos costos reales. Este servidor coloca esa capa en tu cliente MCP: dale a Claude Desktop, Claude Code, Cursor, CrewAI o cualquier cliente MCP una sola clave para cada herramienta de voz y modelo que usa un agente de voz — STT, TTS, LLM, telefonía — además de más de 2,000 servicios API de proveedores, con presupuestos sobre los que el agente puede razonar. Sin wallet. No se requiere cripto.

Sitio web · Documentación · Panel · 𝕏 @FloeLabs

88 herramientas que cubren todo el ciclo de vida del agente: crea agentes, emite/rota claves, establece presupuestos, estima costos y ejecuta pagos x402 — con autenticación consciente del transporte (HTTP remoto usa un token Bearer; stdio local lee FLOE_API_KEY del entorno) y un nivel sin clave (get_markets, check_x402_url, search_floe_docs funcionan sin ninguna clave).


Comienza gratis. Un Crédito de Bienvenida de $3 (300 créditos API) al registrarte — sin tarjeta, sin wallet. Obtén una clave de agente →

Comienza a construir con Floe

Una clave para toda la factura de proveedores de tu agente — LLM, voz, telefonía, búsqueda, datos — medida por llamada y con límite de presupuesto. Deja que tu agente de codificación lo configure, o conéctalo tú mismo:

RutaUna línea
Agente — Claude Code / Cursor hace la configuraciónpega: Read https://dev-dashboard.floelabs.xyz/agents.md and set up Floe for this project.
Skill — instala la skill de agente de Floenpx skills add floe-labs/agent-skills
MCP — servidor MCP alojado (88 herramientas)npx -y add-mcp https://mcp.floelabs.xyz/mcp
CLI — la plataforma completa desde tu terminal: agentes, claves, presupuestos, facturaciónnpx @floelabs/cli init
NPM — el SDK + CLI floe-agentnpm i -g floe-agent

Las cuentas nuevas reciben un Crédito de Bienvenida de $3 (300 créditos API) — sin tarjeta. Configura con tus herramientas de IA → · Obtén una clave →

Qué lo hace diferente

La mayoría de las herramientas de pago permiten que un agente gaste. Floe permite que un agente razone sobre el gasto antes de comprometerse — y lo detiene antes de que se exceda.

  • Herramientas de conciencia del agente — get_credit_remaining, estimate_x402_cost, get_loan_state: tu agente pregunta "¿tengo presupuesto? ¿vale la pena esta llamada?" antes de pagar, no después.
  • Presupuestos conscientes del contexto — establece un límite de gasto por sesión; el agente reduce el ritmo a medida que se acerca al límite y replanifica para terminar dentro del presupuesto.
  • La skill de agente de Floe (Floe-Labs/agent-skills) — el manual que convierte esas herramientas en un comportamiento de gasto deliberado. Ir a ella ↓
  • Aplicación del lado del servidor — la señal suave es la skill; el techo duro es el límite de gasto en cadena + la lista blanca de comerciantes. El agente no puede gastar de más sin importar lo que decida.

Inicio rápido (remoto, recomendado)

Instalaciones de una línea:

# Universal (any MCP-aware client)
npx -y add-mcp https://mcp.floelabs.xyz/mcp

# Claude Code
claude mcp add --transport http floe https://mcp.floelabs.xyz/mcp --header "Authorization: Bearer YOUR_FLOE_KEY"

# Codex (reads the key from $FLOE_API_KEY at connect time)
codex mcp add floe --url https://mcp.floelabs.xyz/mcp --bearer-token-env-var FLOE_API_KEY

O mediante configuración JSON:

{ "mcpServers": { "floe": {
  "url": "https://mcp.floelabs.xyz/mcp",
  "headers": { "Authorization": "Bearer floe_YOUR_AGENT_KEY" }
} } }

Obtén tu clave de agente: panel → Crear agente → copia la clave floe_<hex> (se muestra una vez). O desde la CLI: npx @floelabs/cli init — pega tu clave de desarrollador del panel y crea (o selecciona) el agente y emite la clave por ti. ¿Aún no tienes clave? El servidor sigue funcionando — consulta Nivel sin clave.

Parámetros de alcance — limita lo que una sesión puede hacer directamente desde la URL:

https://mcp.floelabs.xyz/mcp?read_only=true          # only non-mutating tools
https://mcp.floelabs.xyz/mcp?features=spend,pricing  # only the named capability groups

Grupos de capacidades: lending, spend, pricing, lifecycle, observability, payments, webhooks, actuals, contracts, outcomes, docs. Ambos parámetros se combinan. El bucle de decisión de la skill de agente de Floe necesita spend,pricing.

→ Stdio local, instalación global y taxonomía de claves abajo

Herramientas de un vistazo

GrupoHerramientasPara
Ejecución de pagos ⭐x402_pay (idempotente), x402_forecast, estimate_x402_cost, check_x402_urlpagar a cualquier proveedor x402 — con una verificación previa de costos primero
Ciclo de vida del agentecreate_agent, list_agents, get_agent, pause_agent, resume_agent, close_agent, create_agent_key, rotate_agent_key, revoke_agent_key, set_agent_key_budget, open_credit_line, get_credit_line_boundsiniciar y gestionar la flota con una clave de desarrollador
Conciencia del agente ⭐get_credit_remaining, get_loan_state, get_spend_limit, set_spend_limit, clear_spend_limitcada agente — razonar sobre el costo antes de pagar
Gobernanza del gastoregister_credit_threshold, list_credit_thresholds, delete_credit_threshold (webhooks)gobernar + alertar sobre la utilización
Lista blanca de comerciantesset_allowlist_mode, get_allowlist_mode, add_allowlist_entry, remove_allowlist_entry, list_allowlistdenegación por defecto sobre qué destinos puede pagar el agente
Financiamiento y observabilidadget_funding_instructions, get_balances, get_activity, get_usage_summary, get_coverage_scorefinanciar agentes + observar el gasto de la flota + medir la cobertura de aplicación
Webhookscreate_webhook, list_webhooks, list_webhook_events, get_webhook, update_webhook, delete_webhook, test_webhook, rotate_webhook_secret, list_webhook_deliveries, get_webhook_delivery, retry_webhook_deliverynotificaciones push para eventos de cuenta + el registro de entrega
Costos reales de proveedoreslist_vendor_cost_legs, list_vendor_cost_calls, get_vendor_cost_rollup, list_reconciliation_findings, list_vendor_connections, verify_vendor_connectionlo que TUS propios proveedores te cobraron, conciliado con sus registros de facturación
Interacciones (por tarea)list_interactions, get_interaction, get_interaction_cost_rollupel mismo dinero a nivel de TAREA — una llamada/SMS/trabajo con cada tramo de proveedor unido, más el costo por minuto
Contratos (firmados)list_contracts, get_contractlo que FIRMASTE por cliente — términos, progreso del compromiso y la desviación de lo que la tarjeta de tarifas está cobrando realmente
Resultados (lo que produjo una tarea)emit_outcome, list_outcomes, get_outcomereportar un resultado facturable contra un id de tarea — Floe lo vincula a la llamada, de modo que el costo y el resultado estén en una sola fila — luego encontrar reclamos por la llamada
Documentaciónsearch_floe_docs (sin clave)aprender la API de Floe sin salir de MCP
Walletget_wallet_balance, get_accrued_interestsaldos + estado
Utilidadsimulate_transaction, broadcast_transaction, get_transaction_statusciclo de vida de transacciones
Protocolo de préstamos (avanzado)20+ herramientas de intención / colateral / liquidaciónpréstamos nativos cripto contra depósitos

La referencia completa por herramienta está en Herramientas (88) abajo.


Clientes probados

ClienteEstado
Claude DesktopGA
Claude CodeGA
CursorGA
Continue / ClineMejor esfuerzo
CrewAI (vía langchain-mcp-adapters)Beta
OpenAI Agents SDKPreview (respaldo MCP mientras se lanza el adaptador nativo)
ElizaOSPreview

Opciones de instalación

La opción 1 (remota) está en Inicio rápido arriba. Para ejecuciones locales:

Local vía npx

Ejecuta el servidor localmente. Proxy de todas las solicitudes a la API de Floe.

FLOE_API_KEY=floe_YOUR_AGENT_KEY npx -y @floelabs/mcp-server --stdio

Configuración de Claude Desktop:

{
  "mcpServers": {
    "floe": {
      "command": "npx",
      "args": ["-y", "@floelabs/mcp-server", "--stdio"],
      "env": {
        "FLOE_API_KEY": "floe_YOUR_AGENT_KEY"
      }
    }
  }
}

Configuración de Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "floe": {
      "command": "npx",
      "args": ["-y", "@floelabs/mcp-server", "--stdio"],
      "env": {
        "FLOE_API_KEY": "floe_YOUR_AGENT_KEY"
      }
    }
  }
}

Instalación global

npm install -g @floelabs/mcp-server
FLOE_API_KEY=floe_YOUR_AGENT_KEY floe-mcp --stdio

Selección de transporte

--stdio y --http son anulaciones explícitas. Sin ninguna de las dos banderas, el servidor elige según qué es stdin: una tubería (un cliente MCP que lo inicia) → stdio; una terminal o un administrador de servicios /dev/null → HTTP en 127.0.0.1:3100. Así que una configuración command: npx desnuda ahora funciona — pero mantén --stdio en las configuraciones de todos modos para que el comportamiento nunca dependa de cómo el cliente conecta stdio. Ante un fallo de inicio, el proceso registra [floe-mcp] Fatal: en stderr y sale con código 1; en modo stdio todo el registro va a stderr, nunca a stdout (que transporta el protocolo MCP).


Modelo de autenticación

La fuente de autenticación depende del transporte:

TransporteFuente de identidad
HTTP remoto (https://mcp.floelabs.xyz/mcp)encabezado Authorization: Bearer <key> (por solicitud)
Stdio local (floe-mcp --stdio / npx -y @floelabs/mcp-server --stdio)variable de entorno FLOE_API_KEY
HTTP local (autoalojado)encabezado Authorization: Bearer <key> (por solicitud). La clave de variable de entorno nunca se usa como respaldo para solicitudes HTTP sin encabezado — las solicitudes sin Bearer se ejecutan sin clave.

Nivel sin clave

El servidor se inicia (y el endpoint alojado responde) sin ninguna clave. Las sesiones sin clave obtienen exactamente tres herramientas con resultados en vivo: get_markets, check_x402_url y search_floe_docs — suficiente para evaluar un proveedor, cotizar una llamada y aprender la API antes de registrarte. Cualquier otra herramienta devuelve un error estructurado:

{ "error": "AUTH_REQUIRED", "status": 401,
  "message": "…Requires an agent key (floe_...).",
  "next": "Get a developer key at https://dev-dashboard.floelabs.xyz, then mint agent keys with create_agent_key. …" }

Los errores de herramientas siempre llevan el status HTTP del backend (para que los agentes puedan distinguir 401/403/404/429), y los 401/403 incluyen una pista de remediación que distingue clave faltante de tipo de clave incorrecto.

Qué clave usar

Dos formatos de clave desbloquean diferentes superficies — cada descripción de herramienta indica cuál necesita:

Formato de claveAlcanceDesbloquea
floe_<64-hex> (clave de agente)Un agente específicoTiempo de ejecución: conciencia del agente, gobernanza del gasto, lista blanca, reputación, estimate_x402_cost, x402_forecast y x402_pay. Una sesión MCP = un agente. Las herramientas de ciclo de vida devuelven 401 (tipo de clave incorrecto).
floe_live_<base62> (clave de desarrollador)Toda la cuenta de desarrolladorCiclo de vida: create_agent, claves de agente (create_agent_key, rotate_agent_key, …), presupuestos, líneas de crédito, instrucciones de financiamiento, saldos, actividad, uso, webhooks. Las herramientas de tiempo de ejecución del agente devuelven 401 (tipo de clave incorrecto).

Inicio típico: conéctate con la clave de desarrollador → create_agent → create_agent_key → reconéctate (o abre una segunda sesión MCP) con la clave de agente emitida para gastar.

Obtén una clave de agente:

  1. Ve a dev-dashboard.floelabs.xyz
  2. Conecta tu wallet y Crea un agente (nombre + límite de préstamo + tasa máxima)
  3. Copia la clave floe_<64-hex> que se muestra al final del asistente — se revela una sola vez

También puedes emitir una desde la CLI:

# Platform CLI — interactive: paste your developer key, create or select an
# agent, and the minted agent key lands in your OS keychain
# (manage agent keys later with `floe keys list|create|rotate|revoke`,
#  developer keys with `floe devkeys`)
npx @floelabs/cli init

# SDK-level alternatives:
# TypeScript SDK
npx floe-agent register --name my-agent --borrow-limit 10000

# Python SDK
floe-agent register --name my-agent --borrow-limit 10000

La CLI de la plataforma y este servidor MCP cubren la misma superficie de API. @floelabs/cli es la plataforma completa desde una terminal — agentes, claves, presupuestos, políticas, facturación, fondos, teléfono, llamadas medidas — con --json en cada comando y códigos de salida estables para scripts y CI. MCP sigue siendo la integración contextual más rica: herramientas que tu agente descubre, razona y llama a mitad de sesión sin recurrir a shell.

Obtén una clave de desarrollador (desbloquea las herramientas de ciclo de vida — create_agent, emisión de claves, presupuestos, financiamiento, webhooks — y visibilidad multiinquilino en todos tus agentes):

  1. Ve a dev-dashboard.floelabs.xyz/keys
  2. Haz clic en Crear clave, etiquétala, elige permisos de read o read_write
  3. Copia la clave floe_live_<base62> que se muestra una vez

Las claves de desarrollador abarcan toda la cuenta de desarrollador y tienen un límite de tasa separado (100 req/min). Las herramientas de tiempo de ejecución del agente (get_credit_remaining, get_spend_limit, x402_pay, etc.) devuelven 401 con una clave de desarrollador porque el llamador es el desarrollador, no un solo agente — la pista next del error lo indica y apunta a create_agent_key. Consulta la documentación de Claves API para la taxonomía completa.

Financia con fiat: Puedes financiar tu wallet con USDC vía Coinbase — tarjeta de crédito, transferencia bancaria, Apple Pay, Google Pay — directamente desde el panel. No se necesita rampa de entrada cripto.

Múltiples agentes

Un desarrollador de Floe puede poseer muchos agentes. Para ejecutar varias sesiones MCP en paralelo (por ejemplo, un agente de investigación y un agente de trading), emite una clave por agente y configura cada entrada de cliente MCP con su propia clave:

{
  "mcpServers": {
    "floe-research": {
      "url": "https://mcp.floelabs.xyz/mcp",
      "headers": { "Authorization": "Bearer floe_KEY_FOR_RESEARCH_AGENT" }
    },
    "floe-trading": {
      "url": "https://mcp.floelabs.xyz/mcp",
      "headers": { "Authorization": "Bearer floe_KEY_FOR_TRADING_AGENT" }
    }
  }
}

Cada sesión está limitada a un agente — las líneas de crédito, los límites de gasto y los webhooks permanecen aislados.


Variables de entorno

VariableObligatorioPredeterminadoDescripción
FLOE_API_KEYNo (nivel sin clave sin él)—Tu clave API de Floe: floe_<64-hex> clave de agente para herramientas de runtime/gasto, floe_live_<base62> clave de desarrollador para herramientas de ciclo de vida. Fuente de identidad en modo stdio; ignorada para solicitudes HTTP, que se autentican por solicitud mediante Authorization: Bearer
FLOE_API_BASE_URLNohttps://credit-api.floelabs.xyzEndpoint de API
MCP_PORTNo3100Puerto del servidor HTTP (modo no stdio)
MCP_HOSTNo127.0.0.1Dirección de enlace HTTP; establece 0.0.0.0 para exponer más allá del loopback
MCP_TRUSTED_ORIGINSNo—Orígenes adicionales separados por comas permitidos por CORS en modo HTTP

Herramientas (88)

A continuación, las herramientas se listan por tipo de solicitud. El resumen está en Herramientas de un vistazo arriba. Cada descripción también nombra la clave que necesita: clave de agente (floe_...), clave de desarrollador (floe_live_...), cualquier clave, o ninguna. La etiqueta de grupo de características en cada encabezado es lo que ?features= filtra.

Ejecución de pagos (payments, pricing) ⭐

La razón por la que existe el resto: estimar → pronosticar → pagar. x402_pay necesita una clave de agente; check_x402_url no requiere clave.

HerramientaDescripción
x402_payEjecuta una llamada x402 pagada a través del proxy de Floe — paga al proveedor en USDC desde el saldo/crédito del agente, devuelve la respuesta del proveedor + encabezados de medición X-Floe-*. idempotency_key hace que los reintentos se reproduzcan en lugar de pagar dos veces
x402_forecastPronóstico de costos por lotes + verificación previa de políticas para hasta 50 llamadas planificadas (con recuentos de repetición) — un solo viaje de ida y vuelta para validar un plan completo
estimate_x402_costVerificación previa de una URL x402 — devuelve el costo + reflexión contra tu crédito, sin pago
check_x402_urlSonda sin clave: ¿está esta URL protegida por x402 y cuánto cuesta?

Ciclo de vida del agente (lifecycle) — clave de desarrollador

Inicia y gestiona la flota sin tocar el panel de control.

HerramientaDescripción
create_agentAprovisiona un agente gestionado: billetera Privy + delegación patrocinada en cadena + el crédito de bienvenida de $3 en el primer agente de la cuenta (una vez por cuenta, gastable inmediatamente)
list_agentsLista cada agente en la cuenta con estado y límites
get_agentDetalle de un agente: estado, dirección de depósito, crédito utilizado, actividad de 24h
pause_agentSuspende un agente (interruptor de apagado) — sus claves fallan la autenticación hasta que se reanude
resume_agentReactiva un agente pausado
close_agentCierra un agente de forma irreversible: paga préstamos, barre fondos, desactiva claves
create_agent_keyEmite una clave de agente floe_... (texto plano una vez), opcionalmente con un presupuesto de gasto renovable
rotate_agent_keyRevoca y re-emite atómicamente una clave (nuevo texto plano una vez)
revoke_agent_keyElimina una clave — las llamadas que la usan fallan inmediatamente
set_agent_key_budgetEstablece/actualiza un presupuesto renovable de cierre por fallo en una clave
open_credit_lineMejora un agente de pago por uso a una línea de crédito gestionada (colateral de su billetera)
get_credit_line_boundsPrevisualiza rangos válidos de depósito/LTV antes de open_credit_line

Financiamiento y observabilidad (observability) — clave de desarrollador

HerramientaDescripción
get_funding_instructions"Cómo financiar este agente" legible por máquina: dirección de depósito USDC, cadena 8453, mínimos/advertencias
get_balancesAgrega USDC entre la billetera del desarrollador, billeteras de agentes y créditos de API
get_activityFuente de actividad unificada (llamadas proxy, onramps, transferencias, préstamos) con filtros + paginación por cursor
get_usage_summaryResumen de análisis de gasto/uso: KPIs, series diarias, endpoints principales
get_coverage_scorePuntaje de cobertura: proporción del gasto conocido que Floe aplica antes de la llamada vs reconciliado (fuera de ruta) vs oscuro. Pasa agent_id para un agente, omítelo para la flota

Webhooks (webhooks) — clave de desarrollador

HerramientaDescripción
create_webhookRegistra un endpoint para eventos de cuenta (secreto de firma mostrado una vez). Ámbitos: global, wallet, agent (dirección de billetera del agente), loan; los eventos aceptan nombres exactos, *, o comodines de prefijo como call.*
list_webhooksLista webhooks registrados (los secretos nunca se devuelven)
list_webhook_eventsEl catálogo de eventos en vivo — 30 eventos en préstamo / agente / crédito / llamada / teléfono / mercado
get_webhookUn webhook + sus estadísticas de entrega (pendiente/éxito/fallido/reintentando/total)
update_webhookCambia URL, eventos, descripción, o pausa/reanuda mediante active (el ámbito es inmutable)
delete_webhookElimina un endpoint permanentemente
test_webhookEnvía una entrega de prueba firmada para verificar la conectividad de extremo a extremo
rotate_webhook_secretRota el secreto de firma (nuevo secreto mostrado una vez)
list_webhook_deliveriesRegistro de entrega a nivel de cuenta con filtros (endpoint, evento, billetera de agente, estado, rango de tiempo, id de entrega/correlación) + paginación por cursor; retención de 30 días
get_webhook_deliveryUna entrega completa: payload enviado, cuerpo de respuesta saneado, próximo tiempo de reintento
retry_webhook_deliveryReentrega manualmente una entrega fallida (deduplicación en X-Floe-Delivery-Id)

Costos reales del proveedor (actuals) — clave de desarrollador

Lo que tus propios proveedores te cobraron (FLO-746), reconciliado contra los registros de facturación de esos proveedores — no lo que Floe te cobró. Cada costo lleva un estado, y un estado es una afirmación:

EstadoSignificaNunca digas
exactreconciliado con el registro de facturación por solicitud del propio proveedor—
period-ratevalorado a la tarifa realizada del propio proveedor para ese período"exacto", o cualquier cosa que implique precisión por solicitud
invoicedcotejado con la factura del proveedor—
pendingel proveedor aún no ha publicado este costocualquier cifra en dólares
manualninguna API del proveedor publica esto — sube la facturacualquier cifra en dólares

costRaw es null para pending y manual — reporta unidades, nunca un cero. exact y period-rate se devuelven como subtotales separados y nunca deben sumarse en un solo número.

Cuando llega un costo: algunas partes pueden valorarse en el momento en que termina una llamada, otras solo en el lote del día siguiente del proveedor — así que una parte reciente lee pending, que es el estado estable, no un defecto.

La cobertura lee baja en cuentas con mucho uso de voz al lanzamiento — una propiedad de lo que los proveedores publican, no de tu configuración. Cierra la brecha a través del carril de facturas.

HerramientaDescripción
list_vendor_cost_legsCosto de proveedor capturado por parte con el id de solicitud del propio proveedor, unidades tipadas, estado y procedencia. Paginado por conjunto de claves. Filtros: since/until, vendor, customer_id, agent_id, campaign_id, task_id, status
list_vendor_cost_callsResumen por llamada del lado del servidor — un recuento composition por llamada más subtotales separados exactos / tarifa de período. Un solo totalRaw solo cuando cada parte está valorada y en USD; de lo contrario "partial — lower bound"
get_vendor_cost_rollupTotales por customer, campaign, agent, vendor, o time (día UTC)
list_reconciliation_findingsTodo lo que el motor no pudo reconciliar — partes/actuales no coincidentes, discrepancias de unidades, conectores obsoletos, variación de facturas. Las razones nombradas por las que un total es un límite inferior
list_vendor_connectionsTus credenciales de facturación del proveedor (enmascaradas — el material de clave nunca se devuelve) + el catálogo de conectores. bestStatus es el techo: un conector period-rate nunca producirá exact
verify_vendor_connectionRe-verifica una credencial almacenada contra el proveedor ahora. Distingue "revocada, re-clave" (unauthorized) de "el proveedor está caído" (degraded). Informativo — un pase no es una garantía de alcance

Por tarea, no por proveedor. Las tres herramientas a continuación son el mismo dinero a nivel de interacción: una tarea de IA — una llamada de voz, un SMS, o un trabajo que no es una llamada — con cada parte de proveedor de esa tarea unida en un solo costo. Esa unión es la unidad de COGS, y es la pregunta que ningún panel de proveedor puede responder: Twilio ve minutos, OpenAI ve tokens, solo la interacción ve una llamada.

HerramientaDescripción
list_interactionsUna fila por tarea con duración, los proveedores involucrados, un desglose por tipo de parte (byKind) y topKind — la parte que dominó el costo. order_by="cost" es la lista de valores atípicos. La primera página también lleva distribution (p50/p95/máx por tarea) y resolution (partes vinculadas a una tarea, con una razón nombrada para cada una que no lo está)
get_interactionUna tarea abierta: cada parte en orden de tiempo con unidades, fuente de captura, estado y costo, más los identificadores en los que se unieron (links — CallSid, ids de solicitud del proveedor, el id de tarea de Floe). Un id fusionado se resuelve a la tarea canónica y reporta requestedId en lugar de 404
get_interaction_cost_rollupCosto y costo por minuto por customer, campaign, agent, channel o outcome — la interacción es el único grano que sabe cuánto tiempo tomó el trabajo

Dos tipos de dinero, nunca sumados por el agente. Las cifras reconciliadas del proveedor (exactRaw, periodRateRaw, totalRaw) son lo que tus propios proveedores te facturaron. floeChargeRaw es lo que Floe cobró por las partes que Floe llevó (sin clave, Floe Phone, x402) — esas partes no llevan factura de proveedor tuya. paidRaw es la suma propia del servidor de ambos, y es nulo mientras la mitad del proveedor aún esté parcial. floeChargeRaw es null, no cero, cuando Floe no llevó nada.

costPerMinuteRaw se declara solo cuando el costo es un total real, cada tarea en la fila ha cerrado, y la duración es positiva — de lo contrario es nulo y costPerMinuteBlockedBy nombra por qué (partial_cost / open_interactions / no_duration). Un $/min de duración desconocida es incognoscible, no un límite inferior.

Gating: list_interactions y get_interaction son lecturas de libro mayor por tarea gratuitas (ledger_read). Las cuatro lecturas de costos reales del proveedor y get_interaction_cost_rollup necesitan attribution_reports, que es gratuito desde P2.6; las dos herramientas de conexión necesitan la característica Agency vendor_connections (y admin/propietario para verify_vendor_connection).

No expuesto a través de MCP, a propósito. La subida de facturas es un PUT binario a una URL de almacenamiento firmada — ningún agente tiene un archivo para enviar. Cotejar una factura escribe sellos invoiced contra la factura de un proveedor y no se deshace al re-ejecutar, por lo que esa acción financiera irreversible mantiene a un humano en el bucle. Resolver un hallazgo es un veredicto humano — la API rechaza el propio auto_cleared de la máquina exactamente por esa razón. Crear una conexión escribe una credencial sellada, y las credenciales nunca viajan a través de una llamada de herramienta. Los cuatro viven en el panel de control y en floe actuals.

Contratos (contracts) — clave de desarrollador

Lo que firmaste, no lo que gastaste. actuals es lo que tus proveedores te cobraron; esto es lo que tu cliente acordó pagar. Son grupos de capacidades separados a propósito, para que un operador pueda entregar uno sin el otro — los términos comerciales y los costos de proveedores son sensibles en direcciones diferentes.

HerramientaDescripción
list_contractsEl libro de contratos, del término más reciente al más antiguo: fechas de término, volumen comprometido, la versión de la tarjeta de tarifas fijada al firmar, y consumed — progreso del compromiso contado en la unidad propia del contrato. needsRenewalCount es el número de términos que se agotaron sin sucesor
get_contractUn contrato por id. Un contrato en otra cuenta responde 404, no 403, de modo que el endpoint nunca confirma que un id exista en otro lugar. No incluye consumed — usa list_contracts para el progreso del compromiso

status y state responden preguntas distintas. status es el acto humano almacenado — active o cancelled, y nunca expired. state es lo que el contrato es ahora mismo (scheduled / active / expired / cancelled), derivado del término y del reloj en cada lectura. Un término que se agotó el mes pasado aún se lee como status=active, así que juzga la vigencia por state. La expiración se deriva en lugar de almacenarse precisamente para que ningún trabajo en segundo plano pueda dejar de ejecutarse silenciosamente y dejar un término terminado con apariencia de vigente.

Un contrato caduca; nunca se renueva automáticamente. Cuando un término termina, el uso sigue siendo tarifado por la tarjeta de tarifas — la facturación nunca se detiene silenciosamente — pero el contrato aparece en needsRenewalCount en lugar de renovarse solo. El sistema no compromete a una agencia a términos que nadie aceptó.

consumed puede ser un piso, y lo dice. Se cuenta en la unidad del contrato, independientemente de lo que mida la tarjeta de tarifas — un cliente puede comprometerse a 10,000 task mientras la tarjeta factura por audio_minute, y eso sigue siendo medible porque el libro mayor registra cada una de esas cantidades. Cuando isLowerBound es verdadero, las solicitudes medidas no llevaban id de tarea, así que el conteo es un PISO: reporta "al menos X de N", nunca un simple "X de N", o le dirás a un cliente que está atrasado en un compromiso que quizás ya cumplió. consumed: null significa que no se calculó — desconocido, nunca cero.

La firma y la cancelación no se exponen por MCP, a propósito. Comprometer a una agencia a un término, o terminarlo antes de tiempo, es una decisión comercial con una contraparte — la misma razón por la que el cálculo de facturas y la resolución de hallazgos quedan fuera de la superficie de herramientas. Ambos viven en el panel.

Control de acceso: ambas lecturas requieren attribution_reports, que es gratuito desde P2.6.

Interacciones (actuals) — clave de desarrollador

El mismo dinero a nivel de tarea. Una llamada, SMS o trabajo con cada tramo de proveedor unido en una sola fila — el nivel que sabe cuánto duró el trabajo y, por tanto, el único que puede expresar el costo por minuto. Registrado bajo el grupo actuals, junto a las lecturas por tramo anteriores.

HerramientaDescripción
list_interactionsUna fila por tarea: duración, proveedores involucrados, desglose por tipo de tramo y topKind que nombra el tipo más caro. order_by="cost" da la lista de valores atípicos — las llamadas que se comen el margen
get_interactionUna tarea abierta — cada tramo en orden temporal con proveedor, tipo de tramo, unidades tipadas, fuente de captura, estado y costo, más los identificadores con los que se unieron los tramos
get_interaction_cost_rollupCosto de tarea por cliente, campaña, agente, canal, resultado o tipo de tarea, con costo por minuto por fila

Resultados (outcomes) — clave de agente para emitir, clave de desarrollador para leer

Lo que produjo una tarea, vinculado a la llamada en la que están sus costos. Unido al costo de esa llamada, esto es lo que convierte el costo por resultado en un número en lugar de una estimación.

HerramientaDescripción
emit_outcomeClave de agente. Reporta un resultado facturable contra un id de tarea; Floe lo resuelve a la llamada y vincula la reclamación allí. Un id de tarea que no nombra ninguna llamada se rechaza en lugar de almacenarse sin vincular
list_outcomesEncuentra reclamaciones por la llamada — tarea, interacción, cliente, campaña, tipo, estado, fuente. Solo cabezas de cadena; una reclamación que no puede vincularse devuelve una razón en lugar de descartarse
get_outcomeUna reclamación con la cadena que corrigió. Nombrar cualquier evento en una cadena responde con la cabeza actual e informa isHead, de modo que un id guardado antes de una confirmación aún se resuelve

Una clave de agente solo puede reportar. No hay argumento status en emit_outcome: confirmar una reclamación, anularla, revertirla y resolver una colisión son actos de operador en la superficie de desarrollador, porque mueven dinero y la evidencia que los justifica llega a ese backend mucho después de la llamada. Esos veredictos están deliberadamente no expuestos por MCP.

Por qué la reversión queda fuera de MCP. Revertir un resultado facturado escribe una línea de crédito en el siguiente estado de cuenta del cliente. Es una decisión de un operador humano, no algo que un agente deba tomar, y se sitúa junto a las escrituras de tarjeta de tarifas, que MCP tampoco expone. Los operadores revierten desde el panel, la API de desarrollador (POST /v1/developer/outcomes/{eventId}/reverse) o la CLI (floe outcomes reverse).

Tres tipos pueden tener precio. resolution, meeting_booked y qualified_lead son unidades de tarjeta de tarifas: una reclamación confirmada de uno de esos tipos se factura en el período en que se confirmó. Cualquier otro tipo sigue siendo texto libre: registrado y legible, nunca facturado.

Documentación (docs) — sin clave

HerramientaDescripción
search_floe_docsBusca en el índice de documentación de Floe (llms.txt) — títulos, URLs, descripciones

Herramientas de lectura (lending)

HerramientaDescripción
get_marketsLista mercados de préstamo activos con tasas y liquidez (sin clave)
get_open_lend_intentsExplora ofertas de préstamo disponibles para pedir prestado contra ellas
get_open_borrow_intentsExplora solicitudes de préstamo de prestatarios que buscan prestamistas
get_intent_detailsObtén detalles completos de una intención específica por hash
get_loanObtén detalles de préstamo por ID numérico
get_user_loansObtén todos los préstamos de una billetera (prestatario + prestamista)
get_loan_healthVerifica LTV del préstamo, estado de salud, riesgo de liquidación
get_token_pricePrecio de oráculo actual para tokens de garantía
get_wallet_balanceSaldos de tokens de una billetera
get_accrued_interestInterés acumulado en un préstamo

Herramientas de escritura (lending, devuelven transacciones sin firmar)

HerramientaDescripción
create_lend_intentCrea una oferta de préstamo
create_borrow_intentCrea una solicitud de préstamo
create_counter_intentAcepta una oferta existente (el solucionador empareja automáticamente)
repay_loanPaga un préstamo con protección contra deslizamiento
add_collateralAñade garantía para mejorar la salud del préstamo
withdraw_collateralRetira garantía excedente
liquidate_loanLiquida un préstamo no saludable
revoke_intentCancela una intención activa
approve_tokenAprueba el gasto de tokens para el protocolo

Herramientas de análisis (lending)

HerramientaDescripción
check_compatibilityVerifica si dos intenciones pueden coincidir
calculate_riskMétricas de riesgo: LTV, precio de liquidación, margen
estimate_interestEstimación de interés para términos de préstamo dados

Herramientas de utilidad (lending)

HerramientaDescripción
simulate_transactionEjecución de prueba de una transacción (eth_call)
broadcast_transactionEnvía una transacción firmada
get_transaction_statusVerifica el recibo de una transacción

Herramientas de conciencia de agente (spend) ⭐

Permite que un agente responda "¿tengo crédito?", "¿vale la pena esta llamada?" y "¿dónde estoy en el ciclo de vida del préstamo?" antes de comprometer capital. Todas requieren una clave de API de agente (floe_*). La identidad que llama se toma del encabezado Bearer en modo HTTP, o de FLOE_API_KEY en modo stdio.

HerramientaDescripción
get_credit_remainingCrédito disponible actual, margen para auto-préstamo, utilización en puntos base
get_loan_stateEstado general: idle | borrowing | at_limit | repaying
get_spend_limitLímite de gasto de sesión activo actual, si existe
set_spend_limitEstablece un tope de USDC a nivel de sesión (reinicia la ventana de sesión)
clear_spend_limitElimina el límite de gasto de sesión
list_credit_thresholdsLista umbrales de utilización de crédito registrados
register_credit_thresholdRegistra un disparador de webhook en un umbral de utilización (máx.: 20 por agente)
delete_credit_thresholdElimina un umbral registrado
get_agent_reputationPuntaje de crédito 0–100, banda y multiplicador de garantía para el agente que llama

Herramientas de lista blanca de comerciantes (spend)

Restricción opcional, denegación por defecto sobre qué destinos puede pagar el agente. Una entrada de lista blanca es una fila de política con tope ordinaria que funciona como "permitido Y con tope". Modo predeterminado off = permitir cualquier proveedor (cero fricción de incorporación). Todas requieren una clave de API de agente (floe_*).

HerramientaDescripción
set_allowlist_modeEstablece la aplicación: off | host (bloquear hosts no listados antes de la obtención) | vendor (bloquear beneficiarios no listados antes de firmar) | both
get_allowlist_modeLee el modo de aplicación actual del agente
add_allowlist_entryAñade una entrada permitida-Y-con-tope — kind=api (host) o kind=vendor (beneficiario), con un tope de gasto limit_raw
remove_allowlist_entryRevoca una entrada de lista blanca por id de política (de list_allowlist)
list_allowlistLista entradas de lista blanca de host (api) y beneficiario (vendor) con sus topes

Herramientas de puerta de enlace de inferencia (pricing)

HerramientaDescripción
list_modelsCatálogo de modelos compatible con OpenAI para Floe Inference (texto/incrustaciones/TTS/STT/tiempo real)
estimate_inference_costCotiza una llamada de inferencia desde un vector de uso sin realizarla

Habilidad de conciencia de presupuesto

Las habilidades de agente de Floe viven en su propio repositorio: Floe-Labs/agent-skills.

La habilidad floe es el manual que convierte las herramientas MCP anteriores en comportamiento de gasto deliberado: lee el estado del presupuesto antes de pagar, reduce a medida que se acerca al tope más estricto, replanifica para terminar la tarea dentro del presupuesto y se detiene antes del techo. Lee el estado de las herramientas existentes get_credit_remaining, get_spend_limit, estimate_x402_cost y get_loan_state, más el encabezado X-Floe-Budget-Advisory que el proxy x402 de Floe estampa en las respuestas pagadas — sin nueva herramienta ni backend requerido.

Señal suave, no la barrera de protección. La habilidad ayuda a un agente cooperativo a gastar con sensatez. El techo real se aplica en el lado del servidor — la línea de crédito en cadena, el tope de gasto de sesión y (si está configurada) la lista blanca de comerciantes rechazan llamadas más allá del límite independientemente de lo que decida el agente.

Instalación:

npx skills add floe-labs/agent-skills          # skills.sh CLI
# or manually:
git clone https://github.com/floe-labs/agent-skills
cp -r agent-skills/skills/floe ~/.claude/skills/   # or .claude/skills/ per-project

Flujo de transacciones

Todas las herramientas de escritura devuelven transacciones sin firmar — el servidor nunca tiene claves privadas.

1. Call a write tool (e.g., create_counter_intent)
   → Returns { transactions: [...], summary, warnings, expiresAt }

2. (Optional) Call simulate_transaction to dry-run

3. Sign each transaction locally with your wallet

4. Call broadcast_transaction with the signed hex
   → Returns { transactionHash, status, blockNumber }

Ejemplo: Obtener una línea de crédito USDC

Agent: "I need 9,950 USDC working capital"

1. get_open_lend_intents → browse USDC/USDC offers
2. create_counter_intent(offer_hash, wallet) → unsigned txs
3. simulate_transaction(from, to, data) → { success: true, gasEstimate }
4. Sign locally → signed hex
5. broadcast_transaction(signed_hex) → confirmed

Firma con viem

import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";

const wallet = createWalletClient({
  account: privateKeyToAccount(PRIVATE_KEY),
  chain: base,
  transport: http(),
});

// Sign and send each transaction in order
for (const { transaction: tx } of response.transactions) {
  const hash = await wallet.sendTransaction({
    to: tx.to,
    data: tx.data,
    value: BigInt(tx.value),
  });
  // Wait for confirmation before next step
}

Uso programático

SDK de cliente MCP

import { Client } from "@modelcontextprotocol/sdk/client";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const client = new Client({ name: "my-agent" });
await client.connect(new StreamableHTTPClientTransport(
  new URL("https://mcp.floelabs.xyz/mcp"),
  { requestInit: { headers: { "Authorization": "Bearer floe_..." } } }
));

const markets = await client.callTool("get_markets", {});
const counter = await client.callTool("create_counter_intent", {
  offer_hash: "0x...",
  wallet_address: "0x...",
});

LangChain / LangGraph

from langchain_mcp_adapters import MultiServerMCPClient

async with MultiServerMCPClient({
    "floe": {"url": "https://mcp.floelabs.xyz/mcp", "headers": {"Authorization": "Bearer floe_..."}}
}) as client:
    tools = client.get_tools()
    # Use tools in your agent

CrewAI

Los agentes de CrewAI pueden consumir las herramientas MCP de Floe mediante langchain-mcp-adapters. Un crew ejecutable está disponible en floe-cookbook/crewai-demo.


Arquitectura

Your Agent → MCP Server → credit-api.floelabs.xyz → Envio Indexer / Base RPC
                ↑                    ↑
           This package         Private backend
          (open source)        (holds secrets)

El servidor MCP es un cliente HTTP ligero. Toda la lógica de protocolo, consultas de indexador y llamadas RPC ocurren en el backend privado de la API de Floe. Este paquete contiene solo definiciones de herramientas y llamadas fetch().


Protocolo de préstamo (avanzado)

Floe es la capa de gasto para agentes de IA — una clave que paga cualquier API de proveedor bajo presupuestos programables (todo lo anterior). También expone una capa de préstamo avanzada, nativa de cripto y basada en intenciones en Base, para agentes que quieren capital de trabajo contra depósitos:

  1. Mercado primario (USDC/USDC): Deposita USDC como garantía y pide prestado hasta el 99.5% como línea de crédito. Sin riesgo de volatilidad de precios: mercado del mismo token.
  2. Mercados volátiles: También admite garantías de WETH y cbBTC para casos de uso nativos de cripto.
  3. Solvers emparejan automáticamente pares de intenciones compatibles en cadena.
  4. Préstamos se crean con términos coincidentes, con la garantía bloqueada en un depósito de garantía aislado por préstamo.
  5. Sin gas: Floe patrocina todos los costos de transacción.
  6. Tasas fijas: sin sorpresas de tasas variables.

Conceptos clave:

  • Intención: Una oferta en cadena para prestar o pedir prestado
  • Contra-intención: Una intención creada para coincidir con una oferta existente
  • Factor de salud: Relación entre el valor de la garantía y la deuda; por debajo del umbral se activa la liquidación
  • LTV (Préstamo sobre valor): Deuda del prestatario como porcentaje del valor de la garantía

Direcciones de contratos (Base Mainnet)

ContratoDirección
LendingIntentMatcher0x17946cD3e180f82e632805e5549EC913330Bb175
PriceOracle0xEA058a06b54dce078567f9aa4dBBE82a100210Cc
LendingViews0x9101027166bE205105a9E0c68d6F14f21f6c5003
x402 Facilitator0x58EDdE022FFDAD3Fb0Fb0E7D51eb05AaF66a31f1

Enlaces

Licencia

MIT