Skip to main content
Glama
yakychan

polymarket-mcp

by yakychan

Polymarket MCP · 5-minute Up/Down

This repository provides a local Model Context Protocol server for BTC, ETH, SOL, and XRP five-minute Up/Down markets on Polymarket. The connected AI chooses whether to trade; the server validates market data, risk limits, order parameters, persistence, and execution state.

The default mode is paper: public market data is real, but funds are virtual. Live mode signs and submits real CLOB orders using credentials supplied by the operator. Start in paper mode and review the risk controls before enabling live mode.

Language

Main guide

Full references

Español

README.md

Herramientas · SL · Base de datos · Arquitectura

English

README.en.md

Tools · Stop-loss · Database · Architecture

Highlights

  • Paper/live separation with persistent, idempotent order receipts.

  • Conservative per-trade, daily, market, asset, and position limits.

  • SQLite audit trail for quotes, orders, fills, stops, forecasts, resolutions, observations, and diagnostics.

  • Optional user-authorized local stop-limit monitor with process locking and restart recovery.

  • Chainlink TWAP observations through Polymarket RTDS, with freshness metadata and no invented history.

  • MCP errors with stable codes, isError, correlation IDs, and secret-safe diagnostics.

Related MCP server: polymarket-trader-mcp

Quick start

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
Copy-Item .env.example .env
.\.venv\Scripts\python.exe -m pytest -q

Configure the client with examples/mcp.json or examples/codex.toml. The complete setup, configuration table, stop-loss behavior, database backup, and distribution workflow are documented in the language-specific guides above.

Safety and scope

An automatic stop-loss is a local stop-limit on the Up/Down token. It is not an exchange-hosted guarantee and may fail when the market has no liquidity within the configured limit. The monitor must remain running and connected. This project does not create blockchain approvals, transfer funds, or redeem winning positions.

Current validation: 65 automated tests, public paper smoke test, and Chainlink RTDS smoke test. No real live order is submitted by the test suite.


TEST LOCAL

Documentación detallada en español

English version: README.en.md. Las guías en inglés están junto a cada documento español con el sufijo _en.md.

Servidor MCP local en Python para consultar mercados BTC/ETH/SOL/XRP de cinco minutos, operar en paper o live y guardar la actividad en SQLite. La IA del cliente decide las entradas. Un monitor independiente ejecuta únicamente los stop-loss que el usuario solicite.

Versión 0.2.0. Transporte stdio. Requiere Python 3.11 o posterior. El servidor no necesita una API key de un proveedor de IA. Cada persona configura su propia wallet y base de datos; el paquete distribuible no contiene credenciales.

Instalación rápida

Descomprimir el paquete y abrir una terminal en esa carpeta.

Windows / PowerShell:

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
# Sólo en una instalación nueva: no reemplazar un .env existente.
Copy-Item .env.example .env
.\.venv\Scripts\python.exe -m pytest -q
.\.venv\Scripts\python.exe -m polymarket_mcp --check

Linux / macOS:

python3 -m venv .venv
.venv/bin/python -m pip install -e '.[dev]'
# Sólo si todavía no existe .env:
cp -n .env.example .env
.venv/bin/python -m pytest -q
.venv/bin/python -m polymarket_mcp --check

El ejemplo usa OPERATION_MODE=paper, saldo virtual inicial de USD 1000 y datos públicos reales. --check sólo valida configuración y consulta APIs públicas: no inicia el monitor ni firma órdenes. Para uso sin desarrollo se puede instalar con pip install .; indicar siempre POLYMARKET_ENV_FILE con ruta absoluta si se instala como paquete fuera de la carpeta fuente.

Conectar un cliente MCP

El cliente debe lanzar el Python del entorno virtual con run_mcp.py. Usar rutas absolutas y reiniciar la conexión después de instalar o cambiar el .env.

Ejemplo JSON para clientes que aceptan mcpServers:

{
  "mcpServers": {
    "polymarket": {
      "command": "C:/ruta/polymarket-mcp/.venv/Scripts/python.exe",
      "args": ["C:/ruta/polymarket-mcp/run_mcp.py"],
      "env": {
        "POLYMARKET_ENV_FILE": "C:/ruta/polymarket-mcp/.env"
      }
    }
  }
}

En Linux/macOS, usar /ruta/polymarket-mcp/.venv/bin/python. Ajustar la ubicación del archivo JSON según el cliente; ver ejemplo completo.

Codex

Fusionar examples/codex.toml con la configuración del cliente, reemplazando las rutas. Alternativamente, registrar por CLI:

codex mcp add polymarket --env "POLYMARKET_ENV_FILE=C:/ruta/polymarket-mcp/.env" -- "C:/ruta/polymarket-mcp/.venv/Scripts/python.exe" "C:/ruta/polymarket-mcp/run_mcp.py"

Las opciones command, args, env, startup_timeout_sec y tool_timeout_sec están documentadas en MCP de Codex. La política de permisos del cliente sigue aplicándose. No poner claves de wallet en archivos de configuración para compartir.

Primer uso

Pedido sugerido:

Consultá modo, saldo, límites y salud del monitor. Analizá BTC Up/Down de cinco minutos con las reglas, el libro y los datos disponibles de Chainlink. Registrá tu probabilidad estimada. Antes de operar, mostrámela junto con la cotización y el motivo. Si te pido SL, configurá sus parámetros y explicame su precio mínimo de salida. Informame los movimientos con sus estados reales.

Flujo habitual: get_status → get_portfolio → discover_markets → get_market_snapshot / get_market_context → record_forecast → quote_trade → execute_trade → poll_updates.

BUY amount es nominal en dólares, al que se suma la comisión. SELL amount es cantidad de shares. Los importes admiten hasta dos decimales; limit_price debe respetar el tick. Todas las órdenes son FOK: ejecución completa dentro del límite o rechazo.

Ejemplo de cotización, usando un slug que exista actualmente:

{"slug":"btc-updown-5m-TIMESTAMP","outcome":"up","side":"BUY","amount":"5.00","limit_price":"0.55"}

Para ejecutar con SL optativo:

{"quote_id":"ID_DEVUELTO","reason":"Motivo de la decisión","stop_loss_percent":"20","stop_slippage":"0.03"}

La configuración del SL y la intención de compra se guardan en la misma transacción. En live espera confirmación de la entrada para calcular el disparador. Repetir execute_trade con el mismo quote_id devuelve la misma orden: no crea otra compra ni cambia un SL existente.

Stop-loss automático

Se puede configurar al comprar o después mediante set_stop_loss. Nunca se activa sólo por iniciar el servidor. Por ejemplo, una entrada media a 0,50 con loss_percent=20 dispara al observar un bid de 0,40 o menor. Con tolerancia absoluta slippage=0.03, el precio mínimo de venta es 0,37, ajustado al tick hacia arriba.

Es un stop-limit local sobre el token Up/Down, no sobre la cotización de BTC/ETH y no una orden stop alojada en el exchange. El porcentaje excluye comisiones; no garantiza una pérdida máxima ni una salida. Sin liquidez suficiente dentro del límite, el monitor registra el problema y vuelve a evaluar mientras el mercado siga operable. Un timeout con envío incierto se reconcilia y no se reenvía con otra intención.

El monitor vive dentro del proceso MCP. Para mantenerlo funcionando al cerrar el cliente, ejecutar en otra terminal o mediante un supervisor:

.\.venv\Scripts\python.exe -m polymarket_mcp --worker

Usar el mismo .env, modo y DATABASE_PATH. Un bloqueo del sistema operativo elige un único monitor por base/modo; otro proceso puede tomar el relevo al salir el primero. El equipo debe permanecer encendido y con conexión. get_status.monitor informa heartbeat y salud; list_stop_losses muestra los errores de cada SL.

La pausa total detiene compras, ventas nuevas y SL. set_reduce_only(true) bloquea compras y permite salidas, salvo que también exista pausa total. Detalles y ejemplos: Stop-loss.

Historial y base de datos

Todo se guarda en data/trading.sqlite3 por defecto. La base conserva cotizaciones, órdenes, eventos de movimientos, posiciones paper, stops, pronósticos, resoluciones oficiales, observaciones Chainlink y diagnósticos. Reiniciar no borra el historial ni recarga el saldo paper.

Consultar get_trade_history para el estado acumulado de cada orden; get_movements para la auditoría con cursor y filtros; get_metrics para latencias, fallos, variaciones de precio y evaluación de pronósticos. poll_updates además sincroniza y puede liquidar posiciones paper. Los eventos de una misma orden no representan compras adicionales.

La base no contiene claves privadas, firmas ni credenciales. Sí contiene información financiera y motivos escritos por el usuario/IA: tratarla como privada. No ofrece un endpoint de SQL arbitrario.

Crear una copia consistente, incluyendo datos que estén en WAL:

.\.venv\Scripts\python.exe scripts/backup_db.py --source data/trading.sqlite3 --output backups/trading-copia.sqlite3

El script se niega a sobrescribir un destino existente. Consultas SQL, esquema y precauciones de restauración: Datos y operación.

Configuración

El .env tiene prioridad sobre variables heredadas. POLYMARKET_ENV_FILE selecciona otro archivo; si se indica y no existe, el arranque falla. Cambios de configuración requieren reiniciar todos los procesos que usan esa configuración.

Variable

Predeterminado

Uso

OPERATION_MODE

paper

paper o live; ningún tool cambia el modo

DATABASE_PATH

data/trading.sqlite3

Relativa al .env o absoluta

PAPER_INITIAL_BALANCE

1000

Sólo al crear la cuenta paper

MAX_BET_USD

10

Máximo por compra, con reserva de comisión

MAX_DAILY_SPEND_USD

100

Compras por día UTC; ventas no lo reinician

MAX_MARKET_EXPOSURE_USD

25

Coste abierto y reservas por mercado

MAX_ASSET_EXPOSURE_USD

50

Coste abierto y reservas por activo

MAX_OPEN_POSITIONS

10

Tokens con posición o compra pendiente

QUOTE_TTL_SECONDS

20

Vigencia de la cotización

MIN_SECONDS_TO_CLOSE

15

Últimos segundos en que ya no se opera, incluido SL

MAX_BOOK_AGE_SECONDS

15

Antigüedad máxima del libro

MONITOR_INTERVAL_SECONDS

2

Pausa entre ciclos; se suma el trabajo y la latencia

ENABLE_CHAINLINK_FEED

true

Recolectar TWAP públicos de 30/60 segundos

ALLOWED_ASSETS

btc,eth,sol,xrp

Activos admitidos

La exposición sólo cubre movimientos registrados por este MCP. Los fills live confirmados tienen coste nominal conocido; la comisión efectiva puede faltar. Mientras una compra esté pendiente se reserva su débito completo, incluso si ya hay fills parciales, de forma conservadora. Las resoluciones oficiales liberan exposición de mercados terminados. Rechazos verificables y fallos completos liberan presupuesto; cancelaciones conservan la reserva diaria.

En live configurar WALLET_PRIVATE_KEY, POLYMARKET_API_KEY, POLYMARKET_API_SECRET, POLYMARKET_API_PASSPHRASE, POLYMARKET_SIGNATURE_TYPE y, si corresponde, POLYMARKET_FUNDER_ADDRESS. Tipos 1/2/3 requieren funder. La base live queda vinculada a la wallet: usar otra base para otra wallet. No compartir la misma base entre configuraciones con distintos activos o límites. SQLite debe estar en disco local, no en una carpeta sincronizada o unidad de red.

Este MCP no crea approvals, transfiere fondos ni ejecuta redeem. POLYGON_RPC_URL está reservado y no se utiliza. El canje de posiciones ganadoras live se realiza desde Polymarket. Se verifica geoblock antes de enviar.

Herramientas y límites conocidos

La referencia de 21 herramientas detalla parámetros, errores y efectos. La arquitectura describe concurrencia y recuperación.

  • Paper usa profundidad y comisiones, pero no reproduce competencia por liquidez, todos los redondeos ni la latencia del exchange. Un resultado paper no acredita rentabilidad live.

  • submitted y MATCHED no son liquidación confirmada. Los fills se reconocen al llegar a CONFIRMED. Si falta la orden remota, se conserva evidencia de fills confirmados, pero se mantiene unknown hasta verificar cobertura completa.

  • Una caída entre guardar la intención y hacer el POST deja submitting. Se conserva y se investiga; no hay reenvío automático ni herramienta para declararla rechazada sin evidencia.

  • RTDS no proporciona historial previo ni replay: la serie empieza cuando el colector recibe datos. Hay indicadores de antigüedad y ausencia de referencia inicial. No se deduce un ganador de esas observaciones.

  • Posiciones live de Data API: hasta 500, con posible demora. PnL neto live completo y comisión efectiva por fill no están disponibles en esta versión.

  • Las entradas nuevas requieren llamadas del cliente. El monitor sólo reconcilia, recopila datos y ejecuta SL ya autorizados. No envía mensajes a Telegram ni a otros chats.

Pruebas y distribución

.\.venv\Scripts\python.exe -m pytest -q
.\.venv\Scripts\python.exe scripts/smoke_public.py
.\.venv\Scripts\python.exe scripts/smoke_feed.py --seconds 15
.\.venv\Scripts\python.exe scripts/build_share.py

Los tests usan bases temporales y un broker simulado. La firma V2 se prueba con una clave pública de fixture, nunca con la wallet del usuario. Los smoke tests consultan servicios públicos y no leen .env; la compra smoke es virtual. No se valida live enviando dinero real.

build_share.py crea un ZIP mediante una lista explícita de archivos. Compartir ese ZIP, no comprimir toda la carpeta de trabajo: se excluyen .env, bases, configuraciones personales, backups, bots heredados y entorno virtual. Cada destinatario instala las dependencias y crea su propio .env. Ver guía de distribución y actualización.

Referencias oficiales: SDK CLOB V2, ciclo de órdenes, errores CLOB, Chainlink TWAP, errores MCP. Integraciones consultadas el 13 de septiembre de 2026.

Available Tools

21 tools
cancel_orderA
DestructiveIdempotent

Intenta cancelar una orden live de este MCP. No revierte shares ya compradas/vendidas.

ParametersJSON Schema
NameRequiredDescriptionDefault
local_order_idYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive and non-read-only behavior Anastasia, but the description adds meaningful context: the cancellation is only an attempt ('Intenta') and it does not reverse shares already bought or sold. This helps the agent set correct expectations. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no fluff. The primary action is front-loaded, and the second sentence provides a key limitation. Every part contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter cancellation tool with annotations covering destructive/idempotent behavior, the description is mostly complete. It states the scope (live order), the tentative nature of the action, and a major limitation (no reversal of filled shares). It does not describe return values, but there is no output schema and the tool is straightforward.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, and the description does not mention local_order_id at all. The parameter name and title are somewhat self-explanatory, but the description adds no semantic value beyond the schema and fails to compensate for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('cancelar') and a clear resource ('una orden live de este MCP'), and it adds the important limitation that it does not revert shares. This distinguishes it from the sibling cancel_stop_loss, which targets stop-loss orders rather than live orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this tool is for canceling live orders, which implies it is not for stop-loss orders or other order types. However, it does not explicitly name alternatives or state when not to use it, so the guidance is clear but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_stop_lossA
DestructiveIdempotent

Desactiva futuros envíos del SL; no revierte una venta ya reservada/enviada.

ParametersJSON Schema
NameRequiredDescriptionDefault
stop_idYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive, idempotent, and non-read-only behavior. The description adds valuable behavioral context beyond those hints by clarifying that the destructiveness only applies to future stop-loss sends and not to already-executed sales. This prevents the agent from assuming the tool will undo a completed trade.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise sentence with no filler. It front-loads the primary action and follows with the critical limitation. Every clause earns its place, and the structure supports quick parsing by an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter cancellation tool with annotations covering destructive and idempotent behavior, the description is mostly sufficient. However, it does not explain the stop_id parameter, does not describe expected outputs or errors, and relies on the agent inferring that 'SL' means stop-loss. These gaps make it adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero description coverage and the only parameter, stop_id, is not explained in the description. An agent can infer that stop_id is likely the identifier of the stop-loss to cancel, but the description does not provide any guidance on where to find it, what format it uses, or how it relates to the tool's behavior. Given the low schema coverage, the description should compensate more.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Desactiva'), a specific resource ('futuros envíos del SL'), and explicitly rules out a different outcome ('no revierte una venta ya reservada/enviada'). This clearly distinguishes it from related tools like cancel_order without needing to name them, and it tells an agent exactly what effect to expect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when the tool is appropriate: it deactivates future stop-loss triggers. It also gives an explicit exclusion by stating that it does not reverse an already reserved/sent sale. It does not name sibling alternatives explicitly, but the boundary is clear enough for an agent to avoid misusing it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_marketsC
Read-only

Mercados 5m del intervalo actual y próximos. windows: 1..6. Sólo se opera el actual.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetNo
windowsNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The phrase 'Sólo se opera el actual' adds a behavioral constraint, but it is ambiguous (operated/traded) and does not explain return behavior, dynamic data, or pagination. The description adds little reliable context beyond what annotations already supply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short and each fragment is compact, but the structure is telegraphic and missing a clear sentence. It is concise, but the under-specification makes it closer to a note than a tool description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the two optional parameters, lack of output schema, and sparse description, the agent lacks enough information to correctly call the tool and interpret results. The meaning of 'windows', 'asset', and 'Sólo se opera el actual' is left ambiguous, making the description incomplete for reliable use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does mention 'windows: 1..6', which gives a valid range for the windows parameter, but it completely omits any meaning for the 'asset' parameter. With two parameters and no descriptions, this is insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Mercados 5m del intervalo actual y próximos' indicates the tool relates to 5-minute markets for the current and upcoming intervals, but it is a noun phrase with no explicit verb like 'returns' or 'lists'. It gives some scope but does not clearly distinguish from sibling tools such as get_market_snapshot or get_market_context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. The description never mentions conditions, prerequisites, or sibling tools, leaving the agent to infer the appropriate context from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_tradeA
DestructiveIdempotent

EJECUTA una cotización vigente: dinero virtual en paper, REAL en live. reason: motivo decidido por la IA. Repetir quote_id devuelve la misma operación. Mostrar el comprobante al usuario; luego consultar poll_updates para confirmaciones. SL optativo: stop_loss_percent=20 activa salida al caer 20% el precio del token desde la entrada. stop_slippage=0.03 permite 3 centavos por debajo del disparador.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYes
quote_idYes
stop_slippageNo0.03
stop_loss_percentNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavior beyond the annotations: it distinguishes paper trading from live real-money trading, states idempotency ('Repetir quote_id devuelve la misma operación'), reveals the async confirmation flow via poll_updates, and explains stop-loss and slippage behavior. This goes well beyond the readOnly/destructive/idempotent hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action, followed by workflow notes and parameter details. Every sentence adds useful information, and there is no filler or repetition of schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a real-money-capable mutation with no output schema, the description covers the essential context: paper vs live mode, idempotency, next steps, and optional risk controls. It does not explicitly describe the return payload, but mentioning the 'comprobante' and poll_updates is enough for an agent to proceed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description explains all four parameters: reason as the AI-decided motive, quote_id as the identifier that yields the same operation when repeated, stop_loss_percent with a concrete exit example, and stop_slippage with a concrete tolerance example. This fully compensates for the lack of schema-level descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and resource: 'EJECUTA una cotización vigente', making it clear this tool executes an existing quote rather than creating one. It does not explicitly name the sibling alternative quote_trade, but the wording is specific enough to distinguish execution from quoting.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear operational guidance: use it on a current quote, show the receipt to the user, then consult poll_updates for confirmation. It does not explicitly state when not to use the tool or name alternatives, but the workflow context is sufficient for most agents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_market_contextD
Read-only

Reglas y referencias Chainlink TWAP 30/60s, antigüedad y variación desde inicio cuando disponible.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

TDQS

D1.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds some behavioral context by naming the data points returned and noting they are provided only when available, which is useful but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, but it is a cryptic fragment rather than a clear statement, and it does not front-load an actionable purpose. Brevity here is under-specification, not conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, an undocumented required slug parameter, and many closely related sibling tools, the description does not provide enough information to call the tool correctly. An agent cannot determine what to pass or what to expect in return.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required parameter, slug, with no description; schema description coverage is 0%. The description does not mention slug or clarify what values it accepts, so it fails to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a noun phrase listing data elements (Chainlink TWAP 30/60s rules, age, variation since start) rather than stating what the tool does. It does not clearly differentiate from siblings like get_market_snapshot or get_price_history, and 'when available' adds ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No mention of when to use this tool or which alternatives to choose. The description gives no context regarding preferred scenarios or sibling routing, leaving the agent to guess.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_market_snapshotC

Reglas oficiales, fuente de resolución, cierre, libros Up/Down y comisiones actuales.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide only readOnlyHint=false and destructiveHint=false, so the description carries the burden of clarifying whether calling this tool mutates state. It does not state side effects, data freshness, pagination, or error behavior; it only lists informational content. The read-only nature is merely implied by the 'get' prefix and the word 'snapshot', not disclosed explicitly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loads 'Reglas oficiales', but it is a noun-phrase fragment rather than a well-formed sentence. It is concise without being wasted, yet it omits essential functional context, so it reads as under-specified rather than deliberately tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no parameter documentation, and no usage guidance, the description is not complete enough for reliable invocation. It does enumerate several response topics, which helps, but it fails to explain the slug value, the response shape, or whether the operation is safe. A simple tool still needs enough context for correct use; this falls short.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole required parameter 'slug' has 0% schema description coverage, and the description never mentions slug, its meaning, acceptable formats, or examples. An agent cannot determine from this definition what identifier must be passed. The description adds no parameter semantics beyond the bare property name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names specific content categories — official rules, resolution source, close, Up/Down books, and current commissions — which makes the intended output clear beyond the tool name. It lacks an explicit verb like 'gets' or 'retrieves', so it is not a full sentence, but the resource is recognizable. It does not explicitly contrast with siblings like get_market_context, so no differentiation credit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this tool versus siblings such as get_market_context, get_price_history, or discover_markets. The content list implies a market-snapshot use case, but no exclusions or alternative-selection conditions are provided. An agent is left to infer when this is the right endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_metricsA
Read-only

Estados de órdenes, latencias, errores seguros, slippage y Brier de pronósticos resueltos.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to restate safety. It adds value by specifying the kind of data exposed, but it does not disclose behavioral details such as whether metrics are cached, real-time, aggregated over a window, or how the response is shaped. With annotations covering the safety profile, this is an acceptable but not rich disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact phrase with no filler or repetition. Every listed item adds information about the tool's output scope, making it appropriately sized for a parameterless metrics endpoint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-input, read-only metrics tool, the description covers the main return categories, which is the most important missing information given there is no output schema. However, it does not mention response format, time range, units, or whether metrics are historical or live, leaving some ambiguity in a completely open world.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there is no parameter semantics burden on the description. Per the baseline for 0-param tools, a score of 4 is appropriate; the description uses the available space to explain what the returned metrics cover instead.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a distinct resource—metrics—and lists its specific content areas: order states, latencies, safe errors, slippage, and Brier scores for resolved forecasts. It does not use an explicit verb like 'retrieves' or 'returns', but the tool name and noun-phrase list make the purpose reasonably clear and distinguish it from sibling get_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use get_metrics versus get_status, get_market_snapshot, get_trade_history, or other sibling tools. The description relies entirely on the name and metric list, leaving the agent to infer the appropriate selection context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_movementsA
Read-only

Auditoría SQLite con cursor y filtros. No sincroniza ni opera. Eventos no son débitos adicionales.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
slugNo
afterNo
limitNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds value beyond that: 'No sincroniza ni opera' clarifies the tool performs no side effects, and 'Eventos no son débitos adicionales' guards against a likely misinterpretation of event data as financial debits. This is genuinely useful behavioral context the annotations do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each carrying distinct information: the core purpose, the non-behaviors, and the debit misinterpretation guardrail. The main idea is front-loaded and there is zero waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with all-optional parameters, an agent can invoke it safely with defaults (limit=100) based on this description. However, meaningful filtered use requires knowing parameter semantics (valid kind values, what slug refers to, which param is the cursor), and with no output schema the return shape is also undisclosed. Adequate for basic calls, incomplete for deliberate filtering.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the description carries the full burden of explaining kind, slug, after, and limit. 'Con cursor y filtros' hints that some parameters paginate and some filter, but it never maps which parameter is the cursor, what kind/slug select on, or what values are valid. This under-compensates for a complete absence of schema-level documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific operation (auditoría/audit) over a concrete resource (SQLite) with explicit mechanics ('con cursor y filtros'). The negation 'No sincroniza ni opera' differentiates it from siblings like sync_orders and execute_trade. It would be a 5 with a clearer positive statement of what the audit produces, and the Spanish phrasing is slightly less accessible than an English description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives only negative guidance: 'No sincroniza ni opera' implies the agent should not reach for this tool for sync or trading actions. It never explicitly states when to use it or names an alternative tool for those cases, leaving the routing logic to inference rather than direct instruction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_portfolioB
Read-only

Saldo, posiciones y PnL disponible del modo activo. No modifica ni liquida posiciones.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description repeats the read-only nature ('No modifica ni liquida posiciones') which is already covered by annotations (readOnlyHint=true, destructiveHint=false). It adds the 'modo activo' context but does not disclose any other behavioral details such as rate limits, authentication, or what happens if the mode is not active. With annotations already providing the safety profile, the description adds minimal extra value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded with the main purpose, followed by a safety note. It is efficient with no wasted words. However, it could be slightly more detailed about what 'disponible' means, but it is still concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter read-only tool with annotations covering safety, the description is complete enough: it names the key outputs (balance, positions, PnL). There is no output schema, so the description carries the burden of indicating return values, which it does. The ambiguity of 'modo activo' is minor and likely understandable in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

This tool has zero parameters, so the description does not need to explain any. The schema coverage is trivially 100%. The baseline for 0 params is 4, and the description is acceptable without parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns balance, positions, and available PnL for the active mode ('Saldo, posiciones y PnL disponible del modo activo'). This specifies the resource and the type of data, distinguishing it from get_metrics and get_status. However, it does not explicitly name a sibling to differentiate, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. The only hint is that it does not modify or liquidate positions, implying it is safe to call without side effects, but this is not an explicit 'use this when...' statement. No exclusions or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_historyB
Read-only

Historial LOCAL recibido de Chainlink; ventana TWAP 30/60s, since Unix UTC. Sin datos previos inventados.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetYes
limitNo
sinceNo
windowNo

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, so the read-only nature is covered. The description adds meaningful behavior beyond the annotations: data originates from Chainlink, is local, is TWAP-windowed at 30/60 seconds, uses Unix UTC for 'since', and is not synthetic/invented. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short with no filler; each clause adds a distinct piece of information. It is slightly fragmentary and mixes Spanish with an English timestamp phrase, but the structure is compact and front-loaded enough for quick parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should clarify what the caller receives. It gives important input conventions and data quality guarantees, but it does not describe the returned payload shape, units, ordering, or how 'limit' affects the result. For a price-history endpoint, these are material gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains 'window' as a TWAP window in seconds and 'since' as Unix UTC, and the asset enum is self-documenting. However, 'limit' is not explained, and '30/60s' is ambiguous about accepted values or default behavior, leaving part of the parameter surface underspecified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The tool name supplies the action ('get') and the description identifies the resource as Chainlink-sourced price history with a TWAP window, making the purpose clear. It does not explicitly state 'returns historical price data' in a full sentence, and it does not differentiate among sibling history/snapshot tools, so it stops short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives. Phrases like 'LOCAL' and 'no invented previous data' hint at characteristics, but the sibling list includes several plausible competitors (get_market_snapshot, get_market_context, get_trade_history) with no routing conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_statusB
Read-only

Modo activo, límites y estado. No muestra secretos ni hace operaciones.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the extra trait that it does not show secrets, which is a useful privacy disclosure beyond the annotations, while also reinforcing that it performs no operations. This is minor but non-redundant context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The core content categories are front-loaded, and the safety/privacy note follows. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, zero-parameter tool, the safety profile is adequately covered, but 'Modo activo, límites y estado' is vague about what status or limits are being reported. Since there is no output schema, the agent cannot anticipate the return structure, and the description does not clearly distinguish this tool from the many status/metric siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, making schema description coverage trivially 100%. With no parameters to document, the description does not need to add parameter meaning, and there is no semantic gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool reports 'Modo activo, límites y estado' (active mode, limits, and status), which gives some content cues, but it lacks a clear verb and specific resource. It differentiates itself only by negative constraints (no secrets, no operations), not by a concrete operation scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given on when to use this tool over alternatives. The phrase 'No muestra secretos ni hace operaciones' implies a safe, read-only operation, but it does not name sibling tools or specify conditions. Among many read-only siblings like get_metrics and get_portfolio, the selection remains ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trade_historyC
Read-only

Comprobantes persistentes del modo activo, recientes primero. limit 1..200.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose that this is a read-only, non-destructive operation. The description adds useful behavioral detail by stating that records are persistent and sorted most-recent-first. However, it does not explain what 'modo activo' means, how pagination behaves, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with no filler; it front-loads the purpose and includes a useful constraint on the limit parameter. It is concise, though arguably so terse that some meaning is lost.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter list tool, the description is minimal but incomplete: no output schema exists, so return values are unspecified; offset semantics are missing; and the key term 'modo activo' is undefined. An agent could invoke the tool, but it would lack important context for interpreting results or paginating correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate for parameter meaning. It adds the valid range for limit ('limit 1..200'), which is helpful, but it gives no explanation of offset or how paging relates to the recency ordering. This is only partial compensation for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific resource ('Comprobantes persistentes del modo activo') and an ordering behavior ('recientes primero'), which clearly points to trade history as distinct from price history or movements. It lacks an explicit verb, but the tool name plus the resource phrase make the purpose reasonably clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives such as get_movements, get_price_history, or get_portfolio. The phrase 'modo activo' hints at a context, but it is not explained and no exclusions or alternative tool names are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_stop_lossesB
Read-only

SL persistidos: estado, configuración, intentos, orden vinculada y último error.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
active_onlyNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, so the safe read-only nature is covered. The description adds useful context that the data is persisted and includes internal fields like attempts and last error, but it does not disclose behavioral details such as pagination behavior, ordering, or how active_only affects results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact phrase with no filler, front-loading the subject and then listing the data fields. It is efficient, though it sacrifices completeness for brevity and is not structured as a full sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema, the description provides the main returned fields and benefits from annotations covering the safety profile. However, it omits parameter semantics and any notes on pagination or filtering behavior, leaving important invocation details implied by parameter names and defaults.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description mentions none of the parameters (limit, offset, active_only). The parameter names are conventional and somewhat self-explanatory, but the description does not compensate for the missing schema documentation, such as the meaning of active_only or the default behaviors of limit and offset.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource (persisted stop losses) and enumerates the returned data fields: status, configuration, attempts, linked order, and last error. The action 'list' is not explicitly stated, but it is clear from the tool name and the read-only annotations. It does not explicitly differentiate itself from sibling tools like get_trade_history or poll_updates, but the resource focus is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives such as set_stop_loss, cancel_stop_loss, or get_trade_history. The description gives no scenario, prerequisites, or selection criteria, leaving the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

poll_updatesA
Idempotent

Sincroniza y entrega eventos apuesta por apuesta. Guardar next_cursor como próximo after. Incluye órdenes, fills y resultados. El cliente debe invocarlo periódicamente.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNo
limitNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description adds meaningful behavioral context: it is a periodic polling endpoint, it returns paginated events, and the caller must persist next_cursor. The idempotentHint aligns with repeated polling, and there is no contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core action, followed by practical instructions. Every sentence adds useful information, though the phrase 'apuesta por apuesta' is slightly ambiguous and could be clearer.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a polling tool with two optional parameters and no output schema, the description covers the essential contract: what events are delivered, how to paginate with the cursor, and that it must be invoked periodically. It does not describe the output shape or limit behavior, but the core usage is adequately specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains the `after` parameter by instructing the caller to save next_cursor as the next after value, which is valuable given 0% schema description coverage. However, the `limit` parameter is not mentioned or clarified, leaving part of the parameter semantics to inference from its name and default value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool synchronizes and delivers bet-by-bet events, and lists the content types: orders, fills, and results. It is specific enough about the resource and action, though it does not explicitly differentiate itself from siblings like sync_orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context: the client must poll periodically and use next_cursor as the next `after` value. It does not explicitly compare against alternative tools or state when not to use it, but the polling pattern is clearly implied and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

quote_tradeA

Cotiza sin operar. BUY amount=USD nominales + comisión; SELL amount=shares (2 decimales). limit_price: máximo al comprar o mínimo al vender. Devuelve quote_id, vencimiento, estimación sobre profundidad y max_debit_usd incluyendo reserva de comisión.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideYes
slugYes
amountYes
outcomeYes
limit_priceYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses that no trade is placed, that a quote has an expiration, and exactly what the response includes: quote_id, vencimiento, depth estimate, and max_debit_usd including commission reserve. It does not mention any reservation or holding behavior, but the added output and non-execution details are valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, dense, and front-loaded with the most important fact: 'Cotiza sin operar.' Each sentence adds distinct information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 required parameters and no output schema, the description covers the return fields and major parameter behaviors, but omits the meaning of slug and outcome. It is not fully complete for an agent to invoke this tool confidently without additional inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning. It does explain side-dependent amount semantics and limit_price, but it leaves slug and outcome undefined. Since those are required and not documented in the schema, the description only partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening phrase 'Cotiza sin operar' states a specific verb (quote) and resource (trade) and explicitly distinguishes this tool from executing a trade. This clearly differentiates it from the sibling execute_trade and makes the core purpose obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: this tool quotes without executing, and it specifies how amounts should be interpreted for BUY vs SELL and how limit_price behaves. It does not explicitly name 'use this before execute_trade' or list exclusions, but the 'sin operar' distinction is a clear functional boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_forecastA

Guarda pronóstico antes del cierre (probabilidad 0..1), sin operar. Evaluación con ganador oficial.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
reasonYes
outcomeYes
probabilityYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds context beyond the annotations by noting the probability range and that no operation occurs. However, it does not explain whether forecasts can be overwritten, what happens after evaluation, or whether submission is final once the close occurs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is one compact sentence with no filler. It front-loads the core action and includes the most important constraints and evaluation context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with four required parameters, zero schema descriptions, and no output schema, the description is too thin. It does not explain the expected values for slug/outcome/reason, return behavior, or any failure conditions such as missing or late forecasts.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it only clarifies the 'probability' parameter as a 0..1 value. The required parameters slug, outcome, and reason remain semantically unexplained, leaving the agent to infer their intended meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Guarda pronóstico'), a defined resource (forecast before closing), and a key constraint ('sin operar'). This clearly separates it from trading-oriented siblings like execute_trade and quote_trade.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Antes del cierre' gives an explicit temporal condition, and 'sin operar' clarifies that this is not a trading action. It does not name alternative tools explicitly, but the context is clear enough for an agent to choose this over execution tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_reduce_onlyA
DestructiveIdempotent

Bloquea compras nuevas y permite ventas/SL. La pausa total tiene prioridad.

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the behavioral effect (blocks buys, permits sells/SL) and the precedence relationship with total pause, which goes beyond the annotations. The annotations already signal mutation/destructive/idempotent, so this adds useful context without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler; the main effect is front-loaded and the second sentence adds a crucial priority caveat. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-boolean setter, the description covers the core behavior and the interaction with total pause. It does not define the disabled state or explicitly identify the total pause tool, but annotations and sibling names provide enough context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must explain the boolean parameter. It does not explicitly mention 'enabled' or map true/false to the described behavior, though the effect implies what the tool does when activated. This gap leaves the agent to infer the parameter meaning from the tool name and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear, specific action: blocking new purchases while allowing sales and stop-loss. It distinguishes itself from the sibling set_trading_paused by noting that total pause takes priority, so an agent can tell these tools apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is for partial restriction rather than full pause, and it notes that total pause has priority over this setting. However, it does not explicitly state when to choose this tool over set_trading_paused or set_stop_loss, leaving the decision to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_stop_lossA
Destructive

Autoriza SL automático para una compra: porcentaje sobre precio del token O disparador absoluto. Sólo a pedido del usuario. Un SL activo por token; slippage es tolerancia absoluta de precio. No garantiza ejecución. Requiere MCP/worker encendido. Persiste tras reiniciar.

ParametersJSON Schema
NameRequiredDescriptionDefault
slippageNo0.03
loss_percentNo
trigger_priceNo
local_order_idYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly=false, destructiveHint=true), the description adds valuable behavior: execution is not guaranteed, the stop-loss persists after restart, a worker must be running, and slippage is an absolute price tolerance. It stops short of explaining the destructive effect, such as whether an existing SL is overwritten.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short sentences, front-loaded with the core action and trigger modes, followed by caveats and prerequisites. There is no filler or redundant restating of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It covers the key operational constraints: non-guaranteed execution, worker requirement, persistence, and one active SL per token. However, the ambiguity of the 'O' between trigger modes and the undefined behavior when an SL already exists leave edge cases unresolved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must explain the parameters, and it does clarify loss_percent vs trigger_price and the meaning of slippage. However, it never explains the required local_order_id, nor whether loss_percent and trigger_price are mutually exclusive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Autoriza SL automático para una compra' and identifies the two trigger modes (percentage vs absolute). This clearly differentiates it from sibling stop-loss tools like list_stop_losses and cancel_stop_loss, though it does not name them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides relevant usage context: 'Sólo a pedido del usuario', 'Un SL activo por token', and the prerequisite 'Requiere MCP/worker encendido'. However, it does not explicitly say when to prefer this over sibling tools or what to do when a stop-loss already exists for the token.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

settle_paperA
Idempotent

Acredita una sola vez los resultados paper oficialmente resueltos; no envía transacciones.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already state idempotentHint=true, but the description adds 'una sola vez' to reinforce single-credit behavior. It also discloses a meaningful behavioral trait, 'no envía transacciones,' which is not present in the annotations. This gives the agent a clear picture that the tool only updates internal paper-trading state without real-world side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that front-loads the core action and then clarifies a key boundary (no transactions). Every clause earns its place, and there is no filler or repetition of schema/annotation info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and no output schema, the description covers the essentials: what it does, when it applies ('oficialmente resueltos'), its idempotency ('una sola vez'), and its non-transactional nature. The main gap is that 'paper' is not explained, but sibling context and the explicit non-transaction statement make the tool's role reasonably clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, making parameter semantics a non-issue. Per the rubric, a no-parameter tool receives a baseline of 4. The description adds no parameter details because there are none to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Acredita' = credits) and a resource ('resultados paper oficialmente resueltos' = officially resolved paper results), so it is not a tautology. It also distinguishes itself from transaction-executing tools by adding 'no envía transacciones,' which separates it from siblings like execute_trade. However, 'paper' is left undefined and the verb 'acreditar' could be more precise than the tool name 'settle_paper.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: after results are officially resolved and when crediting them exactly once. It also gives an exclusion by stating it does not send transactions, which steers agents away from using it for order execution. It does not name specific alternatives or provide explicit when-not-to-use guidance beyond the transaction exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_trading_pausedA
Idempotent

Pausa/reanuda nuevas ejecuciones de forma persistente; consultas siguen disponibles.

ParametersJSON Schema
NameRequiredDescriptionDefault
pausedYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds useful context beyond annotations: the change is persistent, affects only new executions, and queries remain available. This meaningfully clarifies the tool's runtime behavior without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence delivers the core behavior and two important qualifications: persistence and unaffected queries. There is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple boolean setter with strong annotations and no output schema, the description is largely complete: it states what is toggled, that the effect persists, and that read operations are unaffected. It does not cover effects on in-flight orders or authorization requirements, but those are marginal for this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, paused, has no schema description (0% coverage). The description's 'Pausa/reanuda' makes it easy to infer that true=paused and false=resumed, but it does not explicitly map boolean values to the parameter. For a single boolean this is adequate but not fully compensating for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies a specific action: pause/resume new trading executions, and adds that the effect is persistent. This is distinct from siblings like execute_trade, cancel_order, or set_reduce_only because it gates future executions rather than performing or canceling individual orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case: toggle the execution gate while keeping queries available. However, it does not explicitly state when not to use it or point to alternatives such as cancel_order for existing orders or set_stop_loss for risk controls, so the usage guidance remains inferred rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_ordersA
Idempotent

Reconcilia órdenes live con fills confirmados. En paper consulta resoluciones. No envía apuestas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds value beyond annotations by clarifying it does not send bets and by noting a behavioral difference between live and paper modes. It does not fully describe side effects or return behavior, but the additions are meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences, each earning its place: main action, mode-specific behavior, and a clear exclusion. The most important information is front-loaded. No redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter tool with no output schema, the description covers the core purpose and mode distinction, but it does not explain what the agent should expect as a result or return value (e.g., what a 'resolution' is or whether it returns a status). It also omits prerequisites (e.g., must have existing orders). The absence of output schema makes this gap more significant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so schema coverage is trivially 100%. The description correctly does not need to explain any parameters. The baseline for 0-parameter tools is 4, and the description meets that baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Reconcilia órdenes live con fills confirmados' (reconciles live orders with confirmed fills). It also explicitly differentiates from trade-execution siblings by saying 'No envía apuestas' (does not send bets), clarifying it is not an order-placing tool. This makes the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by distinguishing live versus paper behavior ('En paper consulta resoluciones') and explicitly states it does not send bets, which implies when not to use it. However, it does not name alternative tools (e.g., execute_trade) or provide explicit when-to-use conditions, so it lacks the strongest alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 21 tool updatesv0.2.0
    • First observedcancel_order
    • First observedcancel_stop_loss
    • First observeddiscover_markets
    • First observedexecute_trade
    • First observedget_market_context
    • First observedget_market_snapshot
    • First observedget_metrics
    • First observedget_movements
    • First observedget_portfolio
    • First observedget_price_history
    • First observedget_status
    • First observedget_trade_history
    • First observedlist_stop_losses
    • First observedpoll_updates
    • First observedquote_trade
    • First observedrecord_forecast
    • First observedset_reduce_only
    • First observedset_stop_loss
    • First observedset_trading_paused
    • First observedsettle_paper
    • First observedsync_orders

TDQS

B3.2/5.0

Scored across 21 tools

Disambiguation4/5

Most tools have clear action-resource boundaries, but sync_orders and poll_updates both handle reconciliation and event delivery, and get_market_snapshot/get_market_context/get_price_history overlap around market data. These are distinguishable with effort but could cause misselection.

Naming Consistency5/5

All tool names use a consistent snake_case verb_noun or verb_adjective pattern, such as cancel_order, discover_markets, set_stop_loss, and list_stop_losses. The only slight deviation is poll_updates, but it remains readable and predictable.

Tool Count4/5

At 21 tools, the server is slightly heavy but the breadth is justified by covering market discovery, trading, risk controls, paper settlement, sync, and audit. It stays within a reasonable range but is approaching the threshold where navigation becomes more demanding.

Completeness4/5

The core prediction-market workflow is well covered: discovery, quoting, execution, cancellation, portfolio, history, settlement, stop losses, sync, and audit. Minor gaps include no explicit open-order listing for paper mode and some redundancy among market-data tools, but there are no fatal dead-ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables interaction with Polymarket prediction markets through read-only access to market data, events, orderbooks, and user positions, plus authenticated trading capabilities for creating and managing orders.
    1
    -
  • A
    license
    A
    quality
    C
    maintenance
    Trade, analyze, and automate Polymarket prediction markets via AI. 34 tools for direct trading, smart money flow, copy trading, backtest, and portfolio management.
    48
    62 npm
    16
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides a comprehensive set of tools for Polymarket prediction market trading, including Gamma discovery, CLOB trading, gasless relayer, managed WebSockets, and paper simulation, enabling agents to interact with Polymarket natively.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to autonomously trade, analyze, and manage positions on Polymarket prediction markets with 45 tools, real-time WebSocket monitoring, and enterprise-grade safety features.
    MIT