Metalend

Explora, deposita, retira y rebalancea posiciones de stablecoins en Aave, Morpho y Euler. Realiza un seguimiento de rendimientos, saldos, recompensas y configuraciones del rebalanceador en todas las principales cadenas EVM.

Documentación

Primeros pasos

Este endpoint expone el rebalanceador de MetaLend como herramientas MCP: las mismas herramientas de solo lectura para descubrimiento que /mcp/readonly, más el flujo completo de escritura: depósitos, retiros y actualizaciones de configuración del rebalanceador. Las herramientas de descubrimiento no requieren autenticación; los flujos de escritura requieren un JWT de wallet y una firma que tú mismo produces. Este servidor nunca guarda una clave privada.

Endpoint https://mcp.metalend.tech/mcp

Instalación

Claude Code

Añade MetaLend como servidor MCP remoto directamente desde la CLI.

claude mcp add --transport http metalend https://mcp.metalend.tech/mcp

Elige "Sin autenticación" a nivel de conector: el JWT de wallet usado por las herramientas de escritura se pasa como argumento de herramienta (ver Autenticación), no se configura en el conector.

Claude Desktop

Añade MetaLend como conector personalizado desde la configuración de Claude.

  1. Abre Personalizar → Conectores, haz clic en + y luego en Añadir conector personalizado
  2. Pega la URL de abajo y haz clic en Añadir
https://mcp.metalend.tech/mcp

Los propietarios de Team y Enterprise usan Configuración de organización → Conectores → Añadir → Personalizado → Web.

Cursor

Registra MetaLend como servidor MCP remoto en tu configuración de Cursor.

  1. Abre (o crea) ~/.cursor/mcp.json
  2. Añade el bloque de abajo y luego recarga Cursor
{
  "mcpServers": {
    "metalend": {
      "url": "https://mcp.metalend.tech/mcp"
    }
  }
}

ChatGPT

Conecta MetaLend como conector MCP personalizado en modo Desarrollador.

  1. Activa el modo Desarrollador (las etiquetas del menú varían según el despliegue: busca en Configuración → Apps y conectores → Configuración avanzada, o Configuración → Plugins)
  2. Haz clic en Explorar plugins (o Conectores) → + para añadir un nuevo conector y pega la URL de abajo como URL del servidor MCP
  3. Para Autenticación, elige "Sin autenticación": el servidor MCP de MetaLend no requiere un token proporcionado por el cliente
https://mcp.metalend.tech/mcp

El modo Desarrollador es una versión beta de ChatGPT que aún se está implementando, por lo que la ubicación exacta del interruptor y la disponibilidad según el plan pueden variar: revisa tu propia Configuración si aún no lo ves.

Autenticación

Las herramientas de descubrimiento (listados de pools, saldos, configuración, recompensas, costos) no requieren autenticación: pasa un walletAddress y lee. Cada flujo de escritura (depósito, retiro, actualización de configuración) además necesita un JWT de wallet:

  1. Llama a get_auth_challenge con el walletAddress para obtener un mensaje message de Sign-In-With-Ethereum.
  2. Firma ese mensaje con el firmante propio de la wallet usando personal_sign (EIP-191). Este servidor nunca ve una clave privada: tú firmas, él retransmite.
  3. Llama a submit_auth_verify con la firma para intercambiarla por un jwt.
  4. Pasa ese jwt explícitamente en cada llamada a submit_deposit / submit_withdrawal / submit_config para esa misma wallet. Nunca se almacena en caché en el servidor.

El jwt es una credencial de portador de larga duración: se emite con una vida útil aproximada de 115 días (el expiresAt de la respuesta, decodificado desde la propia declaración exp del token, es el valor autoritativo). No lo trates como un token efímero por solicitud ni vuelvas a ejecutar el flujo SIWE antes de cada llamada: guárdalo, protégelo como una contraseña (cualquiera que lo tenga puede enviar escrituras para esa wallet hasta que expire) y reutiliza el mismo jwt en cada llamada de escritura para esa wallet hasta que pase expiresAt.

Un jwt solo es válido para el walletAddress exacto que produjo la firma: un par jwt / walletAddress que no coincida se rechaza con un 403. Para una wallet de contrato inteligente, las firmas SIWE, de retiro y de configuración están limitadas por cadena (ERC-1271 / ERC-6492): la wallet debe tener un firmante válido en las cadenas relevantes, y prepare_config en particular puede requerir todas sus cadenas domainIds a la vez. Las firmas de depósito aceptan solo una firma ECDSA cruda estilo EOA: una wallet de contrato inteligente debe usar prepare_deposit 's method: "approval" en su lugar.

Flujo de escritura

Los depósitos, retiros y actualizaciones de configuración siguen todos la misma forma de dos pasos: prepare_* y luego submit_*. Este servidor nunca guarda una clave privada.

  1. prepare_* calcula todo (datos tipados EIP-712, un hash de firma de configuración o parámetros approve() en cadena), ejecuta todas las comprobaciones previas que puede: mínimos de cadena, liquidez del pool, invariantes de pools financiados — y devuelve los bytes exactos a firmar. Nunca firma ni mueve fondos.
  2. Tú firmas la carga devuelta con el firmante propio de la wallet.
  3. submit_* toma la firma que produjiste más tu jwt y la retransmite aguas arriba. Este es el paso que mueve fondos o cambia la configuración. submit_deposit y submit_withdrawal devuelven un trackingId para consultar con get_deposit_status / get_withdrawal_status; submit_config no tiene ID de seguimiento ni sondeo de estado: confirma una actualización de configuración incierta releyendo get_config.

Los depósitos basados en aprobación (USDT, RLUSD, USDG, USDE o cualquier token de una wallet de contrato inteligente) omiten la firma por completo: prepare_deposit devuelve parámetros approve() que tu wallet transmite en cadena por sí misma, y luego se llama a submit_deposit sin campos de firma.

Después de un depósito, consulta get_deposit_status; después de un retiro, get_withdrawal_status. Un depósito que alcanza BRIDGING está efectivamente terminado: los fondos están cruzando cadenas vía CCTP y no deberías seguir consultando para que el puente en sí termine. Una actualización de configuración no tiene sondeo: si submit_config expira o su resultado no está claro, revisa get_config para ver si se aplicó.

Límites de velocidad

Cada herramienta tiene su propio límite por minuto y un espaciado mínimo entre llamadas individuales (una "compuerta de ráfaga"), limitado por IP del llamante: consulta la línea de especificación de cada herramienta abajo para sus cifras exactas. Una llamada limitada devuelve un resultado de herramienta normal con isError: true y un mensaje que indica cuántos segundos esperar antes de reintentar, no un estado de error HTTP, para que un cliente bien comportado pueda leer la razón directamente en lugar de ver una falla de transporte desnuda.

Herramientas

list_pools

Listar pools del rebalanceador

solo lectura 20 llamadas/min 1 llamada / 3s

Lista todos los pools en los que el rebalanceador de MetaLend puede depositar: protocolo (Aave, Morpho, Euler), cadena, desglose de APY (nativo/recompensas/neto/después de comisiones), TVL, liquidez y el signData (protocolId, poolAddress, domainId) que identifica cada pool. No devuelve los saldos ni la configuración de una wallet: usa get_balances / get_config para eso. Filtra los pools donde blacklisted sea verdadero.

Sin parámetros.

get_balances

Obtener saldos del rebalanceador

solo lectura 5 llamadas/min 1 llamada / 12s

Obtiene los saldos desplegados del rebalanceador de una wallet desglosados por token, por cadena y por protocolo/pool, incluyendo ganancias netas y APY combinado. Falla si la wallet aún no tiene rebalanceador: usa get_default_config para ver cómo se vería una configuración inicial.

ParámetroTipoDescripción
walletAddressstringobligatorioDirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier mayúscula/minúscula.
tokensstringopcionalSímbolos de token separados por comas para restringir (p. ej. USDC,USDT). Omite para todos los tokens compatibles.

get_bridge_balances

Obtener saldos de puente

solo lectura 20 llamadas/min 1 llamada / 3s

Obtiene los saldos de puente USDC en tránsito de una wallet (fondos cruzando cadenas hacia un pool de destino), incluyendo el tiempo estimado de finalización. No incluye los saldos del rebalanceador ya liquidados: usa get_balances para esos. Solo aplica a USDC.

ParámetroTipoDescripción
walletAddressstringobligatorioDirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier mayúscula/minúscula.

get_config

Obtener configuración del rebalanceador

solo lectura 20 llamadas/min 1 llamada / 3s

Obtiene la configuración actual del rebalanceador de una wallet por token: qué protocolos/pools/cadenas están habilitados, frecuencia de rebalanceo, depósitos/retiros/comisiones de por vida y límite de gasto. También devuelve rebalancerAddress y rebalancingManagerAddress. No devuelve saldos en vivo: usa get_balances para eso.

ParámetroTipoDescripción
walletAddressstringobligatorioDirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier mayúscula/minúscula.

get_default_config

Obtener configuración predeterminada del rebalanceador para un token

solo lectura 20 llamadas/min 1 llamada / 3s

Obtiene la configuración predeterminada recomendada por MetaLend para un símbolo de token dado: rebalancingManagerAddress más protocolIds/poolAddresses/domainIds recomendados. Pensada para wallets sin configuración existente: para la configuración actual de una wallet existente usa get_config en su lugar.

ParámetroTipoDescripción
tokenstringobligatorioSímbolo de token, p. ej. USDC, USDT, MUSD, RLUSD, USDG, USDE, PYUSD.

get_rewards

Obtener recompensas del rebalanceador

solo lectura 20 llamadas/min 1 llamada / 3s

Obtiene las recompensas/ganancias agregadas de una wallet en todas las fuentes de recompensas, incluyendo totales en USD reclamados/disponibles. No incluye las ganancias base de rendimiento/APY del rebalanceador: esas están en el campo get_balances ' netEarning.

ParámetroTipoDescripción
walletAddressstringobligatorioDirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier mayúscula/minúscula.
reloadChainstringopcionalNombre de cadena para forzar una recarga nueva (p. ej. BASE). Omite para usar datos en caché.

get_transaction_costs

Obtener costos de transacción

solo lectura 20 llamadas/min 1 llamada / 3s

Obtiene los costos de gas constantes de depósito/retiro en nombre del usuario y los montos mínimos de depósito/retiro para un token, desglosados por cadena compatible. Verifica un monto de depósito/retiro contra el mínimo de la cadena antes de prepararlo.

ParámetroTipoDescripción
tokenstringobligatorioSímbolo de token, p. ej. USDC, USDT, MUSD, RLUSD, USDG, USDE, PYUSD.

get_token_info

Obtener información del token

solo lectura 6 llamadas/min 1 llamada / 10s

Obtiene los metadatos en cadena de un token (nombre mostrado, decimales, versión EIP-712) para una cadena dada. También se usa para resolver los decimales en los que se expresa un amount crudo.

ParámetroTipoDescripción
tokenstringobligatorioSímbolo de token, p. ej. USDC, USDT, MUSD, RLUSD, USDG, USDE, PYUSD.
chainstringobligatorioNombre de cadena, p. ej. BASE, ETHEREUM, POLYGON.

get_auth_challenge

Obtener desafío de autenticación SIWE

escritura 10 llamadas/min 1 llamada / 6s

Obtiene un mensaje de desafío Sign-In-With-Ethereum para una wallet, requerido antes de cualquier depósito, retiro o actualización de configuración. Firma el message devuelto con personal_sign (EIP-191) usando el firmante propio de la wallet y luego pásalo a submit_auth_verify. No autentica nada por sí mismo. Las llamadas repetidas para la misma wallet dentro de unos minutos devuelven el mismo mensaje, no uno nuevo: el backend mantiene solo un desafío pendiente por wallet, y reemitirlo invalidaría lo que un llamante anterior esté a punto de firmar.

ParámetroTipoDescripción
walletAddressstringobligatorioDirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier mayúscula/minúscula.
chainstringopcionalSolo cosmético: se muestra como la línea "Chain ID:" en el texto del mensaje SIWE y no necesita coincidir con la cadena pasada a submit_auth_verify. El valor predeterminado es ETHEREUM.

submit_auth_verify

Verificar firma SIWE y obtener un JWT

escritura 5 llamadas/min 1 llamada / 12s

Intercambia un desafío SIWE firmado (de get_auth_challenge) por un jwt limitado a esa wallet. Pasa el jwt explícitamente como argumento jwt a submit_deposit / submit_withdrawal / submit_config para esa misma wallet: este servidor nunca lo almacena. El token es de larga duración (emitido con una vida útil aproximada de 115 días; el expiresAt de la respuesta, decodificado desde la propia declaración exp del JWT, es autoritativo), así que guárdalo y protégelo como una credencial de portador y reutiliza el mismo en cada llamada de escritura para esa wallet hasta que pase expiresAt en lugar de volver a ejecutar este flujo. Un jwt usado para la llamada de escritura de una wallet diferente se rechaza con un 403.

ParámetroTipoDescripción
walletAddressstringrequeridoDirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier formato de mayúsculas/minúsculas.
signaturestringrequeridoFirma personal_sign del mensaje SIWE de get_auth_challenge.
chainstringopcionalPara una EOA esto es irrelevante (la recuperación es agnóstica a la cadena). Para una wallet de contrato inteligente DEBE ser la cadena en la que tiene (o tendría, mediante despliegue contrafactual ERC-6492) un firmante válido — determina qué RPC de cadena valida la firma (ERC-1271/6492). Por defecto es ETHEREUM.

prepare_deposit

Preparar un depósito

solo lectura 6 llamadas/min 1 llamada / 10s

Construye todo lo necesario para depositar en el rebalanceador, sin firmar. Los tokens sin gas (USDC, MUSD, PYUSD) obtienen un payload EIP-712 ReceiveWithAuthorization para firmar; los tokens solo con aprobación (USDT, RLUSD, USDG, USDE) — y cualquier wallet de contrato inteligente, para cualquier token — obtienen parámetros on-chain approve() en su lugar, que tu wallet debe transmitir por sí misma (este servidor no tiene acceso RPC). Requiere una configuración de rebalanceador firmada para el token (ejecuta prepare_config / submit_config primero si get_config no muestra ninguna) y valida el monto contra el mínimo de la cadena antes de devolver cualquier cosa. Se deduce una tarifa fija de gas en nombre del usuario antes de que el rebalanceador acredite el depósito — expectedCreditedAmountRaw en la respuesta es lo que realmente aparece en get_balances, no el amount completo.

ParámetroTipoDescripción
chainstringrequeridoCadena de origen del depósito: donde se transmite approve(), o la cadena en la que la firma EIP-712 debe validarse. No es donde el rebalanceador invierte finalmente los fondos.
tokenstringrequeridoSímbolo del token, p. ej. USDC, USDT, MUSD, RLUSD, USDG, USDE, PYUSD.
walletAddressstringrequeridoDirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier formato de mayúsculas/minúsculas.
amountstringrequeridoMonto bruto del token como cadena de dígitos decimales (denominación más pequeña). Usa get_token_info para decimales.
method"signature" | "approval"opcionalFuerza un flujo. Por defecto es signature para tokens elegibles sin gas, si no approval. Una wallet de contrato inteligente debe pasar approval — el flujo de firma rechaza firmas de wallets inteligentes (incluida ERC-6492) directamente.

submit_deposit

Enviar un depósito

escritura 10 llamadas/min 1 llamada / 6s

Envía un depósito — mueve fondos. Requiere un jwt de submit_auth_verify para este walletAddress, y ya sea un signature (de la salida de firma de prepare_deposit) o, para depósitos basados en aprobación, ninguna firma una vez que tu wallet haya transmitido la transacción approve() on-chain. Siempre llama a prepare_deposit primero — esta herramienta no valida montos ni resuelve direcciones. Devuelve un trackingId para get_deposit_status. Los seis campos de firma deben proporcionarse todos juntos o ninguno. La firma debe ser una firma ECDSA bruta de 65 bytes — las firmas de wallets inteligentes / ERC-6492 se rechazan; usa el método de aprobación en su lugar.

ParámetroTipoDescripción
jwtstringrequeridoJWT de submit_auth_verify para este walletAddress.
chainstringrequeridoMismo valor pasado a prepare_deposit.
tokenstringrequeridoSímbolo del token.
walletAddressstringrequeridoDirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier formato de mayúsculas/minúsculas.
amountstringrequeridoMonto bruto del token, igual que el pasado a prepare_deposit.
validAfterstringopcionalDe la salida del método de firma de prepare_deposit. Omitir para depósitos basados en aprobación.
validBeforestringopcionalDe la salida del método de firma de prepare_deposit. Omitir para depósitos basados en aprobación.
noncestringopcionalDe la salida del método de firma de prepare_deposit. Omitir para depósitos basados en aprobación.
signaturestringopcionalFirma ECDSA bruta de 65 bytes sobre prepare_deposit de typedData. Omitir para depósitos basados en aprobación.
tokenNamestringopcionalDe la salida del método de firma de prepare_deposit. Omitir para depósitos basados en aprobación.
tokenVersionstringopcionalDe la salida del método de firma de prepare_deposit. Omitir para depósitos basados en aprobación.

get_deposit_status

Obtener estado del depósito

solo lectura 20 llamadas/min 1 llamada / 3s

Consulta un depósito por trackingId (de submit_deposit). status es uno de: PROCESSING — aún confirmando on-chain, sigue consultando; BRIDGING — aceptado, fondos cruzando cadenas vía CCTP (normalmente 20–30 min), trátalo como completado y deja de consultar; SUCCESS — terminal, completamente completado; FAILED — terminal, no se realizó; EMERGENCY_WITHDRAW — terminal pero no exitoso: el pool de destino no pudo aceptar los fondos después del puente, por lo que se enviaron de vuelta a tu propia dirección de wallet (no perdidos, no atascados).

ParámetroTipoDescripción
trackingIdstringrequeridotrackingId devuelto por submit_deposit.

prepare_withdrawal

Preparar un retiro

solo lectura 5 llamadas/min 1 llamada / 12s

Construye el payload de datos tipados EIP-712 para firmar al retirar de un pool específico, sin firmar. Busca el withdrawRequest exacto de tus saldos actuales, completa el monto y una fecha límite de corta duración, y lo devuelve listo para firmar. Omite amount (o pasa "MAX") para retirar todo el saldo del pool — esto usa la convención maxUint256, evitando fallos por saldo obsoleto/redondeo. Se niega a construir typedData cuando la liquidez viva del pool no supera el monto, o cuando el monto está por debajo del mínimo de la cadena. Se deduce una tarifa fija de gas en nombre del usuario — expectedReceivedAmountRaw es lo que realmente llega.

ParámetroTipoDescripción
walletAddressstringrequeridoDirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier formato de mayúsculas/minúsculas.
chainstringrequeridoNecesario para desambiguar — la misma dirección de contrato de pool puede existir en varias cadenas.
tokenstringrequeridoSímbolo del token — algunas direcciones de pool sirven a múltiples tokens.
poolContractstringrequeridoDirección del contrato del pool, de get_balances de perPool[].poolAddress.
amountstringopcionalMonto bruto a retirar. Omite o pasa "MAX" para un retiro completo (usa maxUint256).

submit_withdrawal

Enviar un retiro

escritura 20 llamadas/min 1 llamada / 3s

Envía un retiro — mueve fondos. Requiere un jwt de submit_auth_verify para este walletAddress y un signature sobre prepare_withdrawal de typedData. Siempre llama a prepare_withdrawal primero — esta herramienta no busca datos de pool ni valida montos. El dominio EIP-712 de la firma está limitado a este único chain: una wallet de contrato inteligente debe tener un firmante válido en esa cadena exacta (una EOA es agnóstica a la cadena). Devuelve un trackingId para get_withdrawal_status.

ParámetroTipoDescripción
jwtstringrequeridoJWT de submit_auth_verify para este walletAddress.
chainstringrequeridoDe la salida de prepare_withdrawal.
tokenstringrequeridoSímbolo del token.
walletAddressstringrequeridoDirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier formato de mayúsculas/minúsculas.
amountstringrequeridoDe la salida de prepare_withdrawal.
deadlinestringrequeridoDe la salida de prepare_withdrawal.
signaturestringrequeridoFirma sobre prepare_withdrawal de typedData.
poolContractstringrequeridoDirección del contrato del pool, igual que la pasada a prepare_withdrawal.

get_withdrawal_status

Obtener estado del retiro

solo lectura 20 llamadas/min 1 llamada / 3s

Consulta un retiro por trackingId (de submit_withdrawal). status es uno de: PROCESSING — aún en progreso, sigue consultando (los retiros no tienen tramo de puente entre cadenas); SUCCESS — terminal, completado; FAILED — terminal, no se realizó.

ParámetroTipoDescripción
trackingIdstringrequeridotrackingId devuelto por submit_withdrawal.

get_withdrawal_version

Obtener versión del contrato de retiro

solo lectura 10 llamadas/min 1 llamada / 6s

Obtiene la cadena de versión de firma del contrato requerida para los datos de dominio EIP-712 usados al firmar un retiro. Rara vez cambia; seguro de almacenar en caché en el lado del cliente.

Sin parámetros.

prepare_config

Preparar una actualización de configuración del rebalanceador

solo lectura 5 llamadas/min 1 llamada / 12s

Construye el hash de firma para actualizar la configuración del rebalanceador de una wallet (qué pools/protocolos/cadenas puede usar para mover fondos), sin firmar. Firma el hashToSign devuelto con personal_sign sobre sus 32 bytes brutos (no el texto UTF-8 de la cadena hex) y pasa la firma a submit_config. Se niega a construir un hash para una configuración que eliminaría un pool en el que aún mantienes un saldo distinto de cero (retira primero), un spendingCapRaw inválido, o cualquier tupla (domainId, protocolId, poolAddress) que no coincida con un pool real en el catálogo actual. Para una wallet de contrato inteligente, la misma firma debe verificarse de forma independiente en cada cadena nombrada en domainIds; una EOA no se ve afectada. Al reconfigurar una wallet que ya tiene una configuración firmada, traslada todos los campos de get_config a menos que deliberadamente quieras cambiarlos — omitir includeRewardsApy, requiredTvl, requiredLiquidityMultiplier, collateralExposure o spendingCapRaw no preserva el valor actual, sino que restablece silenciosamente ese filtro.

ParámetroTipoDescripción
walletAddressstringrequeridoDirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier formato de mayúsculas/minúsculas.
tokenstringrequeridoSímbolo del token al que se aplica esta configuración.
protocolIdsnumber[]requerido0=Aave, 1=Morpho, 2=Euler. Una entrada por cada entrada de poolAddresses / domainIds, desde list_pools ' signData.protocolId.
poolAddressesstring[]requeridoDirecciones de contratos de pool a permitir, desde list_pools ' signData.poolAddress.
domainIdsnumber[]requeridoIDs de dominio de cadena, uno por cada entrada de poolAddresses, desde list_pools ' signData.domainId.
includeRewardsApybooleanopcionalSi el APY del token de recompensa cuenta para la comparación del mejor pool. El valor predeterminado es true. Al reconfigurar, copia el valor actual desde get_config — omitirlo lo restablece silenciosamente.
requiredTvlstringopcionalTVL mínimo del pool en USD para que un pool sea un objetivo de rebalanceo elegible. Omitirlo (predeterminado) no conserva el mínimo actual de la wallet — lo restablece silenciosamente a 0 (sin mínimo). Al reconfigurar, pasa el valor actual desde get_config.
requiredLiquidityMultiplierstringopcionalLa liquidez de un pool candidato debe ser al menos este múltiplo del monto del depósito (USD) para ser elegible. Omitirlo (predeterminado) lo restablece silenciosamente a 0 (sin margen); no conserva el valor actual — al reconfigurar, pasa el valor actual desde get_config.
collateralExposurestring[] | nullopcionalLista blanca de símbolos de colateral — se aplica solo a la selección de vaults de Morpho. null (predeterminado) lo desactiva; un array vacío es rechazado. Una lista no nula también requiere un pool de Aave en la configuración. Omitirlo desactiva silenciosamente el filtro, así que al reconfigurar, pasa el valor actual desde get_config.
spendingCapRawstring | nullopcionalUnidades brutas, solo USDC ("0" /null para cualquier otro token). Un valor distinto de cero establece el saldo objetivo que MetaLend mantiene recargado en Linea para una tarjeta vinculada; requiere el pool de Aave en Linea y un mínimo de 1000000 (1 USDC). Debe coincidir exactamente entre prepare_config y submit_config. Omitirlo restablece el límite a 0 (desactivado), así que al reconfigurar, pasa el valor actual desde get_config.

submit_config

Enviar una actualización de configuración del rebalanceador

escritura 10 llamadas/min 1 llamada / 6s

Envía una actualización de configuración del rebalanceador firmada. Requiere un jwt desde submit_auth_verify para este walletAddress y un signature sobre prepare_config 's hashToSign. Siempre llama a prepare_config primero — esta herramienta no calcula el hash ni verifica la invariante de saldo por sí misma. Reenvía los mismos campos de configuración que prepare_config: al reconfigurar, cada filtro opcional omitido (requiredTvl, requiredLiquidityMultiplier, collateralExposure, spendingCapRaw, includeRewardsApy) se restablece silenciosamente, no se conserva — lleva los valores actuales desde get_config. Puede devolver un 409 si hay un rebalanceo o depósito en curso para esta wallet+token (o, solo USDC, un reabastecimiento del límite de fondos) — no relacionado con la firma; espera y reintenta usando la pista de retryAfterSeconds. No hay ID de seguimiento ni sondeo de estado para una actualización de configuración — si esta llamada expira, vuelve a leer get_config para ver si se aplicó en lugar de asumir que no.

ParámetroTipoDescripción
jwtstringrequeridoJWT desde submit_auth_verify para este walletAddress.
walletAddressstringrequeridoDirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier formato de mayúsculas/minúsculas.
tokenstringrequeridoSímbolo del token, igual al pasado a prepare_config.
protocolIdsnumber[]requeridoMismo array pasado a prepare_config.
poolAddressesstring[]requeridoMismo array pasado a prepare_config.
domainIdsnumber[]requeridoMismo array pasado a prepare_config.
signaturestringrequeridoFirma sobre prepare_config 's hashToSign.
includeRewardsApybooleanopcionalMismo valor pasado a prepare_config.
requiredTvlstringopcionalMismo valor pasado a prepare_config.
requiredLiquidityMultiplierstringopcionalMismo valor pasado a prepare_config.
collateralExposurestring[] | nullopcionalMismo valor pasado a prepare_config.
spendingCapRawstring | nullopcionalMismo valor pasado a prepare_config — debe coincidir exactamente.