Servidor MCP de AlgoVesta: deja que Claude, ChatGPT, Cursor y Gemini operen tus cuentas reales de exchange y MetaTrader 5
Qué es esto: AlgoVesta gestiona un servidor alojado de Model Context Protocol (MCP) que le da a un asistente de IA veinte herramientas de trading reales a través de un único enlace HTTPS. Pega ese enlace en Claude, ChatGPT, Cursor, Claude Code, Gemini CLI o cualquier cliente compatible con MCP, y el asistente podrá leer saldos, abrir y cerrar posiciones, mover el stop-loss y el take-profit, y auditar sus propias acciones en 16 exchanges de criptomonedas y el forex de MetaTrader 5 al mismo tiempo — usando la configuración de riesgo que ya guardaste en AlgoVesta, detrás de un muro de políticas del lado del servidor que ningún prompt puede anular. Cada conexión empieza con un saldo simulado de $5,000 y cada acción devuelve un recibo firmado con ed25519.
El Model Context Protocol es un estándar abierto para conectar asistentes de IA a sistemas externos. La mayoría de los servidores MCP relacionados con trading transmiten datos de mercado a una ventana de chat. Este ejecuta: es una capa de enrutamiento de órdenes con un motor de riesgo determinista delante, y la IA es quien llama — nunca la autoridad.
Inicio rápido
La configuración consta de tres pasos y no requiere código. Todo el flujo vive en la Conexión MCP pestaña de tu panel de AlgoVesta.
Abre la Conexión MCP pestaña y genera una clave. Las claves nuevas usan por defecto el alcance paper El enlace completo se muestra una sola vez — cópialo en ese momento.
Pega el enlace en tu cliente de IA como un servidor MCP personalizado. Ninguna clave API sale de AlgoVesta, sin código, sin instalación local.
Háblale. “¿Cómo está mi portafolio?” “Simula una posición larga de $200 en ETHUSDT a 5x.” “Cierra la mitad de mi posición en BTC.”
Tu URL de conexión se ve así:
https://api.algovesta.com/u/avmcp_<your-key>/mcp
Esa URL es una credencial. Cualquiera que la tenga puede actuar dentro de su alcance sobre tus cuentas. Trátala como una contraseña: nunca la pegues en un chat público, una captura de pantalla, un repositorio compartido o un ticket de soporte. Si se filtra, revócala desde el panel — la revocación surte efecto de inmediato para las conexiones nuevas y corta los flujos de eventos abiertos en cuestión de segundos.
Qué asistentes de IA se pueden conectar
Cualquier cliente que hable MCP sobre Streamable HTTP puede conectarse. La siguiente tabla registra lo que se verificó contra el servidor en vivo, incluidas las limitaciones reales — algunas de ellas son restricciones del producto de IA, no de AlgoVesta, y te las encontrarás sin importar qué servidor MCP uses.
| Cliente de IA | Dónde pegas el enlace | Notas y límites reales |
|---|---|---|
| Claude (web, escritorio, iOS, Android) | Configuración → Conectores → Agregar conector personalizado | Compatibilidad total. Los títulos de las herramientas y los cuadros de confirmación provienen directamente del servidor. |
| Claude Code | claude mcp add --transport http | Línea de comandos. Útil para flujos de trabajo con scripts o repetibles. |
| Cursor | mcp.json, en el campo "url" correspondiente | Compatibilidad total. Ten en cuenta que el nombre de la clave es url aquí — Gemini CLI usa uno diferente. |
| ChatGPT | Modo desarrollador / conector personalizado | Solo planes de pago. Los conectores MCP personalizados no están disponibles en el plan gratuito, y puede que primero sea necesario activar el modo desarrollador. Esta es una restricción de OpenAI. |
| Gemini CLI | ~/.gemini/settings.json, en el campo "httpUrl" correspondiente | Solo CLI. La aplicación web de Gemini no admite servidores MCP personalizados. Usa la clave httpUrl , no url. |
| Cualquier otro cliente compatible con MCP | Su propia configuración de MCP / conectores | El servidor implementa el estándar, así que cualquier cliente compatible con MCP remoto sobre Streamable HTTP funcionará sin nada específico para él. |
Ejemplo de Cursor (mcp.json):
{
"mcpServers": {
"algovesta": {
"url": "https://api.algovesta.com/u/avmcp_<your-key>/mcp"
}
}
}
Ejemplo de Gemini CLI (~/.gemini/settings.json) — nota httpUrl:
{
"mcpServers": {
"algovesta": {
"httpUrl": "https://api.algovesta.com/u/avmcp_<your-key>/mcp"
}
}
}
Claude Code:
claude mcp add --transport http algovesta https://api.algovesta.com/u/avmcp_<your-key>/mcp
Transporte y protocolo
| Transporte | Streamable HTTP, sin estado, respuestas JSON. Cada solicitud se autentica de forma independiente. |
| Nombre del servidor | AlgoVesta |
| Endpoint de enlace secreto | https://api.algovesta.com/u/<key>/mcp |
| Endpoint de OAuth | https://api.algovesta.com/mcp |
| Cambios en la lista de herramientas | tools.listChanged = true. Los clientes actualizan la lista de herramientas al reconectar, así que las herramientas y los parámetros nuevos aparecen sin necesidad de quitar y volver a agregar el conector. |
| Flujo de eventos | Eventos enviados por el servidor en /mcp/events y /u/<key>/events, aislados por cliente (tenant), con Last-Event-ID reconexión. |
| Esquema legible por máquina | /mcp/tools.json — el JSON Schema completo de las 20 herramientas, exactamente como lo recibe el cliente. |
Autenticación y alcances
Hay dos formas de conectarse, y ambas resuelven al mismo contexto de cliente (tenant). Las herramientas nunca aceptan un ID de usuario como parámetro — la identidad se lee únicamente de la conexión autenticada, lo que hace que el acceso entre cuentas sea estructuralmente imposible, no simplemente prohibido.
Enlace secreto
Una clave con el formato avmcp_<32-byte urlsafe random>, incrustada en la ruta de la URL. Se almacena como un hash Argon2id más un hash de búsqueda SHA-256; el texto plano solo existe en el momento de su creación y nunca se puede recuperar después. Cada clave lleva su propio alcance, su propia etiqueta y su propio estado de revocación, así que puedes usar una clave paper en Cursor y una clave live en Claude, y desactivar cualquiera de las dos de forma independiente.
OAuth 2.1
Para clientes que prefieren un flujo de autorización propiamente dicho. Los grants admitidos son authorization_code y refresh_token, con tokens de actualización (refresh tokens) rotativos. PKCE con S256 es obligatorio — una solicitud sin él es rechazada. Está disponible el registro dinámico de clientes, así que la mayoría de los clientes se configuran solos. Documentos de descubrimiento:
GET https://api.algovesta.com/.well-known/oauth-authorization-server
GET https://api.algovesta.com/.well-known/oauth-protected-resource
POST https://api.algovesta.com/mcp/oauth/register
GET https://api.algovesta.com/mcp/oauth/authorize
POST https://api.algovesta.com/mcp/oauth/token
Los tres alcances
| Alcance | Qué puede hacer | Cómo se obtiene |
|---|---|---|
read | Portafolio, precios, órdenes pendientes, simulaciones, vistas previas de políticas, verificación de recibos, repetición de canales. No se puede colocar ninguna orden. | Se crea directamente. |
paper | Todo lo de read, más órdenes ejecutadas contra el motor de papel con un saldo virtual de $5,000. El valor predeterminado para las claves nuevas. | Se crea directamente. |
live | Todo lo anterior, más órdenes reales en tus exchanges conectados y tus cuentas de MetaTrader 5. | Se requiere segundo factor. Un código válido de autenticador (TOTP), o un código de confirmación enviado al correo de tu cuenta y válido durante 10 minutos. Se aplica del lado del servidor, sin excepciones. |
Los alcances están jerarquizados, así que una herramienta que requiere paper rechaza una clave read con insufficient_scope. El límite entre el dinero simulado y el dinero real es, por lo tanto, una propiedad de la propia clave, no de un prompt, una configuración o el criterio del modelo.
Referencia de herramientas — las 20 herramientas
Estas son exactamente las herramientas que ve tu asistente. Las herramientas de lectura son seguras de llamar sin pedirte permiso antes; las seis herramientas de escritura generan una confirmación en los clientes que la admiten, y tres de ellas — place_order, close_position y cancel_order — están además marcadas como destructivas en sus anotaciones.
| Herramienta | Alcance | Tipo | Propósito |
|---|---|---|---|
get_portfolio_context | read | solo lectura | Todas las cuentas conectadas en una sola llamada |
get_market_price | read | solo lectura | Precio en vivo con antigüedad reportada |
simulate_order | read | solo lectura | Simulación en seco (dry-run) que incluye el veredicto de la política |
place_order | paper / live | destructivo | Abre una posición |
close_position | paper / live | destructivo | Cierra total o parcialmente |
modify_position | paper / live | escritura | Mueve el stop-loss y el take-profit |
list_open_orders | read | solo lectura | Órdenes límite pendientes |
cancel_order | paper / live | destructivo | Cancela una orden pendiente |
compile_policy | read | solo lectura | Convierte reglas en lenguaje natural en una vista previa de política |
verify_receipt | read | solo lectura | Verifica la firma y la cadena de hashes |
replay_channel | read | solo lectura | Hace un backtest de un canal de Telegram contra tus reglas |
get_trade_history | read | solo lectura | Operaciones cerradas y rendimiento en cripto, MT5 y paper |
compare_venues | read | solo lectura | Clasifica los exchanges conectados por precio y spread medidos |
list_strategies | read | solo lectura | Estrategias de TradingView; la URL del webhook nunca se devuelve |
create_strategy | paper / live | escritura | Nueva estrategia, siempre con la ejecución con dinero real desactivada |
update_strategy | paper / live | escritura | Ajustes de la estrategia; auto_trade se rechaza |
backtest_my_signals | read | read-only | Reproduce tus propias señales pasadas con otros ajustes (trabajo en cola) |
simulate_policy | read | read-only | Aplica una política de riesgo a las operaciones que realmente cerraste (trabajo en cola) |
import_tradingview_backtest | read | read-only | Recalcula una exportación de TradingView con comisiones y deslizamiento reales (trabajo en cola) |
get_job_status | read | read-only | Progreso y resultado de un trabajo en cola |
get_portfolio_context
No recibe parámetros. Devuelve una vista normalizada de cada cuenta de exchange, cada cuenta de MetaTrader 5 y la cuenta paper que pertenecen a la clave autenticada — y nada más. Esta es la llamada que convierte “¿cómo voy?” en una sola pregunta en lugar de dieciséis.
Dos campos importan más que el resto. Para las cuentas de cripto, balance y equity describen el monedero de futuros únicamente; el dinero de spot se reporta por separado en spot_balance, así que un asistente que solo lee balance puede concluir erróneamente que no tienes nada. Para las cuentas de MetaTrader 5, positions_source es live_ea, lo que significa que la lista de posiciones se verificó contra la terminal, o unavailable, lo que significa que no se pudo contactar con la terminal. En el caso unavailable , una lista de posiciones vacía no significa “sin posiciones abiertas” — significa desconocido, y la descripción de la herramienta le indica al modelo que lo diga así, en lugar de tranquilizarte.
get_market_price
Parámetros: venue, symbol. Devuelve {ok, venue, symbol, last, bid, ask, ts, source, age_sec}. Los precios provienen de una caché compartida que se actualiza aproximadamente cada segundo; si hay un fallo de caché, el servidor hace una llamada REST en vivo al exchange. Si el valor tiene más de 10 segundos de antigüedad o no se puede obtener en absoluto, eso se indica explícitamente — un precio desactualizado nunca se presenta como si fuera en vivo. Si el símbolo no existe en ningún exchange conectado, se puede devolver un precio informativo de un DEX junto con una advertencia clara de que no puedes operarlo en tus plataformas conectadas.
simulate_order
Obligatorio: venue, symbol, side, order_type, idempotency_key. No envía ninguna orden. Devuelve la ejecución esperada, el impacto en el margen y el veredicto de la política, además de los precios absolutos de stop-loss y take-profit que derivó el servidor. Es una operación de lectura, así que un asistente bien diseñado la llama sin pedir permiso, te muestra un resumen y solicita exactamente una confirmación antes de colocar nada.
place_order
Obligatorio: venue, symbol, side, order_type, idempotency_key. Opcional: account, market, size_usd, margin_usd, risk_pct, lots, leverage, sl, tp, sl_pct, tp_pct, take_profits, entry_price.
El idempotency_key no es decoración. Si la misma clave llega dos veces para el mismo usuario, se repite la respuesta almacenada y no se abre una segunda orden — que es lo que te protege cuando un cliente reintenta después de un tiempo de espera agotado, un teléfono pierde señal a mitad de una confirmación, o un modelo llama a una herramienta dos veces.
El dimensionamiento es explícito a propósito. Para cripto pasas exactamente uno de tres campos, y cada uno significa algo distinto:
| Campo | Significado | Ejemplo a 5x |
|---|---|---|
size_usd | Valor de la posición (nocional) | size_usd=100 → una posición de $100, $20 de tu dinero |
margin_usd | Garantía de tu propio bolsillo | margin_usd=20 → una posición de $100 |
risk_pct | Porcentaje del saldo disponible utilizado como margen. Esto no es un dimensionamiento de riesgo por distancia de stop; la distancia del stop-loss no entra en el cálculo. | risk_pct=1 con un saldo de $2,000 → $20 de margen → una posición de $100 |
Para forex y MetaTrader 5, el tamaño se indica en lots en su lugar, y leverage no se envía en absoluto — el producto no tiene apalancamiento y el tamaño se determina por el volumen en lotes. El tamaño de lote que indiques se usa exactamente y nunca se redondea a un valor conveniente; si queda fuera de los límites de tu bróker, la orden se rechaza y se informa el rango permitido.
Tolerancia en el tamaño de la orden. Los exchanges solo aceptan ciertos incrementos de lote, así que el monto solicitado se ajusta al paso válido más cercano. Si la desviación se mantiene dentro del 20% la orden se ejecuta y se te informa la desviación exacta; más allá del 20% la orden no se abre, y se te indica, en números, qué montos cercanos sí funcionarían. Ese umbral se eligió reprocesando cada orden real que se haya colocado alguna vez a través de la función de dimensionamiento, no se eligió por intuición.
Los campos omitidos usan tu configuración guardada como respaldo. Si no indicas un stop-loss, un take-profit o un apalancamiento, se le indica al asistente que deje esos campos vacíos, y el servidor los completa con las preferencias guardadas en tu panel — los mismos valores que usan el panel manual y el bot de Telegram. La respuesta informa qué campos provinieron de la configuración guardada en prefs_used. Esto existe debido a una falla medida: cuando esos campos eran obligatorios, el modelo tenía que inventar valores, y cinco de cinco órdenes anularon la configuración propia del cliente.
close_position
Obligatorio: venue, symbol, side, idempotency_key. Opcional: fraction (0 a 1], account, ticket. Funciona tanto para cripto como para MetaTrader 5. Cerrar reduce el riesgo, así que el muro de políticas nunca lo bloquea — solo lo hace el interruptor de emergencia (kill switch). Diez llamadas con la misma clave de idempotencia realizan exactamente un cierre. Si no existe una posición coincidente, obtienes POSITION_NOT_FOUND junto con las posiciones que sí están abiertas en esa plataforma, así el asistente puede corregirse en lugar de adivinar.
MetaTrader 5 no tiene cierre parcial — el Expert Advisor cierra por completo — así que usa fraction=1 ahí. Cuando hay varias posiciones de MT5 abiertas en el mismo símbolo, ticket se vuelve obligatorio, y mientras el objetivo sea ambiguo no se cierra nada.
modify_position
Obligatorio: venue, symbol, side, idempotency_key, más al menos uno de new_sl / new_tp. El stop-loss no se puede eliminar — la regla del SL obligatorio también aplica aquí. El orden se valida: una posición larga necesita new_sl < mark < new_tp, y una corta lo contrario. Enviar solo un lado deja el otro en su valor actual en lugar de eliminarlo. Igual que con el cierre, un ticket de MT5 ambiguo hace que no se modifique nada.
list_open_orders
Opcional: venue. Enumera las órdenes límite pendientes con order_ref, plataforma, símbolo, lado, precio de entrada, tamaño y hora de creación.
Antes de pedirle a un asistente que revise tus órdenes abiertas, hay un detalle que conviene conocer: las órdenes pendientes que rastrea esta herramienta viven en el libro de operaciones simulado (paper). Las órdenes colocadas en un mercado en vivo a través de MCP se envían como órdenes de mercado, por lo que se ejecutan de inmediato en lugar de quedar en espera, y una lista vacía en una cuenta en vivo significa que no hay nada pendiente, no que algo haya desaparecido.
cancel_order
Obligatorio: venue, order_ref, idempotency_key. Si la referencia no te pertenece, la respuesta es NOT_FOUND — nunca una pista de que existe la orden de otra persona. Al igual que el cierre, reduce el riesgo y el muro de políticas no lo bloquea.
compile_policy
Obligatorio: natural_text. Escribes una regla en lenguaje natural — “nunca arriesgues más del 2% en una sola operación, sin apalancamiento superior a 10, solo BTC y ETH” — y se compila en una política JSON, devuelta como una vista previa. Compilar nunca activa nada. La activación es un paso separado y deliberado desde el panel o mediante POST /api/mcp/policies/{policy_id}/activate, lo que significa que un modelo no puede relajar tus reglas simplemente hablando de ellas.
verify_receipt
Obligatorio: receipt_id. Devuelve signature_valid y chain_valid; una acción se verifica solo cuando ambos son verdaderos. Los recibos están firmados con ed25519 y encadenados mediante hashes por usuario, así que alterar un recibo anterior rompe todos los posteriores y chain_valid hace que se vuelva falso. La clave pública se sirve en /mcp/receipts/pubkey, así que puedes verificar de forma independiente sin confiar en este endpoint. Los recibos más antiguos de la era HMAC devuelven legacy=true.
replay_channel
Obligatorio: channel_ref. Opcional: days (hasta 90, 30 por defecto), policy_override. Responde a “¿qué habría pasado si hubiera seguido este canal de Telegram durante los últimos X días bajo mis reglas?” repitiendo sus señales pasadas en modo paper, con cada señal pasando por el muro de políticas para que las rechazadas nunca se abran. El progreso llega como replay_progress eventos. Los resultados se almacenan en caché durante 24 horas y la herramienta está limitada a 5 repeticiones por hora. Salida: {trades:[...], summary:{total_pnl, win_rate, max_drawdown, avg_rr, policy_rejections}}.
get_trade_history
Opcional: venue, symbol, days (1–365, 30 por defecto), limit (1–200, 50 por defecto), market (crypto / forex / paper). Devuelve las operaciones cerradas de las tres fuentes en una sola lista, de la más reciente a la más antigua, más un summary. El resumen es deliberadamente conservador: avg_rr se calcula solo con las operaciones en las que se conocen la entrada, el stop-loss y la salida, y rr_sample indica cuántas fueron; total_pnl es null cuando se mezclan varias monedas de cuenta, y en su lugar se ofrece pnl_by_currency; la comisión no se registra en ningún sitio, así que fee queda en null y el PnL de cripto es bruto. Si una fuente no se puede leer, incomplete_sources la nombra en lugar de devolver una lista corta como si estuviera completa.
compare_venues
Obligatorio: symbol. Opcional: market (por defecto futures, o spot), side. Devuelve, para cada exchange de cripto conectado, el precio en vivo y — en los exchanges que publican bid/ask — el spread en puntos básicos, más la diferencia de precio entre exchanges. No elige un exchange: tu orden sigue nombrando uno. Las comisiones de trading, la profundidad del libro de órdenes y el slippage se listan bajo basis.not_measured y nunca se estiman, y un exchange que no publicó bid/ask aparece en not_comparable_on_spread en lugar de ser clasificado como si su spread fuera cero. Por eso cheapest_measured significa “spread medido más bajo”, no “el más barato en general”.
list_strategies
Sin parámetros. Devuelve tus estrategias de TradingView con sus ajustes, plan_limit y can_create_more. auto_trade se reporta por estrategia, para que el asistente pueda decirte cuáles están activas. La URL del webhook, la URL de demo y el secreto HMAC se eliminan de la respuesta — solo se exponen webhook_url_configured y has_hmac_secret, porque la URL en sí misma es una credencial.
create_strategy
Opcional: name. Obligatorio: idempotency_key. Crea una estrategia de TradingView con auto_trade desactivado; el campo no se puede escribir a través de MCP, así que una estrategia recién creada no puede colocar órdenes reales hasta que la actives tú mismo en el panel. Sujeta a la cuota de estrategias de tu plan — por encima del límite devuelve un error codificado de límite de plan en lugar de no hacer nada en silencio.
update_strategy
Obligatorio: strategy_id, changes, idempotency_key. Cambia el apalancamiento (limitado a 1–20), el porcentaje de riesgo (0.1–50), los porcentajes de stop-loss y take-profit, los ajustes de trailing y break-even, los símbolos permitidos, la cuenta de destino y si la estrategia acepta señales. auto_trade, status e ip_allowlist se rechazan y se devuelven en refused_fields; la eliminación es solo desde el panel. Activar reverse_enabled devuelve un warning, porque a partir de entonces una señal BUY abre un SHORT.
backtest_my_signals
Opcional: days (1–90), source, symbols, margin_usd, leverage, sl_pct, tp_pct, max_hold_minutes, taker_fee_bps, partial_tp. Reproduce las señales que realmente recibiste sobre barras históricas reales de un minuto de mainnet, dos veces: una con el stop, el take-profit y el apalancamiento originales de cada señal y otra con tus ajustes. Devuelve un job_ref al instante; el resultado se recoge con get_job_status. Cada resultado incluye coverage (cuántas señales se pudieron simular y por qué el resto no) y assumptions (comisiones, deslizamiento, TP parcial y lo que no se modela). Las señales sin stop, con el stop en el lado equivocado de la entrada o sin datos históricos se cuentan y se omiten, nunca se adivinan.
simulate_policy
Opcional: policy_text (lenguaje natural), rules (ya compiladas), days (1–365). Aplica una política de riesgo a las operaciones que realmente cerraste e informa cuáles habría rechazado, por qué regla y la diferencia de PnL. Devuelve un job_ref. Dos límites se indican siempre: las reglas que dependen del estado de la cuenta en el momento de la orden (posiciones abiertas, pérdida diaria, saldo) se evalúan con ceros porque ese estado no se puede reconstruir desde operaciones cerradas, así que se cuentan de MENOS, nunca de más; y el PnL procede de tus resultados realizados, se informa por divisa y nunca se suma entre divisas.
import_tradingview_backtest
Obligatorio: csv_text. Opcional: taker_fee_bps, slippage_bps, leverage. Toma el CSV que exportas del Strategy Tester de TradingView (List of Trades) y lo recalcula con costes reales: comisiones taker y deslizamiento medido en la entrada y en la salida. Pine Script nunca se ejecuta ni se interpreta — solo se recalcula tu lista exportada — y los precios se mantienen tal como los reportó TradingView. Las filas sin columna de cantidad no pueden llevar comisiones, así que quedan optimistas y se informa cuántas son. Devuelve un job_ref.
get_job_status
Opcional: job_ref. Con una referencia devuelve el estado de ese trabajo y, cuando termina, su resultado; sin argumentos lista tus trabajos recientes. status es uno de PENDING, RUNNING (con un porcentaje en progress), DONE, FAILED (hay un reintento programado), DEAD o CANCELLED. Los trabajos se ejecutan de uno en uno, así que queue_position indica cuántos hay por delante. Una referencia que no es tuya recibe la MISMA respuesta de “no encontrado” que una inexistente, de modo que no se pueden enumerar.
Los resultados no viven para siempre, y vale la pena conocer los límites antes de construir sobre ellos. Solo los 20 trabajos terminados más recientes conservan su resultado completo; los más antiguos se reducen a su resumen y vuelven con result_pruned: true, lo que significa que las filas detalladas han desaparecido y hay que ejecutar el trabajo de nuevo para regenerarlas. Todo se elimina después de 30 días. Las ejecuciones de backtest y de políticas también se registran en el historial de backtest de tu cuenta, y el resultado lleva el run_id bajo el cual se almacenaron.
El muro de políticas
Esta es la parte que hace defendible entregarle herramientas a un modelo de lenguaje. Tus reglas se compilan una vez en JSON, se validan contra un esquema fijo y luego se evalúan del lado del servidor y de forma determinista en cada orden. El modelo nunca las evalúa, nunca ve una forma de eludirlas, y no se le puede convencer de relajarlas — ni por ti en un momento de impaciencia, ni por un prompt inyectado a través de una página web o un mensaje de Telegram que haya leído por casualidad. Una infracción es un rechazo estricto con una entrada de auditoría.
| Regla | Tipo | Significado |
|---|---|---|
max_risk_per_trade_pct | número, 0–100 | Límite máximo de la porción de la cuenta que puede ocupar una sola operación |
max_order_size_usd | número > 0 | Límite absoluto sobre el valor de la orden |
max_daily_loss_usd | número > 0 | Deja de operar por el día al superar esta pérdida |
max_open_positions | entero | Límite de concurrencia |
leverage_cap | número, 1–1000 | Tu propio límite de apalancamiento |
venue_scope | arreglo | Restringe la IA a las plataformas indicadas |
symbol_whitelist | arreglo | Solo se pueden operar estos símbolos |
symbol_blacklist | arreglo | Estos símbolos nunca se operan |
allowed_sides | arreglo | Solo largo, solo corto, o ambos |
notes | cadena | Tu propia anotación |
Una política compilada que no pasa la validación del esquema no se puede activar en absoluto. No existe una política parcialmente válida.
Modelo de seguridad
| Paper por defecto | Toda clave nueva empieza en paper alcance con un saldo virtual de $5,000. Llegar al dinero real es un acto explícito y separado. |
| El stop-loss es obligatorio | Si no existe ni un stop-loss explícito ni un valor predeterminado guardado, la orden se rechaza. Tampoco se puede eliminar después. |
| Idempotencia | Toda herramienta de escritura requiere una clave generada por el cliente de al menos 8 caracteres. Las repeticiones reproducen la respuesta almacenada en lugar de actuar dos veces. |
| Interruptor de emergencia | POST /api/mcp/freeze detiene todo a la vez; cada herramienta entonces devuelve user_frozen. /unfreeze lo revierte. |
| Revocación por clave | Revoca un cliente sin tocar los demás. Los flujos de eventos abiertos se cortan en cuestión de segundos. |
| Recibos firmados | Firma ed25519 más una cadena de hashes por usuario en cada acción, verificable contra una clave pública. |
| Registro de auditoría | Cada llamada se registra con el nombre de la herramienta, los argumentos, el resultado y la latencia, y se puede consultar en GET /api/mcp/audit y en el panel. |
| Aislamiento por cliente (tenant) | Las herramientas no pueden aceptar un ID de usuario; la identidad proviene únicamente de la conexión autenticada. |
| Claves solo para operar | Tus claves API de exchange se crean sin permiso de retiro y se almacenan cifradas con AES-256. Las órdenes salen desde IPs de trading fijas de AlgoVesta que autorizas en la lista blanca del exchange. |
Sobre el apalancamiento, en pocas palabras: AlgoVesta no impone un límite de apalancamiento en tu propia cuenta — lo impone tu exchange, y puedes fijar tu propio límite con la regla leverage_cap de política. El forex a través de MetaTrader 5 no tiene apalancamiento en esta vía y se dimensiona por lotes. Cualquiera que te diga que una plataforma “limita el apalancamiento a 20x” aquí está describiendo algo que no existe.
Errores
| Código | HTTP | Cuándo ocurre |
|---|---|---|
unauthorized | 401 | Clave faltante, inválida o revocada |
insufficient_scope | 401 | La herramienta necesita un alcance mayor que el que tiene la clave |
forbidden | 403 | No permitido para esta cuenta |
user_frozen | 403 | El interruptor de emergencia está activo |
policy_violation | 403 | Una regla rechazó la orden; la respuesta indica cuál |
idempotency_conflict | 409 | La misma clave se reutilizó con argumentos diferentes |
validation_failed | 422 | Argumentos mal formados o contradictorios |
rate_limited | 429 | Demasiadas llamadas; retry_after se incluye |
Los rechazos a nivel de dominio llegan como resultados estructurados en lugar de errores de transporte, así que el asistente puede actuar en consecuencia: VENUE_NOT_CONNECTED, ACCOUNT_REQUIRED, ACCOUNT_AMBIGUOUS, ACCOUNT_NOT_FOUND, POSITION_NOT_FOUND, MISSING_FIELDS, INVALID_SIDE, SL_REMOVAL_FORBIDDEN. Los mensajes de error nunca filtran detalles internos, y nunca revelan nada sobre otra cuenta.
Límites de frecuencia
| Alcance del límite | Límite |
|---|---|
| Todas las llamadas a herramientas, por clave | 60 por minuto |
place_order | 10 por minuto |
replay_channel | 5 por hora (resultados en caché durante 24 horas) |
| Correo de confirmación de alcance live | 1 por minuto |
Eventos en vivo
Hay disponible un flujo de eventos enviados por el servidor, aislado por cliente (tenant), en /mcp/events (OAuth) y /u/<key>/events (enlace secreto), con Last-Event-ID reconexión, de modo que una conexión interrumpida se reanuda en lugar de reiniciarse. Tipos de eventos: fill, policy_rejected, position_closed, sl_hit, tp_hit, y replay_progress durante la repetición de un canal.
Plataformas — 16 exchanges y MetaTrader 5
Una sola conexión llega a todas. Una plataforma solo queda disponible para la IA después de que la conectes en AlgoVesta; pedir una que no has conectado devuelve VENUE_NOT_CONNECTED en lugar de una suposición.
| Exchange | venue valor |
Mercados | Frase de contraseña necesaria |
|---|---|---|---|
| Binance | binance | Spot, futuros | No |
| Bybit | bybit | Spot, futuros | No |
| OKX | okx | Spot, futuros | Sí |
| KuCoin | kucoin | Spot, futuros | Sí |
| Gate.io | gateio | Spot, futuros | No |
| Bitget | bitget | Spot, futuros | Sí |
| Kraken | kraken | Spot, futuros | No |
| Coinbase | coinbase | Spot | No |
| BingX | bingx | Spot, futuros | No |
| Hyperliquid | hyperliquid | Futuros | No |
| Backpack | backpack | Spot, futuros | No |
| HTX | htx | Spot, futuros | No |
| BloFin | blofin | Spot, futuros | Sí |
| Phemex | phemex | Spot, futuros | No |
| WOO X | woo | Spot, futuros | Sí (ID de aplicación) |
| CoinEx | coinex | Spot, futuros | No |
| MetaTrader 5 (forex, metales, índices) | mt5 | Lotes, vía sin apalancamiento | Inicio de sesión del bróker |
| Motor paper | paper | $5,000 virtuales | — |
Seis de estos — Binance, Bybit, OKX, Gate.io, KuCoin y Bitget — se han verificado de extremo a extremo con dinero real tanto en futuros como en spot, confirmando que el stop-loss y el take-profit existen en el propio exchange y coinciden exactamente con los valores registrados. Cada exchange tiene sus propias particularidades, y las diferencias son deliberadas, no vacíos: Bybit y Bitget no aceptan una segunda pata de take-profit en spot, OKX spot se enruta a través de la API sin procesar para evitar que una cuenta de efectivo se convierta silenciosamente en una cuenta de margen, Binance spot exige un nocional mínimo antes de comprar, y las compras a mercado de KuCoin se colocan en modo de costo.
Spot y futuros siempre se mantienen separados. El mismo símbolo en los dos mercados es una fila distinta, un feed de precios distinto y una clave distinta — uno nunca se mezcla con el otro.
MetaTrader 5 sin ninguna instalación
No instalas nada para forex. No hay ningún VPS que alquilar, ninguna terminal de MetaTrader que mantener activa en tu propia máquina, ningún Expert Advisor que adjuntar y ninguna cuenta puente de terceros que comprar. AlgoVesta ejecuta las terminales de MetaTrader 5 en sus propios servidores gestionados y las mantiene conectadas a tu bróker las 24 horas. Ingresas las credenciales de tu cuenta una sola vez y, a partir de ese momento, tu asistente de IA puede operar esa cuenta. Los datos de posiciones que recibe el asistente se verifican contra la terminal, y cuando no se pueden verificar, la herramienta lo indica en lugar de dar a entender que la cuenta está vacía.
Hoja de ruta — acciones globales
Está planeado el trading de acciones globales a través de Interactive Brokers (IBKR), con el objetivo de alcanzar 170 acciones globales accesibles desde la misma conexión MCP que la cripto y el forex. Esto es un elemento de la hoja de ruta y no está disponible hoy; nada en esta página aparte de este párrafo lo describe, y ninguna herramienta actual puede operar acciones. Cuando se lance, aparecerá como venue valores adicionales bajo las mismas herramientas, el mismo muro de políticas y los mismos recibos.
Latencia medida
Estas son mediciones, no cifras de marketing.
| Etapa | Medido |
|---|---|
| Recepción y análisis de la solicitud | 17–67 ms (mediana de 38 ms) |
| De extremo a extremo en MetaTrader 5 | Aproximadamente 1 segundo (849 ms medidos; 702 ms para cerrar) |
| De extremo a extremo en un exchange de cripto | Aproximadamente 3 segundos (2,785 ms medidos) |
| Motor paper | Mediana de 318 ms — sin ida y vuelta al exchange |
El tiempo que pasa dentro de tu cliente de IA — el modelo pensando, y tú confirmando — no está incluido y por lo general será el factor dominante. Este servidor no es una plataforma de ejecución de baja latencia y no se vende como tal.
Endpoints REST del panel
Todo lo que la IA no puede ni debe hacer por sí misma vive detrás de tu sesión normal ya iniciada.
POST /api/mcp/keys create a key (live requires 2FA)
GET /api/mcp/keys list keys
DELETE /api/mcp/keys/{key_id} revoke a key
POST /api/mcp/live-code send the live-scope confirmation code
POST /api/mcp/freeze | /api/mcp/unfreeze kill switch
GET /api/mcp/status connection status
GET /api/mcp/policies list policies
POST /api/mcp/policies/compile compile without activating
POST /api/mcp/policies/{id}/activate activate
POST /api/mcp/policies/{id}/deactivate deactivate
GET /api/mcp/audit audit log
GET /api/mcp/receipts receipts
GET /api/mcp/receipts/{receipt_id}/verify verify one receipt
GET /api/mcp/pubkey receipt public key
GET /api/mcp/paper | POST /api/mcp/paper/reset
Qué necesitas tener
La conexión MCP en sí es parte del producto y no se vende por separado. Lo que te limita en la práctica es a qué está destinada la IA a acceder: el trading en papel solo necesita una cuenta, mientras que el trading en vivo necesita un plan de pago activo y las cuentas conectadas que ese plan permite — y el trading en vivo con dinero real en MetaTrader 5 además requiere que actives explícitamente esa opción para esa cuenta. Los límites de plan sobre la cantidad de claves de exchange y cuentas de MetaTrader se detallan en la página de precios. Puedes probar todo con el saldo paper de $5,000 antes de que nada de eso importe.
Preguntas frecuentes
live , y ese alcance solo se emite después de un segundo factor. Hasta entonces, el mismo asistente funciona contra un saldo paper de $5,000 con herramientas idénticas, así que puedes ensayar todo el flujo de trabajo antes de que haya dinero real accesible.get_portfolio_context devuelve todas en una sola llamada. Cuando tienes más de una cuenta en el mismo mercado, el parámetro account se vuelve obligatorio y una solicitud ambigua se rechaza en lugar de enviarse a una cuenta predeterminada.POST /api/mcp/freeze. Cada herramienta entonces devuelve user_frozen hasta que lo desactives. Para cortar el acceso de un solo cliente en cambio, revoca solo esa clave — las demás siguen funcionando.verify_receipt o de forma independiente contra la clave pública en /mcp/receipts/pubkey. Editar un recibo antiguo rompe la cadena para todos los recibos posteriores, que es exactamente lo que hace detectable cualquier manipulación.Conecta un asistente de IA a tus cuentas
Empieza con el saldo paper de $5,000. Sin tarjeta, nada que instalar, y el límite hacia el dinero real permanece cerrado hasta que lo abras deliberadamente.
Crea una cuenta gratuita Ver la descripción generalRelacionado: MCP para asistentes de IA · Trading MCP: Claude y ChatGPT a 16 Exchanges + MT5 · exchanges compatibles · forex de MetaTrader 5 · automatización de TradingView · qué es un servidor MCP de trading · seguridad · precios.
Operar conlleva riesgo. La automatización no lo elimina, y un asistente de IA no constituye asesoría de inversión. Empieza en modo paper.