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
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:
| Ruta | Una línea |
|---|---|
| Agente — Claude Code / Cursor hace la configuración | pega: Read https://dev-dashboard.floelabs.xyz/agents.md and set up Floe for this project. |
| Skill — instala la skill de agente de Floe | npx 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ón | npx @floelabs/cli init |
NPM — el SDK + CLI floe-agent | npm 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
| Grupo | Herramientas | Para |
|---|---|---|
| Ejecución de pagos ⭐ | x402_pay (idempotente), x402_forecast, estimate_x402_cost, check_x402_url | pagar a cualquier proveedor x402 — con una verificación previa de costos primero |
| Ciclo de vida del agente | create_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_bounds | iniciar 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_limit | cada agente — razonar sobre el costo antes de pagar |
| Gobernanza del gasto | register_credit_threshold, list_credit_thresholds, delete_credit_threshold (webhooks) | gobernar + alertar sobre la utilización |
| Lista blanca de comerciantes | set_allowlist_mode, get_allowlist_mode, add_allowlist_entry, remove_allowlist_entry, list_allowlist | denegación por defecto sobre qué destinos puede pagar el agente |
| Financiamiento y observabilidad | get_funding_instructions, get_balances, get_activity, get_usage_summary, get_coverage_score | financiar agentes + observar el gasto de la flota + medir la cobertura de aplicación |
| Webhooks | create_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_delivery | notificaciones push para eventos de cuenta + el registro de entrega |
| Costos reales de proveedores | list_vendor_cost_legs, list_vendor_cost_calls, get_vendor_cost_rollup, list_reconciliation_findings, list_vendor_connections, verify_vendor_connection | lo que TUS propios proveedores te cobraron, conciliado con sus registros de facturación |
| Interacciones (por tarea) | list_interactions, get_interaction, get_interaction_cost_rollup | el 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_contract | lo 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_outcome | reportar 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ón | search_floe_docs (sin clave) | aprender la API de Floe sin salir de MCP |
| Wallet | get_wallet_balance, get_accrued_interest | saldos + estado |
| Utilidad | simulate_transaction, broadcast_transaction, get_transaction_status | ciclo de vida de transacciones |
| Protocolo de préstamos (avanzado) | 20+ herramientas de intención / colateral / liquidación | préstamos nativos cripto contra depósitos |
La referencia completa por herramienta está en Herramientas (88) abajo.
Clientes probados
| Cliente | Estado |
|---|---|
| Claude Desktop | GA |
| Claude Code | GA |
| Cursor | GA |
| Continue / Cline | Mejor esfuerzo |
CrewAI (vía langchain-mcp-adapters) | Beta |
| OpenAI Agents SDK | Preview (respaldo MCP mientras se lanza el adaptador nativo) |
| ElizaOS | Preview |
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:
| Transporte | Fuente 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 clave | Alcance | Desbloquea |
|---|---|---|
floe_<64-hex> (clave de agente) | Un agente específico | Tiempo 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 desarrollador | Ciclo 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:
- Ve a dev-dashboard.floelabs.xyz
- Conecta tu wallet y Crea un agente (nombre + límite de préstamo + tasa máxima)
- 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):
- Ve a dev-dashboard.floelabs.xyz/keys
- Haz clic en Crear clave, etiquétala, elige permisos de
readoread_write - 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
| Variable | Obligatorio | Predeterminado | Descripción |
|---|---|---|---|
FLOE_API_KEY | No (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_URL | No | https://credit-api.floelabs.xyz | Endpoint de API |
MCP_PORT | No | 3100 | Puerto del servidor HTTP (modo no stdio) |
MCP_HOST | No | 127.0.0.1 | Dirección de enlace HTTP; establece 0.0.0.0 para exponer más allá del loopback |
MCP_TRUSTED_ORIGINS | No | — | 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.
| Herramienta | Descripción |
|---|---|
x402_pay | Ejecuta 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_forecast | Pronó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_cost | Verificación previa de una URL x402 — devuelve el costo + reflexión contra tu crédito, sin pago |
check_x402_url | Sonda 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.
| Herramienta | Descripción |
|---|---|
create_agent | Aprovisiona 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_agents | Lista cada agente en la cuenta con estado y límites |
get_agent | Detalle de un agente: estado, dirección de depósito, crédito utilizado, actividad de 24h |
pause_agent | Suspende un agente (interruptor de apagado) — sus claves fallan la autenticación hasta que se reanude |
resume_agent | Reactiva un agente pausado |
close_agent | Cierra un agente de forma irreversible: paga préstamos, barre fondos, desactiva claves |
create_agent_key | Emite una clave de agente floe_... (texto plano una vez), opcionalmente con un presupuesto de gasto renovable |
rotate_agent_key | Revoca y re-emite atómicamente una clave (nuevo texto plano una vez) |
revoke_agent_key | Elimina una clave — las llamadas que la usan fallan inmediatamente |
set_agent_key_budget | Establece/actualiza un presupuesto renovable de cierre por fallo en una clave |
open_credit_line | Mejora un agente de pago por uso a una línea de crédito gestionada (colateral de su billetera) |
get_credit_line_bounds | Previsualiza rangos válidos de depósito/LTV antes de open_credit_line |
Financiamiento y observabilidad (observability) — clave de desarrollador
| Herramienta | Descripció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_balances | Agrega USDC entre la billetera del desarrollador, billeteras de agentes y créditos de API |
get_activity | Fuente de actividad unificada (llamadas proxy, onramps, transferencias, préstamos) con filtros + paginación por cursor |
get_usage_summary | Resumen de análisis de gasto/uso: KPIs, series diarias, endpoints principales |
get_coverage_score | Puntaje 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
| Herramienta | Descripción |
|---|---|
create_webhook | Registra 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_webhooks | Lista webhooks registrados (los secretos nunca se devuelven) |
list_webhook_events | El catálogo de eventos en vivo — 30 eventos en préstamo / agente / crédito / llamada / teléfono / mercado |
get_webhook | Un webhook + sus estadísticas de entrega (pendiente/éxito/fallido/reintentando/total) |
update_webhook | Cambia URL, eventos, descripción, o pausa/reanuda mediante active (el ámbito es inmutable) |
delete_webhook | Elimina un endpoint permanentemente |
test_webhook | Envía una entrega de prueba firmada para verificar la conectividad de extremo a extremo |
rotate_webhook_secret | Rota el secreto de firma (nuevo secreto mostrado una vez) |
list_webhook_deliveries | Registro 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_delivery | Una entrega completa: payload enviado, cuerpo de respuesta saneado, próximo tiempo de reintento |
retry_webhook_delivery | Reentrega 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:
| Estado | Significa | Nunca digas |
|---|---|---|
exact | reconciliado con el registro de facturación por solicitud del propio proveedor | — |
period-rate | valorado a la tarifa realizada del propio proveedor para ese período | "exacto", o cualquier cosa que implique precisión por solicitud |
invoiced | cotejado con la factura del proveedor | — |
pending | el proveedor aún no ha publicado este costo | cualquier cifra en dólares |
manual | ninguna API del proveedor publica esto — sube la factura | cualquier 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.
| Herramienta | Descripción |
|---|---|
list_vendor_cost_legs | Costo 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_calls | Resumen 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_rollup | Totales por customer, campaign, agent, vendor, o time (día UTC) |
list_reconciliation_findings | Todo 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_connections | Tus 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_connection | Re-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.
| Herramienta | Descripción |
|---|---|
list_interactions | Una 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_interaction | Una 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_rollup | Costo 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.
| Herramienta | Descripción |
|---|---|
list_contracts | El 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_contract | Un 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.
| Herramienta | Descripción |
|---|---|
list_interactions | Una 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_interaction | Una 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_rollup | Costo 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.
| Herramienta | Descripción |
|---|---|
emit_outcome | Clave 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_outcomes | Encuentra 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_outcome | Una 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
| Herramienta | Descripción |
|---|---|
search_floe_docs | Busca en el índice de documentación de Floe (llms.txt) — títulos, URLs, descripciones |
Herramientas de lectura (lending)
| Herramienta | Descripción |
|---|---|
get_markets | Lista mercados de préstamo activos con tasas y liquidez (sin clave) |
get_open_lend_intents | Explora ofertas de préstamo disponibles para pedir prestado contra ellas |
get_open_borrow_intents | Explora solicitudes de préstamo de prestatarios que buscan prestamistas |
get_intent_details | Obtén detalles completos de una intención específica por hash |
get_loan | Obtén detalles de préstamo por ID numérico |
get_user_loans | Obtén todos los préstamos de una billetera (prestatario + prestamista) |
get_loan_health | Verifica LTV del préstamo, estado de salud, riesgo de liquidación |
get_token_price | Precio de oráculo actual para tokens de garantía |
get_wallet_balance | Saldos de tokens de una billetera |
get_accrued_interest | Interés acumulado en un préstamo |
Herramientas de escritura (lending, devuelven transacciones sin firmar)
| Herramienta | Descripción |
|---|---|
create_lend_intent | Crea una oferta de préstamo |
create_borrow_intent | Crea una solicitud de préstamo |
create_counter_intent | Acepta una oferta existente (el solucionador empareja automáticamente) |
repay_loan | Paga un préstamo con protección contra deslizamiento |
add_collateral | Añade garantía para mejorar la salud del préstamo |
withdraw_collateral | Retira garantía excedente |
liquidate_loan | Liquida un préstamo no saludable |
revoke_intent | Cancela una intención activa |
approve_token | Aprueba el gasto de tokens para el protocolo |
Herramientas de análisis (lending)
| Herramienta | Descripción |
|---|---|
check_compatibility | Verifica si dos intenciones pueden coincidir |
calculate_risk | Métricas de riesgo: LTV, precio de liquidación, margen |
estimate_interest | Estimación de interés para términos de préstamo dados |
Herramientas de utilidad (lending)
| Herramienta | Descripción |
|---|---|
simulate_transaction | Ejecución de prueba de una transacción (eth_call) |
broadcast_transaction | Envía una transacción firmada |
get_transaction_status | Verifica 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.
| Herramienta | Descripción |
|---|---|
get_credit_remaining | Crédito disponible actual, margen para auto-préstamo, utilización en puntos base |
get_loan_state | Estado general: idle | borrowing | at_limit | repaying |
get_spend_limit | Límite de gasto de sesión activo actual, si existe |
set_spend_limit | Establece un tope de USDC a nivel de sesión (reinicia la ventana de sesión) |
clear_spend_limit | Elimina el límite de gasto de sesión |
list_credit_thresholds | Lista umbrales de utilización de crédito registrados |
register_credit_threshold | Registra un disparador de webhook en un umbral de utilización (máx.: 20 por agente) |
delete_credit_threshold | Elimina un umbral registrado |
get_agent_reputation | Puntaje 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_*).
| Herramienta | Descripción |
|---|---|
set_allowlist_mode | Establece 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_mode | Lee el modo de aplicación actual del agente |
add_allowlist_entry | Añade una entrada permitida-Y-con-tope — kind=api (host) o kind=vendor (beneficiario), con un tope de gasto limit_raw |
remove_allowlist_entry | Revoca una entrada de lista blanca por id de política (de list_allowlist) |
list_allowlist | Lista entradas de lista blanca de host (api) y beneficiario (vendor) con sus topes |
Herramientas de puerta de enlace de inferencia (pricing)
| Herramienta | Descripción |
|---|---|
list_models | Catálogo de modelos compatible con OpenAI para Floe Inference (texto/incrustaciones/TTS/STT/tiempo real) |
estimate_inference_cost | Cotiza 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:
- 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.
- Mercados volátiles: También admite garantías de WETH y cbBTC para casos de uso nativos de cripto.
- Solvers emparejan automáticamente pares de intenciones compatibles en cadena.
- Préstamos se crean con términos coincidentes, con la garantía bloqueada en un depósito de garantía aislado por préstamo.
- Sin gas: Floe patrocina todos los costos de transacción.
- 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)
| Contrato | Dirección |
|---|---|
| LendingIntentMatcher | 0x17946cD3e180f82e632805e5549EC913330Bb175 |
| PriceOracle | 0xEA058a06b54dce078567f9aa4dBBE82a100210Cc |
| LendingViews | 0x9101027166bE205105a9E0c68d6F14f21f6c5003 |
| x402 Facilitator | 0x58EDdE022FFDAD3Fb0Fb0E7D51eb05AaF66a31f1 |
Enlaces
- Sitio web
- Panel de control
- Documentación
- CLI de la plataforma (
@floelabs/cli) - SDK de TypeScript (
floe-agent) - SDK de Python (
floe-agentkit-actions) - Ejemplos de extremo a extremo
Licencia
MIT