pons-mcp
ponscli
Una interfaz de línea de comandos no oficial para la plataforma de lanzamiento de Pons en Robinhood Chain (ID de cadena 4663), creada tanto para desarrolladores como para agentes. No está afiliada a Pons ni a Robinhood; lee contratos públicos en una cadena pública.
Solo lectura por defecto. La CLI se ejecuta sin ver nunca una clave privada. La firma es una opción explícita, por lo que un agente no puede gastar por accidente.
Salida estructurada en todas partes.
--jsonen cada comando, activado automáticamente cuando stdout no es una terminal. Los errores también están estructurados, con códigos de salida estables.Los valores del protocolo se leen de la cadena. Las comisiones, las ventanas de impuestos y la lista de pares de tokens aprobados se consultan en vivo, nunca están codificados. Los valores en cadena difieren del código fuente del contrato.
RPC de dos niveles. Endpoints gratuitos con round-robin en el Nivel 1; un endpoint de pago en el Nivel 2, al que solo se llega después de agotar por completo el Nivel 1. Sin una credencial de pago, el trabajo masivo se degrada en lugar de convertir una interrupción en una factura.
Dos binarios.
ponspara personas,pons-mcppara modelos, sobre el mismo núcleo, de modo que el precio que se le cotiza a un agente es el precio que imprime la CLI.
Instalación
npm install -g ponscli
pons --versionO sin instalar nada. El paquete es ponscli y el binario es pons, por lo que hay que decirle a npx cuál ejecutar:
npx -p ponscli pons info 0x44D6…20f4Dos versiones de Node importan, y no son la misma. La CLI se ejecuta en 20.11 o superior, algo que CI comprueba en cada push instalando el tarball empaquetado exactamente en esa versión. Compilarla requiere 20.19 o superior, porque el árbol de dependencias del linter lo exige. Desde un clon, npm install compila como parte de la instalación, y npm run dev -- <command> la ejecuta desde el código fuente.
Related MCP server: r0x-os
Inicio rápido
Leer no requiere clave, cartera ni configuración.
pons info 0x44D6…20f4 # price, reserves, graduation phase, live snipe tax
pons pairs # every quote asset a launch may be priced in
pons watch 0x44D6…20f4 # follow one launch's trades as they happen
pons tx 0x2e8d…f58e # receipt, decoded logs, and why a failure failed
pons doctor # probe every RPC endpoint with real callsOperar requiere una clave. Nada se firma a menos que tú lo digas.
pons wallet create # generate a key into an encrypted keystore
pons buy 0x44D6…20f4 0.05 # price it, simulate it, print it. Nothing is sent
pons buy 0x44D6…20f4 0.05 --dry-run # the same, said explicitly
pons buy 0x44D6…20f4 0.05 --confirm # sign and broadcast
pons sell 0x44D6…20f4 50% --slippage 200Todo es legible por máquina cuando se canaliza, y ese es el comportamiento predeterminado:
pons info 0x44D6…20f4 | jq .graduationComandos
Referencia completa, incluido qué contrato toca cada comando: docs/commands.md.
Lectura, sin necesidad de clave
| Precio, suministro, progreso de graduación, comisiones, impuesto anti-snipe en vivo |
| Activos de cotización aprobados, en el orden en que el cliente de Pons los muestra |
| Operaciones de curva, recompras y graduación, seguidos con un cursor |
| Recibo, registros decodificados y el motivo de reversión detrás de un fallo |
Operaciones, con RPC y una clave
| Comprar en el lugar donde se negocie el token |
| Vender en el mismo |
| Completar una curva que ha alcanzado su umbral. Cualquiera puede llamar a esto |
Lanzamiento
| Crear un token. V2 por defecto |
Comisiones
| Comisiones de creador o protocolo V2 retenidas en el depósito de garantía |
| Comisiones de posición V1 retenidas por el bloqueador |
| La bóveda de recompra V2 |
Cartera y configuración
| Gestión de claves |
| Tenencias |
| Gastos |
| Configuración, y de dónde proviene cada valor |
| Salud del endpoint, probado con las llamadas que la CLI realmente hace |
Las dos generaciones
Pons ha lanzado tokens a través de dos fábricas, y ambas son compatibles. Nunca tienes que decir a cuál te refieres: se consultan ambos registros, y la respuesta lo resuelve todo a partir de ahí.
V1 | V2 | |
Lugar | un pool de Uniswap V3, desde el primer bloque | una curva de vinculación, que se gradúa a Uniswap V4 |
Activo de cotización | WETH | ETH, o uno de los 23 tokens aprobados |
Protección de apertura | límites de cartera y transacción, durante dos bloques | un impuesto anti-snipe, 99% que decae en tres segundos |
Liquidez | bloqueada para siempre; solo salen sus comisiones | sembrada en el pool en la graduación |
Comisiones |
|
|
Nuevos lanzamientos | cerrada | abierta |
La fábrica de V1 está retirada. launchEnabled() ha sido falso desde el 2026-08-12, y la transacción que lo estableció es lo último que la fábrica emitió; ninguna dirección ha sido incluida en la lista blanca después de eso, por lo que pons launch --generation v1 se niega antes de construir nada. Sus tokens son otro asunto. Miles aún mantienen liquidez, y una muestra de cuarenta pools vio 223 intercambios en menos de seis días, por lo que leerlos y operarlos es totalmente compatible.
Operaciones
Cada escritura construye primero un Plan: qué enviará, a quién, qué espera recibir y qué merece una advertencia. Ese mismo Plan es lo que se simula y lo que se firma, de modo que los tres no pueden divergir.
modo | qué sucede |
(sin bandera) | Construir el plan, simularlo contra el estado en vivo con una anulación de saldo, e imprimir ambos. Nada se firma ni se envía |
| El mismo trabajo, solicitado explícitamente: |
| Emitir calldata y valor para que otra persona los firme. El único modo que no simula |
| Firmar y transmitir |
Cuatro comportamientos que vale la pena conocer:
El lugar de negociación no es una elección que tengas que hacer. El registro de lanzamiento indica dónde se negocia el token.
--route curve|v4|v3anula esa respuesta en lugar de buscar una.El mínimo se fija cuando lo aceptas. El plan se reconstruye a partir del estado en vivo inmediatamente antes de transmitir, y el mínimo que aceptaste se traslada a la reconstrucción en lugar de recalcularse con el nuevo precio. Una operación no puede firmarse por debajo del límite que aprobaste, y si el precio se ha movido más allá, no se envía nada.
Una venta en una curva en su umbral se redirige, no falla. La curva deja de operar una vez que ha recaudado lo suficiente, y
pons graduate <token>es una llamada que cualquiera puede hacer.Una venta V1 se desenvuelve por ti. Los pools V1 mantienen WETH en lugar de ETH, por lo que una venta deja sus ganancias en el router y las desenvuelve en la misma transacción. Vender de la forma obvia funcionaría y te entregaría WETH.
Lanzamiento
pons launch --name "My Token" --symbol MINE --desc "..." # plan it and simulate it. Nothing is sent
pons launch --name "My Token" --symbol MINE --dry-run # the same, said explicitly
pons launch --name "My Token" --symbol MINE \
--pair USDG --creator-tax 250 --dev-buy 100 --confirm # launch, quoted in USDGUn lanzamiento es lo único aquí que no se puede deshacer. Antes de construir una transacción, el comando imprime todo lo que estás comprometiendo: la dirección en la que aterrizará el token, el suministro, dónde se gradúa, la división de comisiones y lo que hará el impuesto anti-snipe. También comprueba localmente todo lo que la fábrica rechazaría en cadena.
La dirección se conoce antes de enviar. Ambas generaciones despliegan con CREATE2 a partir de una sal que tú eliges, por lo que
pons launchimprime las direcciones del token y de la curva de antemano y rechaza una sal que ya esté ocupada.--saltacepta un valor bruto de 32 bytes, por lo que una dirección vanity minada funciona.Los términos están fijados.
previewLaunchEconomicsdevuelve un resumen que cubre el suministro, la comisión de la curva, el nivel de comisión del pool y la división de comisiones del protocolo, y viaja con el lanzamiento. Si el propietario del protocolo cambia alguno de ellos mientras tu transacción está en vuelo, el lanzamiento se revierte en lugar de revalorizarse silenciosamente.--dev-buyes atómico, y tiene que serlo. La fábrica V2 exige exactamente la comisión de lanzamiento y nada más, por lo que una compra inicial no puede viajar con ella; la compra pasa por el router propio de la plataforma de lanzamiento en la misma transacción. Un lanzamiento sin uno ha sido comprado en su totalidad en dos bloques en esta cadena.--buybackte cuesta a ti, no a los tenedores. La bóveda se financia enteramente con tu propia parte de comisiones y se libera durante cinco años, dividida con el protocolo. No es una distribución para tenedores, y el plan lo dice como advertencia en lugar de como nota al pie.
pons pairs enumera los activos en los que se puede fijar el precio de un lanzamiento: ETH nativo más los veintitrés tokens aprobados, que son acciones tokenizadas, dos fondos indexados y una stablecoin. Vuelven en el orden en que la página de creación de Pons los muestra, de modo que ambos coinciden fila por fila.
Seguridad
La lectura es el comportamiento predeterminado. Ningún comando firma nada sin
--confirm. Tres de los cuatro modos de ejecución no cuestan nada, y todos ellos excepto--unsignedprueban la llamada contra los contratos desplegados primero, sin que la cuenta tenga fondos.El almacén de claves es scrypt + AES-256-GCM, escrito solo para el propietario. Una contraseña proviene de un prompt oculto o de
PONS_PASSWORD; una clave para importar proviene dePONS_PRIVATE_KEY.Ninguna es nunca una bandera. Un argumento es visible en la tabla de procesos y termina en el historial del shell. No hay ninguna bandera que acepte ninguna de las dos, y
pons config listlo dice donde alguien buscaría una.Las credenciales nunca llegan a una línea de registro. Un endpoint de pago lleva su clave en la URL y los mensajes de error incrustan URLs, por lo que las URLs se enmascaran dentro de los errores lanzados, no solo en la salida formateada.
El servidor MCP no puede firmar. Nunca carga un almacén de claves y nunca transmite. Ver
docs/agents.md.Una transferencia nativa se firma con un límite de gas fijo de 100,000. Nitro cobra el costo de publicación de L1 del propio límite de la transacción y
eth_estimateGasno lo dice; con 21,000 una transferencia funciona mientras L1 es barato y falla de forma intermitente cuando no lo es.
¿Has encontrado algo que podría costar fondos a alguien? Por favor, repórtalo de forma privada. SECURITY.md explica cómo, qué está dentro del alcance y qué garantiza el diseño.
Configuración
Los valores se resuelven mediante una escalera: flag > entorno > archivo de configuración > predeterminado. pons config list imprime el valor resuelto junto con el nivel del que proviene, de modo que un ajuste sorprendente está a un comando de distancia de ser explicado.
El archivo de configuración es JSON plano en $XDG_CONFIG_HOME/ponscli/config.json (con respaldo en ~/.config/ponscli/config.json), escrito solo para el propietario.
Clave | Entorno | Predeterminado |
|
| sin definir. Tu propio nodo, probado primero |
|
| los endpoints públicos oficiales y de nodeflare |
|
| sin definir, lo que desactiva el nivel de pago |
|
|
|
|
|
|
|
|
|
|
| vacío |
|
| activado cuando stdout no es una TTY |
|
|
|
|
|
|
|
| sin definir |
|
|
|
PONS_PASSWORD y PONS_PRIVATE_KEY se leen del entorno, pero deliberadamente no son claves de configuración: ninguna pertenece a un archivo que config list imprime y que los usuarios pegan en informes de incidencias.
Arquitectura
El documento completo, que contiene cada decisión y la medición detrás de ella, es docs/architecture/ponscli.md. La forma en resumen:
src/core/ business logic, framework-free
src/commands/ thin CLI wiring
src/mcp/ the MCP server, also thin
src/chain/ the RPC waterfall
src/abi/ generated and committedAmbos frontends son envoltorios sobre src/core/. Eso es lo que hace que pons-mcp sea un envoltorio en lugar de una segunda implementación.
Cómo se enrutan las solicitudes
El nivel 1 es un round-robin sobre endpoints gratuitos; el nivel 2 es un endpoint de pago al que solo se llega después de haber probado todos los candidatos del nivel 1. Cada regla proviene de una medición contra los endpoints propios de esta cadena, no de una política de reintentos de propósito general. Las que más importan en el día a día:
Un revert es una respuesta, no un fallo. Vuelve directamente a ti en lugar de reintentarse en todos los endpoints y luego escalarse al nivel de pago.
Un límite de tasa aparca un endpoint durante 30 segundos, no una hora. Los endpoints gratuitos son cubos de tokens; un aparcamiento largo cuesta más disponibilidad que la limitación en sí.
Las escrituras nunca hacen round-robin. Un nonce tomado de un nodo y transmitido a otro es
nonce too low, por lo que las transacciones fijan un único endpoint.eth_chainIdno es una comprobación de salud. Un endpoint público lo responde más rápido que cualquier otro y luego rechazaeth_call.pons doctorsondea con llamadas reales precisamente por esta razón.
ABIs
src/abi/ se genera y se confirma, por lo que la CLI funciona sin conexión y un cambio de interfaz aparece como un diff revisable.
npm run abi:fetch # regenerate from Sourcify, falling back to Blockscout
npm run abi:check # fail if the committed files have driftedCada archivo registra de dónde proviene su ABI y cómo se demostró la coincidencia. Hay cuatro clases de procedencia, porque los contratos difieren:
clase | ejemplo | cómo se demuestra |
Verificado en su dirección |
| La coincidencia de bytecode propia de Sourcify |
Desplegado idénticamente en cada cadena | Permit2 | verificado en Base; cada selector presente en el bytecode de Robinhood |
Desplegado una vez por lanzamiento, verificado en ningún lugar | la curva V2 y el token | compilado a partir de la entrada estándar JSON verificada de la fábrica, comparado byte a byte contra una instancia en vivo fuera de sus inmutables |
Desplegado muchas veces, verificado en algunas | el pool V3, el token de V1 | una instancia verificada, probada como general contra una segunda, elegida de forma independiente |
Un archivo está escrito a mano: erc20Errors.ts, que contiene los errores con los que revierten los activos de cotización de terceros. Un activo de cotización es el token de otra persona, no hay una única ABI que cubra los veintitrés aprobados, y sin estos, el fallo más común en un lanzamiento de USDG se imprime como cuatro bytes inexplicables.
Para agentes
Guía completa: docs/agents.md.
pons-mcp se incluye en este paquete como un segundo binario y llama al mismo core/ que la CLI.
// claude_desktop_config.json, .mcp.json, or your client's equivalent
{
"mcpServers": {
"pons": { "command": "pons-mcp" }
}
}Seis herramientas: pons_info, pons_pairs, pons_plan_buy, pons_plan_sell, pons_transaction, pons_endpoints.
El servidor no puede firmar, y no hay ninguna bandera que lo permita. Lee la cadena y construye transacciones sin firmar; una persona las envía. Ese es todo el modelo de seguridad, y es por eso que el servidor es seguro dejarlo corriendo junto a un modelo: lo peor que un agente confundido puede hacer es cotizarte un mal precio, no gastar tu dinero.
Las respuestas vuelven en unidades base, porque un modelo puede hacer aritmética exacta con 50000000000000000 y no con 0.05.
Para un agente que en su lugar invoca la CLI, --json ya es el valor predeterminado cuando stdout no es una terminal, y un error de argumento lleva la línea de uso del comando que falló para que el llamador pueda corregirse a sí mismo:
{
"ok": false,
"error": {
"code": "USAGE",
"message": "missing required argument 'token'",
"hint": "run 'pons info --help'",
"details": { "command": "info", "usage": "pons info [options] <token>" }
}
}Codificación agéntica
Este repositorio lleva su propia configuración de agente. CLAUDE.md es el resumen del proyecto, con AGENTS.md enlazado simbólicamente a él para Codex, Cursor, Copilot y otros.
| Rechaza cualquier línea de comandos que contenga una clave privada o una contraseña en línea |
| Dice en voz alta cuando |
| Ejecuta las comprobaciones en las que este proyecto se basa, y explica qué significa cada fallo aquí |
Pruebas
npm run typecheck
npm run lint
npm test
npm run buildLa suite es completamente offline. Cada prueba impulsa la superficie de comandos real contra test/fakeChain.ts, una tabla de dirección + ABI + función → resultado que también sirve a Multicall3 y eth_getLogs, de modo que lo que se ejercita es el mismo descifrado y agregación que usa la ruta en vivo.
Dos comprobaciones llegan a la red y deliberadamente no forman parte de npm test:
npm run test:sequence # prove multi-block sequences against live mainnet state
npm run abi:check # fail if a committed ABI has drifted from its verified sourceSecuencias, sin un nodo local
Una simulación demuestra una llamada contra un bloque. No puede demostrar que una aprobación se asiente y que la venta en el siguiente bloque tenga éxito, o que un lanzamiento se confirme y que la curva que creó sea comprable un bloque después. Esos son los fallos que llegan a un usuario.
Robinhood Chain responde a eth_simulateV1, que ejecuta varios bloques de varias llamadas con estado que se arrastra a través de todos ellos, contra el estado de mainnet en vivo. npm run test:sequence lo usa para demostrar seis secuencias, incluida toda la vida de un lanzamiento: creado, comerciado, llevado más allá de su umbral de graduación y sembrado en un pool de Uniswap V4. Sin nodo local, sin Foundry, sin gastar nada.
Cada secuencia lleva un control que debe fallar. Sin uno, una anulación de estado podría estar haciendo el trabajo que la secuencia parece demostrar.
Gastar dinero real a propósito
scripts/mainnet-e2e.sh lanza un token, lo compra, lo vende y reclama las comisiones contra mainnet, de verdad. Las secuencias están cubiertas de forma gratuita por la comprobación anterior, así que lo que esto añade es lo único que la simulación no puede: una transacción real, firmada por una clave real, aceptada por el mempool real, con un recibo real para descifrar. Está desactivado a menos que lo digas, pregunta antes de cada transacción y nunca debe ejecutarse en CI.
PONS_E2E=i-understand ./scripts/mainnet-e2e.shCódigos de salida
Los scripts y los agentes pueden ramificarse según el resultado sin analizar prosa.
Código | Significado |
| Éxito |
| Fallo no clasificado |
| Uso: banderas, argumentos o comando incorrectos |
| La configuración falta, está malformada o es contradictoria |
| Todos los endpoints RPC fallaron |
| La cadena respondió, y la respuesta fue un revert |
| Keystore faltante, contraseña incorrecta o firma rechazada |
| El usuario rechazó una confirmación |
| La cuenta no puede pagar por lo que se pidió |
En modo --json, un fallo escribe {"ok": false, "error": {...}} en stderr, nunca en stdout, de modo que una tubería solo lleva resultados.
Contribuir
Consulta CONTRIBUTING.md y SECURITY.md para cualquier cosa que no deba ser un problema público. La versión corta: ejecuta las cuatro comprobaciones anteriores, mantén el nuevo comportamiento en src/core/ y verifica cualquier afirmación sobre el protocolo contra mainnet antes de escribirla. Las fuentes de los contratos están desactualizadas en varios lugares que importan.
Acerca de
Escrito desde cero en TypeScript sobre viem. No se copia ninguna fuente de ningún repositorio: la superficie de comandos se deriva de un mapa de comportamiento de chainstacklabs/pumpfun-cli, y la política RPC de mediciones tomadas contra los endpoints propios de esta cadena.
Pons en sí está en ponsfamily.com: el cliente web para lanzar y explorar, sus analytics y su documentación. Esta CLI no forma parte de ello, no está respaldada por ello y habla con los mismos contratos públicos que cualquiera puede.
Licencia
MIT. Consulta LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables agents to query live Robinhood Chain data including tokens, wallets, Chainlink feeds, heat scores, and tracking error on tokenized equities, all read-only without API keys.413MIT
- AlicenseAqualityCmaintenanceEnables AI agents to interact with Robinhood Chain via USDG payments, offering tools for balance, pricing, trading, and more.1863MIT
- AlicenseNot gradedqualityCmaintenanceEnables agents to scan tokens for honeypots, check safe launches, and build launch transactions on Robinhood Chain via the Model Context Protocol.MIT
- AlicenseNot gradedqualityCmaintenanceProvides live, read-only access to Robinhood Chain and Lox Corp data, enabling AI agents to query chain stats, token launches, agent details, and more.101MIT
Related MCP Connectors
Token swaps and honeypot/rug checks for AI agents on 8 chains, paid per-call in USDC via x402.
Agentic Finance: 500+ tools for AI agents over x402 or MPP, free via PoW, or prepaid card credits
63 pay-per-call tools for agents: vision, text, data, web, blockchain. USDC on Base via x402.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mesutgulecen/ponscli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server