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.
- Abre Personalizar → Conectores, haz clic en + y luego en Añadir conector personalizado
- 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.
- Abre (o crea)
~/.cursor/mcp.json - 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.
- 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)
- Haz clic en Explorar plugins (o Conectores) → + para añadir un nuevo conector y pega la URL de abajo como URL del servidor MCP
- 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:
- Llama a
get_auth_challengecon elwalletAddresspara obtener un mensajemessagede Sign-In-With-Ethereum. - 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. - Llama a
submit_auth_verifycon la firma para intercambiarla por unjwt. - Pasa ese
jwtexplícitamente en cada llamada asubmit_deposit/submit_withdrawal/submit_configpara 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.
prepare_*calcula todo (datos tipados EIP-712, un hash de firma de configuración o parámetrosapprove()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.- Tú firmas la carga devuelta con el firmante propio de la wallet.
submit_*toma la firma que produjiste más tujwty la retransmite aguas arriba. Este es el paso que mueve fondos o cambia la configuración.submit_depositysubmit_withdrawaldevuelven untrackingIdpara consultar conget_deposit_status/get_withdrawal_status;submit_configno tiene ID de seguimiento ni sondeo de estado: confirma una actualización de configuración incierta releyendoget_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ámetro | Tipo | Descripción | |
|---|---|---|---|
walletAddress | string | obligatorio | Dirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier mayúscula/minúscula. |
tokens | string | opcional | Sí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ámetro | Tipo | Descripción | |
|---|---|---|---|
walletAddress | string | obligatorio | Direcció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ámetro | Tipo | Descripción | |
|---|---|---|---|
walletAddress | string | obligatorio | Direcció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ámetro | Tipo | Descripción | |
|---|---|---|---|
token | string | obligatorio | Sí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ámetro | Tipo | Descripción | |
|---|---|---|---|
walletAddress | string | obligatorio | Dirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier mayúscula/minúscula. |
reloadChain | string | opcional | Nombre 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ámetro | Tipo | Descripción | |
|---|---|---|---|
token | string | obligatorio | Sí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ámetro | Tipo | Descripción | |
|---|---|---|---|
token | string | obligatorio | Símbolo de token, p. ej. USDC, USDT, MUSD, RLUSD, USDG, USDE, PYUSD. |
chain | string | obligatorio | Nombre 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ámetro | Tipo | Descripción | |
|---|---|---|---|
walletAddress | string | obligatorio | Dirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier mayúscula/minúscula. |
chain | string | opcional | Solo 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ámetro | Tipo | Descripción | |
|---|---|---|---|
walletAddress | string | requerido | Dirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier formato de mayúsculas/minúsculas. |
signature | string | requerido | Firma personal_sign del mensaje SIWE de get_auth_challenge. |
chain | string | opcional | Para 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ámetro | Tipo | Descripción | |
|---|---|---|---|
chain | string | requerido | Cadena 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. |
token | string | requerido | Símbolo del token, p. ej. USDC, USDT, MUSD, RLUSD, USDG, USDE, PYUSD. |
walletAddress | string | requerido | Dirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier formato de mayúsculas/minúsculas. |
amount | string | requerido | Monto bruto del token como cadena de dígitos decimales (denominación más pequeña). Usa get_token_info para decimales. |
method | "signature" | "approval" | opcional | Fuerza 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ámetro | Tipo | Descripción | |
|---|---|---|---|
jwt | string | requerido | JWT de submit_auth_verify para este walletAddress. |
chain | string | requerido | Mismo valor pasado a prepare_deposit. |
token | string | requerido | Símbolo del token. |
walletAddress | string | requerido | Dirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier formato de mayúsculas/minúsculas. |
amount | string | requerido | Monto bruto del token, igual que el pasado a prepare_deposit. |
validAfter | string | opcional | De la salida del método de firma de prepare_deposit. Omitir para depósitos basados en aprobación. |
validBefore | string | opcional | De la salida del método de firma de prepare_deposit. Omitir para depósitos basados en aprobación. |
nonce | string | opcional | De la salida del método de firma de prepare_deposit. Omitir para depósitos basados en aprobación. |
signature | string | opcional | Firma ECDSA bruta de 65 bytes sobre prepare_deposit de typedData. Omitir para depósitos basados en aprobación. |
tokenName | string | opcional | De la salida del método de firma de prepare_deposit. Omitir para depósitos basados en aprobación. |
tokenVersion | string | opcional | De 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ámetro | Tipo | Descripción | |
|---|---|---|---|
trackingId | string | requerido | trackingId 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ámetro | Tipo | Descripción | |
|---|---|---|---|
walletAddress | string | requerido | Dirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier formato de mayúsculas/minúsculas. |
chain | string | requerido | Necesario para desambiguar — la misma dirección de contrato de pool puede existir en varias cadenas. |
token | string | requerido | Símbolo del token — algunas direcciones de pool sirven a múltiples tokens. |
poolContract | string | requerido | Dirección del contrato del pool, de get_balances de perPool[].poolAddress. |
amount | string | opcional | Monto 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ámetro | Tipo | Descripción | |
|---|---|---|---|
jwt | string | requerido | JWT de submit_auth_verify para este walletAddress. |
chain | string | requerido | De la salida de prepare_withdrawal. |
token | string | requerido | Símbolo del token. |
walletAddress | string | requerido | Dirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier formato de mayúsculas/minúsculas. |
amount | string | requerido | De la salida de prepare_withdrawal. |
deadline | string | requerido | De la salida de prepare_withdrawal. |
signature | string | requerido | Firma sobre prepare_withdrawal de typedData. |
poolContract | string | requerido | Direcció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ámetro | Tipo | Descripción | |
|---|---|---|---|
trackingId | string | requerido | trackingId 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ámetro | Tipo | Descripción | |
|---|---|---|---|
walletAddress | string | requerido | Dirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier formato de mayúsculas/minúsculas. |
token | string | requerido | Símbolo del token al que se aplica esta configuración. |
protocolIds | number[] | requerido | 0=Aave, 1=Morpho, 2=Euler. Una entrada por cada entrada de poolAddresses / domainIds, desde list_pools ' signData.protocolId. |
poolAddresses | string[] | requerido | Direcciones de contratos de pool a permitir, desde list_pools ' signData.poolAddress. |
domainIds | number[] | requerido | IDs de dominio de cadena, uno por cada entrada de poolAddresses, desde list_pools ' signData.domainId. |
includeRewardsApy | boolean | opcional | Si 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. |
requiredTvl | string | opcional | TVL 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. |
requiredLiquidityMultiplier | string | opcional | La 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. |
collateralExposure | string[] | null | opcional | Lista 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. |
spendingCapRaw | string | null | opcional | Unidades 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ámetro | Tipo | Descripción | |
|---|---|---|---|
jwt | string | requerido | JWT desde submit_auth_verify para este walletAddress. |
walletAddress | string | requerido | Dirección de wallet EVM (0x…, 40 caracteres hex). Se acepta cualquier formato de mayúsculas/minúsculas. |
token | string | requerido | Símbolo del token, igual al pasado a prepare_config. |
protocolIds | number[] | requerido | Mismo array pasado a prepare_config. |
poolAddresses | string[] | requerido | Mismo array pasado a prepare_config. |
domainIds | number[] | requerido | Mismo array pasado a prepare_config. |
signature | string | requerido | Firma sobre prepare_config 's hashToSign. |
includeRewardsApy | boolean | opcional | Mismo valor pasado a prepare_config. |
requiredTvl | string | opcional | Mismo valor pasado a prepare_config. |
requiredLiquidityMultiplier | string | opcional | Mismo valor pasado a prepare_config. |
collateralExposure | string[] | null | opcional | Mismo valor pasado a prepare_config. |
spendingCapRaw | string | null | opcional | Mismo valor pasado a prepare_config — debe coincidir exactamente. |