Skip to main content
Glama

ponscli

CI npm node license

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. --json en 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. pons para personas, pons-mcp para 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 --version

O 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…20f4

Dos 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 calls

Operar 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 200

Todo es legible por máquina cuando se canaliza, y ese es el comportamiento predeterminado:

pons info 0x44D6…20f4 | jq .graduation

Comandos

Referencia completa, incluido qué contrato toca cada comando: docs/commands.md.

Lectura, sin necesidad de clave

pons info <token>

Precio, suministro, progreso de graduación, comisiones, impuesto anti-snipe en vivo

pons pairs

Activos de cotización aprobados, en el orden en que el cliente de Pons los muestra

pons watch <token>

Operaciones de curva, recompras y graduación, seguidos con un cursor

pons tx <hash>

Recibo, registros decodificados y el motivo de reversión detrás de un fallo

Operaciones, con RPC y una clave

pons buy <token> <amount>

Comprar en el lugar donde se negocie el token

pons sell <token> <amount|50%|all>

Vender en el mismo

pons graduate <token>

Completar una curva que ha alcanzado su umbral. Cualquiera puede llamar a esto

Lanzamiento

pons launch --name X --symbol Y

Crear un token. V2 por defecto

Comisiones

pons claim

Comisiones de creador o protocolo V2 retenidas en el depósito de garantía

pons collect <token>

Comisiones de posición V1 retenidas por el bloqueador

pons vault show|release <token>

La bóveda de recompra V2

Cartera y configuración

pons wallet create|import|show|export

Gestión de claves

pons wallet balance|track|untrack

Tenencias

pons wallet transfer|sweep

Gastos

pons config list|get|set|unset|path

Configuración, y de dónde proviene cada valor

pons doctor

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

pons collect

pons claim

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

--dry-run

El mismo trabajo, solicitado explícitamente: "mode": "dry-run" en el payload, y sin recordatorio de que no se envió nada

--unsigned

Emitir calldata y valor para que otra persona los firme. El único modo que no simula

--confirm

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|v3 anula 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 USDG

Un 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 launch imprime las direcciones del token y de la curva de antemano y rechaza una sal que ya esté ocupada. --salt acepta un valor bruto de 32 bytes, por lo que una dirección vanity minada funciona.

  • Los términos están fijados. previewLaunchEconomics devuelve 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-buy es 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.

  • --buyback te 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 --unsigned prueban 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 de PONS_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 list lo 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_estimateGas no 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

rpc.url

PONS_RPC_URL

sin definir. Tu propio nodo, probado primero

rpc.endpoints

PONS_RPC_ENDPOINTS

los endpoints públicos oficiales y de nodeflare

rpc.alchemyKey

PONS_ALCHEMY_KEY

sin definir, lo que desactiva el nivel de pago

rpc.tier

PONS_RPC_TIER

auto

rpc.timeoutMs

PONS_RPC_TIMEOUT_MS

10000

wallet.keystore

PONS_KEYSTORE

<config dir>/keystore.json

wallet.tracked

PONS_WALLET_TRACKED

vacío

output.json

PONS_JSON

activado cuando stdout no es una TTY

output.color

PONS_COLOR

auto (respeta NO_COLOR)

trade.slippageBps

PONS_SLIPPAGE_BPS

100 (1%)

trade.priorityFeeGwei

PONS_PRIORITY_FEE_GWEI

sin definir

cache.dir

PONS_CACHE_DIR

<cache dir>/ponscli

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 committed

Ambos 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_chainId no es una comprobación de salud. Un endpoint público lo responde más rápido que cualquier otro y luego rechaza eth_call. pons doctor sondea 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 drifted

Cada 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

PonsV2LaunchFactory

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.

.claude/hooks/block-secrets.sh

Rechaza cualquier línea de comandos que contenga una clave privada o una contraseña en línea

.claude/hooks/warn-broadcast.sh

Dice en voz alta cuando --confirm o pons launch está a punto de gastar dinero real

.claude/skills/verify/

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 build

La 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 source

Secuencias, 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.sh

Códigos de salida

Los scripts y los agentes pueden ramificarse según el resultado sin analizar prosa.

Código

Significado

0

Éxito

1

Fallo no clasificado

2

Uso: banderas, argumentos o comando incorrectos

3

La configuración falta, está malformada o es contradictoria

4

Todos los endpoints RPC fallaron

5

La cadena respondió, y la respuesta fue un revert

6

Keystore faltante, contraseña incorrecta o firma rechazada

7

El usuario rechazó una confirmación

8

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.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    B
    maintenance
    Enables 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.
    4
    13
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to interact with Robinhood Chain via USDG payments, offering tools for balance, pricing, trading, and more.
    18
    63
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables agents to scan tokens for honeypots, check safe launches, and build launch transactions on Robinhood Chain via the Model Context Protocol.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides live, read-only access to Robinhood Chain and Lox Corp data, enabling AI agents to query chain stats, token launches, agent details, and more.
    10
    1
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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