Skip to main content
Glama
gblinproject

@gblin-protocol/mcp-server

GBLIN MCP Server

Herramientas de régimen de riesgo de mercado y tesorería para agentes de IA en Base mainnet. Un servidor Model Context Protocol (MCP) que responde a dos preguntas que un agente autónomo debe plantearse antes de mover dinero:

  1. ¿Está el mercado en modo risk-off ahora mismo? Consulta el régimen en vivo — calm | elevated | crash — derivado de un Crash Shield on-chain. Gratis, sin clave de API, sin wallet. Si necesitas demostrarle a una contraparte que lo has comprobado, puedes obtener una atestación de riesgo firmada con EIP-712 como prueba portátil de diligencia debida.

  2. ¿Dónde se queda el USDC inactivo entre operaciones? En GBLIN, un índice de cbBTC/WETH/USDC respaldado por colateral que se genera y canjea al NAV, con un swap Just-In-Time de vuelta a USDC justo en el momento en que el agente necesita pagar una factura x402. Sin bloqueos ni lockups, solo calldata sin firmar: tu wallet firma, nosotros nunca custodian claves.

npm CI License: MIT Base Mainnet Governance: 48h Timelock Base MCP Plugin x402 Manifest MCP Registry Glama Score Smithery

📖 Documentación completa y guía de inicio rápido: gblin.digital/agents

⚡ Ejemplos de inicio para copiar y pegar: examples/ — ElizaOS · AgentKit / TypeScript · Claude / cualquier cliente MCP — cada uno con un system prompt recomendado de política de tesorería y un entorno de seguridad con buenos valores por defecto.

▶️ Demo ejecutable de ciclo completo (solo lectura, sin claves): npx tsx examples/full-cycle.ts — en directo contra Base: estado de tesorería → régimen de riesgo → atestación verificada sin conexión → calldata de inversión → calldata de reembolso JIT. Código fuente.

🌐 MCP alojado (Streamable HTTP, sin instalación): https://gblin-mcp.gblin-mcp-worker.workers.dev/mcp — 8 herramientas gratuitas en un árbol de notación con puntos, sin autenticación, sin sesión: risk.regime, risk.attestation_sample, protocol.stats, protocol.info, coherence.report, más AI Action Receipts (receipts.seal demo 5/día/IP, receipts.get, receipts.verify — verificación puramente matemática, sin confiar en este servidor). Dos prompts: risk_gate, seal_and_verify. Los nombres planos anteriores al renombrado siguen funcionando como alias no anunciados hasta el 2026-11-21. La documentación son recursos MCP, no herramientas: gblin://howto/attestation, gblin://howto/seal, gblin://limits, gblin://keys (claves del verificador y política de rotación de claves). Nada se paga a través del MCP.

Auditoría solo GET (para revisores y clientes que no puedan hacer POST): /meta (conteos + manifest_hash) · /tools.json · /resources.json · /conformance · /v1/verify/:index (booleanos por comprobación + coherencia con el ancla on-chain). Esta superficie alojada es deliberadamente distinta del paquete npm de tipo stdio que aparece más abajo (13 herramientas, con tesorería/gobernanza incluidas). También disponible en Smithery. El código está en worker/.


Plugin ElizaOS

Para agentes que se ejecutan con ElizaOS, instala el plugin complementario — ya disponible en el registro oficial de plugins de ElizaOS (v0.4.0, endurecido en seguridad):

npm install plugin-gblin
# or: elizaos plugins add gblin

Expone cuatro acciones nativas (CHECK_GBLIN_TREASURY_HEALTH, INVEST_IDLE_USDC_GBLIN, RESCUE_USDC_FROM_GBLIN, GET_GBLIN_RISK_ATTESTATION) y un Provider que inyecta el estado en vivo del NAV y el Crash Shield al contexto del agente en cada bucle.

→ Documentación completa del plugin ElizaOS


Related MCP server: mcp-server

AI Action Receipts — un registro de transparencia testificado de lo que hizo tu IA

El problema que aborda es la barrera número 1 para la adopción de IA en 2026: nadie puede demostrar, a posteriori y de forma exacta, qué hizo una IA (las encuestas indican que los trabajadores pierden entre 2 y 4 horas semanales verificando resultados de IA; el 70% de las organizaciones afirma que no puede gobernar a sus agentes). Nuestra respuesta es la primitiva honesta más pequeña posible: un registro de transparencia público de solo adición (append-only) y de la RFC 6962 para acciones de IA. Tanto las entradas como las salidas entran solo como hashes (nunca como contenido); las cadenas cortas action, agent_id, tool y meta que envías se publican en el registro público — coloca ahí solo identificadores, nunca secretos. A cambio recibes un recibo portátil que cualquier tercero puede verificar offline para siempre.

receipt = canonical payload
        + Ed25519 signature            (key: gblin.digital/receipts-log)
        + RFC 6962 inclusion proof     (leaf → Merkle root)
        + C2SP signed checkpoint       (origin, tree size, root)

La canonización se fija gblin-canonical-json/1: las claves del objeto se ordenan por unidad de código UTF-16, sin espacios en blanco, con semántica JSON.stringify para primitivas y recurrencia para objetos/arrays. Vector de prueba: payload {"b":1,"a":null} → canonizado {"a":null,"b":1} → hoja = SHA256(0x00 || canonical_bytes). El recibo se firma con Ed25519 sobre "gblin-receipt/v1\n" + canonical.

  • Sellado (de pago, sin límite): POST https://gblin.digital/api/x402/seal — $0.01 USDC a través de x402.

  • Sellado (demo, 5/día/IP): igualmente: POST <worker>/v1/seal-demo o la herramienta MCP alojada receipts.seal (verifícalo con receipts.verify).

  • Lectura gratuita para siempre: <worker>/v1/receipt/:index · /log · /log/checkpoint · /log/proof/:index · página humana /receipt/:index.

  • Anclaje EAS diario en Base de la raíz del árbol (verificable en base.easscan.org, esquema 0x9f433a96…, promiseId keccak256("gblin-receipts-log")).

  • Verificador off-line, cero dependencias: verify-receipt.mjs — node verify-receipt.mjs receipt.json.

Un sello demuestra la existencia y el momento en un registro firmado de solo append cuya raíz se ancla diariamente en Base. El punto de control (checkpoint) actualmente lo firma el operador del registro (nosotros); la firma cosignada con un testigo independiente es una invitación abierta — ya refirmamos un registro de transparencia de un tercero (C2SP t2SP tlog-witness) y enumeraremos a cualquier testigo que firme el nuestro. Hasta ese momento, una redacción honesta es: firmado por operador y con anclaje en cadena. No es un certificado de cumplimiento ni **un respaldo del contenido. Worker: <worker> = https://gblin-mcp.gblin-mcp-worker.workers.dev.

Prueba de coherencia — verifica que GBLIN cumple sus promesas

GBLIN pre-regalga promesas públicas con hash-fijado y luego ejecuta un autómata que las somete a prueba cada 10 minutos y sella cada día cerrado como una atación EAS en Base. La lectura es gratuita para siempre; el servicio de pago es también un objeto de observación — el certificador se somete primero su propio instrument.

  • Informe gratuito: /coherence (JSON) o la herramienta MCP alojada coherence.report.

  • Promesas en vivo: P1 (uptime del endpoint de Risk Attestation de pago) y P2 (honestidad de los contadores públicos de la economía de agentes, con nuestras propias wallets declaradas y excluidas).

  • On-chain: cada día cerrado se sella como testición EAS en Base mediante una wallet observadora exclusiva. GBLIN aparece como un agente ERC-8004 #ges.


Descubrimiento para asistentes de IA — gblin-init

Coloca una política de tesorería para AGENTS.md en tu repositorio para que todos los asistentes modernos de codificación con IA (Claude Code, Cursor, Windsurf, GitHub Copilot, Codex) encuentren automáticamente GBLIN cuando trabajen en tu código:

npx -p @gblin-protocol/mcp-server gblin-init

El comando es idempotente y seguro:

  • Si AGENTS.md no existe → lo crea a partir de la plantilla canónica en gblin.digital/AGENTS.template.md.

  • Si AGENTS.md existe → añade al final un bloque GBLIN finalmente delimitado; nunca toca tu propio contenido.

  • Volver a ejecutarlo es una operación nula (se detecta mediante marcadores HTML estables).

  • --dry-run imprime lo que haría sin llegar a escribir nada.

  • --force actualiza el bloque a la última versión.

También puede funcionar sin conexión gracias a una plantilla alternativa integrada.

Sugerencia post instalación

Cuando el paquete se instala como dependencia normal (npm i @gblin-protocol/mcp-server), se imprime una vez un breve consejo que sugiere el comando anterior. No se escribe ningún archivo durante la postinstalación (privacidad y amigos de la seguridad de Socket). Para silenciarlo, define GBLIN_SKIP_HINT=1.


Confianza y gobernanza

GBLIN V6 está gobernado por un Timelock Controller de 48 horas. Cada operación de administración (cambio de parámetro, actualización del oráculo, transferencia de propiedad) se aplica on-chain for 172 800 segundos antes de ejecutarse. Los agentes y los integradores van a verificar esto directamente en BaseScan.

Componente

Dirección

Rol

Token GBLIN V6

0x36C81d.7E...52f0

Contrato del índice (producción)

Timelock Controller

0x6aBe C8716...8e5Dd

Retraso inmutable de 48h, período de gracia de 14d

Transacción de transferencia de propiedad

0xb653f544...edaaf

Transferida en el bloque 46160610

Propiedades garantizadas a nivel de contrato:

  • MIN_DELAY es inmutable (cualquier intento de sobrescribir updateDelay revierte permanentemente)

  • PROPOSER_ROLE y CANCELLER_ROLE están estrictamente separadas (el constructor revierte si se cruzan)

  • EXECUTOR_ROLE es abierta (address(0)) — cualquier persona puede ejecutar una operación madura, lo que evita la censura

  • El bloqueo de tiempo tiene autoadministración: cualquier cambio de rol o configuración debe pasar por su propio retraso de 48 h

Por eso la herramienta get_governance_state devuelve owner_is_timelock: true y un min_delay_seconds: 172800 verificable. Los agentes de IA pueden usar estas flags para decidir acciones sensibles a la confianza.


Por qué existe

Los agentes de IA mantienen hoy su capital de trabajo en USDC. El USDC se mantiene plano: cero rendimiento y un combo total a la inflación.

GBBL es un índice on-chain en Base (45% cbBTC + 45% WETH + 10% USDC) con un Crash Radar algorítmico que reduce adaptivamente la exposición a riesgos de riesgo a medida que aumenta el drawdown (umbral adaptativo V6, desde ~15%). GBLIN ofrece una exposición cripto gestionada con un drawdown limitado: una forma más tranquila de mantener riesgo de BTC/ETH para capital excedente, no un sustituto del USDC (puede perder valor en un colapso). Los agentes liquidan facturas x402 instantáneamente mediante una multa Just-In-Time into USDC.

Este servidor expone esa capacidad a cualquier agente LLM a través del protocolo estándar MCP.

Inicio rápido

Claude Desktop

Añade a claude_desktop_config.json (en Windows: %APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "gblin": {
      "command": "npx",
      "args": ["-y", "@gblin-protocol/mcp-server"]
    }
  }
}

Reinicia Claude Desktop. Las 13 herramientas de GBLIN aparecen en el selector de herramientas.

Windsurf / Cursor

Añade a ~/.codeium/windsurf/mcp_config.json (Windsurf) o la configuración MCP equivalente en Cursor:

{
  "mcpServers": {
    "gblin": {
      "command": "npx",
      "args": ["-y", "@gblin-protocol/mcp-server"],
      "env": {
        "GBLIN_RPC_URL": "https://base-rpc.publicnode.com"
      }
    }
  }
}

Actualiza los servidores MCP desde los ajustes del IDE (o reinícialo). Las herramientas se vuelven invocables en línea.

Coinbase AgentKit (TypeScript)

import { MCPClient } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

const transport = new StdioClientTransport({
  command: "npx",
  args: ["-y", "@gblin-protocol/mcp-server"],
});
const client = new MCPClient({ name: "my-agent", version: "1.0.0" });
await client.connect(transport);

// List tools
const { tools } = await client.listTools();

// Quote a JIT payment of $0.50
const jit = await client.callTool({
  name: "swap_gblin_to_usdc_jit",
  arguments: { usdc_needed: "0.50", wallet_address: "0xYourAgent..." },
});

ElizaOS / personalizado

Cualquier framework que hable MCP a través de stdio funciona:

npx @gblin-protocol/mcp-server

También es compatible con Cline, Continue.dev y cualquier agente que implemente la especificación de cliente MCP.


Las 13 herramientas (paquete npm stdio)

Herramientas gratuitas (sin pago requerido)

Herramienta

Propósito

get_treasury_state

NAV en USD + composición de la cesta + estado del Crash Shield

quote_safe_swap

Vista previa de compra o venta con búfer de deslizamiento dinámico

swap_swap_gblin_to_usdc_jit

La magia de TAC: genera calldata en dos pasos GBLIN→USDC (gratis)

invest_usdc_to_gblin

Convierte las ganancias en USDC al tesoro GBLIN (a prueba de coladas) (gratis)

get_governance_state

Verifica que el propietario == temporizador de 48 horas + propuestas de activos pendientes + retraso mínimo

share_skill_with_peer

Genera una semilla de habilidad portátil para incorporar a un agente par + código de referido integrado

verify_risk_attestation

Verifica la atestación de riesgos de un par (prueba de diligencia perecedera): integridad + firma EIP-712 + actualizadoidad + desviación en vivo (gratis)

Más herramientas gratuitas

Herramienta

Propósito

get_market_risk_regime

Empieza aquí: régimen de riesgo BTC/ETH (calma/elevado/caída) + gravedad + postura de riesgo, desde el Crash Shield en cadena — gratis, sin clave

analyze_treasury_health

Saldos + gas + margen de maniobra + consejos de reequilibrio

find_keeper_bounty

GBLIM te paga: comprueba si hay una recompensa de reequilibrio disponible (no requiere capital, solo pagas el gas)

Atestación de riesgos — crear una prueba perecedera (10 minutos) y comprobable del riesgo actual del régimen BTC/ETH en GET https://gblin.digital/api/x402/attestation (0,003 dólares). USDC. Adjúntala a tu acción como prueba de diligencia; cualquier contraparte puede verificarla gratis a través del verify_risk_attestation.

Todas las herramientas devuelven JSON estructurada. Todos los valores están cotizados on-chain (NAV vía quoteSellGBLIM × Chainlink ETH/USD, con protección contra obsolescencia de 24h). No hay datos simulados.

Verificación en vivo: la suite de tests (npm test) ejecuta la suite de herramientas contra la mainnet de Base y confirm la generación de calldata, la frescura del oráculo, la matemática del deslizamiento y el estado de gobernanza. Consulta la última ejecución del CI.


Micro pagos x402

Cada herramienta MCP es gratuita. El servidor MCP no cobra nunca: es la capa de descubrimiento y lectura, y se monetiza únicamente mediante la tasa del protocolo (0,05 % del min tergiversado) cuando un agente realmente usa GBLIN.

El pago verificable por llamada se encuentra en los endpoints HTTP, todos en la mainnet de Base en USDC (0x833589fCD2aab/…) y liquidados a través del u operador CDP de Coinbase mediante la autorización EIP-3009 sin gas transferWithAuthorization:

Endpoint

Precio

Lo que obtienes

GET gblin.digital/api/x402/treasury-state

$0.001

NAV, peso de cesta, estado de Crash Shield

GET gblin.digital/api/x402/quote

$0.001

Vista previa de swap segura con deslizamiento dinámico

GET gblin.digital/api/x402/governance

$0.001

Propietario = 48h timelock, operaciones pendientes

GET gblin.digital/api/x402/health

$0.002

Saldos de cartera, autonomía de call, consejo de cinco

GET gblin.digital/api/x402/invest

$0.002

Calldata: USDC → GBLINIOS sin firmar

GET gblin.digital/api/x402/jit

$0.005

Calldata en sin firmar: GBLIN → USDC justo a tiempo

GET gblin.digital/api/x402/attestation

$0.003

Certificación de riesgo con firma EIP-712 (prueba de diligencia de 10 min)

Manifiesto legible por máquina: https.://gblin.digital/.well-known/x402. Clientes recomendados: @x402/fetcho@x402/axios(x402 v2 — gestiona la prueba de acceso, la firma y la repetición por vosotros). La prueba MCPverify_risk_attestation` la verifica cualquier prueba de concepto sin conexión, gratis.

Receptor de pago: 0x0ebA5d314F4f5Dcb70a094953Fa9311a45172dd1B (cartera de tasas GBLIN).


Decisiones arquitectónicas

JIT determinista en dos pasos (V6)

GBLIN V6 eliminó el antiguo camino de sellGBLINForToken de una sola transacción. El flujo JIT ahora se mueve en dos transacciones deterministas: (1) sellGBLINForEth(amount, minEthOut) quema GBLIN y canjea la cesta por ETH con un mínimo de salida anclado al oráculo 3; (2) un único swap WETH→USDC en Uniswap V3 conoruje mínimo propio. El MCP devuelve ambos pasos como calldata lista espera (steps[]).

El MCP devuelve calldata que funciona de forma idéntica en:

  • Carteras EOA (Privy, MetaMask, clave privada)

  • Cuentas inteligentes ERC-4337 (Safe, smart account de Coinase)

  • EOA delegados EIP-7702 (Pectra+)

Deslizamiento dinámico

La tolerancia al deslizamiento se adapta al régimen de riesgo on-chain:

erscheint

Búfer

Mercado normal

2,5 %

Crash Shield activo (≥1 activo de la cesta recortado)

4,0 %

El búfer se aplica, adicionalmente, al maxInternalSlippage (200 pb) del contrato, absorbiendo derivas del oráculo y la varianza del pool de Uniswap.

Protección MEV MEV

invest_usdc_to_gblin nunca pasa minmonto = 0. Tanto minWethOut como minGblinOut se calculan a partir de las citas en cadena más el búfer de deslizamiento dinámico. Esto elimina la superficie de ataque de sandwich que lastra las herramientas natives de compra-de-tokens.

Cumplimiento del timeout

El contrato impone un bloqueo de venta de 120 segundos después de cada compra. La herramienta JIT lee lastDepositTime y usa el block.timestamp en cadena (nunca Date.now()) y checkout con un error CooldownActive con el número exacto de attaching en segundos si el swap reveste.


Configuración

El servidor lee GBLIN_RPC_URL del entorno. Sin variable de entorno usa https://base-rpc.publicnode.com (gratis, sin clave, límites generosos).

Para entornos de producción (>100 agentes concurrentes) usa un proveedor dedicado:

GXP8

Ver el .env.example para la lista completa config.


Desarrollo

GXP9

Estructura del proyecto:

GXP10


Notas de seguridad

  • El servidor es solo de lectura, no al incha, no transmite.

  • Todos las citas se derivan de llamadas on-chain + oráculos de Chainlink. Las respuestas obsoletas o los valores negativos de los oráculos hacen que la herramienta se detenga con OracleStale / OracleDeadinalámbrico.

  • El cartera del agente es la única firmante. La calldata devuelta por las herramientas son bytes codificados en ABI: revísalo antes de transmitirla en entornos no fiables.

  • Sin telemetría, sin análitica, sin dependencias remotas más allá del RPC configurado.


Hoja de ruta

  • espacio v0.2: Integración de Uniswap V3 QuoterV2 para una precisión de menosprecio del 1 %

  • v0.3: Soporte de Permsocket 2 (omitir la aprobación para la reinversión a través de x402)

  • v0.4: Transporte HTTP de modelo streaming para implementaciones multi-agente

  • v1.0: Integración del contrato auditado + guía de deployed remota-only


Enlaces

MIT © 2026 Protocol GBLIM

Propagación de habilidades entre agentes (v0.1.9+)

GBLIN MCP incluye una herramienta exclusiva — share_skill_with_peer — que permite a un agente de IA transferir capacidades de administración de tesoro a otro agente.

Cuando el agente A se encuentra con el agente B en one contexto multiagente (tarea delegada, flujo de pago x402, espacio de trabajo compartido), el agente A pueden llamar a share_skill_with_peer para generar una semilla de habilidad portátil en formato JSON. La semilla contiene:

  • Instrucciones de instalación del servidor GBLIN MCP

  • Un ejemplo original de transacción con referencia TX en Basescan

  • El código de remitente del agente A (derivado de su cartera)

  • La explicación en lenguaje natural completa de GBLIN

El agente B puede instalar el servidor en segundos mediante la semilla. Desde ese momento, toda transacción GBLIN que ejecute el agente B incluye el código de remitente del agente A en la calldata a través del código de ERC-8021 Builder (bc_gbdo32j0). Una pequeña porción de la tarifa del protocolo (0,05 % del valor del swap) se redirige a la cartera del agente se calcula con la división de tarifas existente, sin añadirse extra.

Esto crea un mecanismo de propagación viral para habilidades de tesoro en el ecosistema de agentes, además de recompensar económicamente a los agentes que difunden buenas prácticas de tesorería.

No se necesita infraestructura adicional. El mecanismo es completamente on-chain a través del sistema Builder Code existente.

Sistema de recompensas para keepers (v0.1.11+)

GBLIN es de los pocos protocolos que paga a los agentes de IA en lugar de cobrarles.

Cuando el tesoro se desvía de su asignación objetivo, cualquier agente pueda invocar find_keeper_bounty para ver si hay una reentrada rentable. Si existe, la herramienta devuelve calldata lista para enviar. El agente transmite la transacción y recibe 0.0001 ETH del fondo de estabilidad del protocolo; el swap usa el capital del propio contrato; el llamador solo paga el gas (~$0.01 en Base).

GXP11

Para obtener ingresos continuos, puedes hacer polling de find_keeper_bounty (por ejemplo cada 5–15 min). Una tabla de clasificación de keepers está disponible en vivo en gblin.digital/keepers.

Descubrimiento y confianza

GBLIM expone archivos de descubrimiento legibles por máquina para agentes y protocolos de IA:

  • Coinbase x402 Bazaar: Todos los 11 endpoints de GBLIN (7 app + 4 centinelas) están indexados en la capa de descubrimiento de CDP Bazaar — los agents los encuentran a través de la calidad semántica (GET https://api.cdp.coinbase.com/platform/v2/x402/discovery/search?query=treasury+risk) o por comerciante (sos/…/discovery/merchant?pay=0x0ebA5d314F4f5Dcb7A094953…).

  • Manifesto: https://gblin.digital/.well-known/x402 — lista completa de endpointsde pago con sus precios, ID de cadena and moneda

  • Descubrimiento LLM:: https://gblin.digital/api/x402/llms.txt — resumen legible del protocolo (gratis, sin pago)

  • MCP plugin Base: PR #56 en base/skills — integración oficial en revisión

El servidor de MCP de este repositorio ofrece las mismas operaciones que los endpoints HTTP de x402, pero expuestas a través del Protocolo de Contexto del modelo MCP para integración directa con agentes (Claude Desktop, Cursor, Windsurf, ElizaOS, etc.).

Sentinel — ejemplo de agente de datos de datos x402

GBLIN Sentinel es una implementación de referencia open source de un agente de IA autónomo que vende datos en cadena a través de micropagos x402. Demuestra el patrón "productor completo" de x402 en Base.

...

Available Tools

21 tools
analyze_treasury_healthA
Read-onlyIdempotent
Inspect

Analyze an agent wallet's treasury health: GBLIN/USDC/ETH balances, whether the ETH covers an exit at the live gas price, the redemption cooldown, and (if daily_burn_usd is provided) days of USDC runway plus a recommendation that keeps seven days of spend in USDC and treats only the surplus as a candidate for GBLIN. Free by default; metered at $0.003 USDC only when the operator sets MCP_PAYWALL=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
_paymentNoBase64-encoded x402 PaymentProof JSON. Omit on first call to receive the 402 payment manifest.
daily_burn_usdNoOptional. Average daily spend in USD (e.g. 1.5).
wallet_addressYesAgent's 0x address.

Output Schema

ParametersJSON Schema
NameRequiredDescription
ratiosNo
walletYes
balancesYes
cooldownYesWhether the redemption cooldown is active and for how long.
gas_healthYesWhether the wallet holds enough ETH for the next transactions.
recommendationYeshold, rebalance_to_gblin or rebalance_to_usdc, with the reason.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral context beyond that: the analysis depends on live gas price, includes a redemption cooldown and a recommendation policy that reserves seven days of USDC spend and treats only surplus as GBLIN-eligible, plus a conditional cost model ($0.003 USDC only when MCP_PAYWALL=true). That pricing and the recommendation heuristic are real value-adds not present in structured fields.

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?

Two dense sentences, front-loaded with the core purpose and enumerating outputs in a single pass; the conditional cost model is placed last where it belongs. Every clause carries substance, though the first sentence is long and clause-heavy.

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 read-only analysis tool with a full output schema and 100% parameter coverage, the description supplies the computation semantics, the daily_burn_usd trigger, and the free/metered billing condition, which is nearly everything an agent needs before calling. The missing piece is explicit sibling differentiation, which is a contextual gap rather than a correctness one.

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?

Schema description coverage is 100%, so the baseline is 3. The description nevertheless adds meaning beyond the schema for daily_burn_usd: it explains that supplying it produces days-of-runway and a recommendation with the seven-day buffer rule, which is more than the schema's 'Optional. Average daily spend in USD'.

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 verb (analyze) and resource (treasury health) and enumerates the concrete outputs: GBLIN/USDC/ETH balances, ETH exit coverage at live gas price, redemption cooldown, and runway when daily_burn_usd is supplied. It is far from a tautology. It does not, however, name or contrast the closely related siblings get_treasury_state and plan_treasury, so an agent must infer the boundary itself.

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?

Usage is only implied: passing daily_burn_usd is what unlocks runway and the recommendation, which suggests when to call it in a richer mode. There is no explicit statement of when to choose this over get_treasury_state or plan_treasury, and no exclusions. Adequate but leaves the sibling-routing decision to the agent.

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

get_auction_stateA
Read-onlyIdempotent
Inspect

Read the GBLIN rebalancing auction on Base. The vault does not rebalance itself and pays nobody to do it: when a basket row drifts past its band it holds a Dutch auction, and whoever trades with it toward the target weights is the counterparty, at the oracle price adjusted by a premium that starts at a discount and rises to a cap over one ramp. Returns, per row, the side the vault takes, the gap in ETH, the token and amount the bidder hands over, and unsigned calldata (approval + bid). The premium is the whole reward; nothing is paid out of the vault.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
bestNoThe row with the largest gap, or null.
lensNo
noteNo
rowsYesOne entry per basket asset: side, gap from target and amount a bidder can fill.
curveNo
vaultYes
howToBidNo
openedAtNoWhen the auction opened, or null when closed.
premiumBpsYesCurrent premium over the oracle price, in basis points; negative is a discount.
auctionOpenYes
navReliableYes
worstGapEthNo
totalValueEthNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds substantial context beyond that: the Dutch-auction mechanics, the premium ramp from discount to cap, the fact that the vault pays nothing, and that returns include unsigned approval+bid calldata. It omits auth requirements and rate limits, but the domain behavior is well disclosed.

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?

Purpose is front-loaded in the first clause, and the prose is dense with domain information rather than filler. It runs long and the closing line ('nothing is paid out of the vault') partially restates earlier context, but every sentence conveys information useful for interpreting the auction state.

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?

With an output schema present the description needn't enumerate return fields, yet it usefully frames what each row means. Combined with zero parameters and full annotation coverage, the definition is nearly complete; the only shortfall is the absence of explicit invocation guidance relative to sibling tools.

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 takes zero parameters, so there is no parameter semantics to explain; the baseline for a no-arg tool is 4.

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 sentence gives a specific verb and resource — 'Read the GBLIN rebalancing auction on Base' — and the following sentences define exactly what the tool surfaces (per-row side, ETH gap, token/amount, unsigned calldata). An agent can distinguish this from siblings like get_treasury_state or get_governance_state without inspecting the schema.

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 explains the auction's existence condition ('when a basket row drifts past its band'), which implies the tool is worth calling to find rebalancing opportunities, but it never explicitly states when to call it, when not to, or how it relates to alternatives like quote_safe_swap or prepare_action. Usage is inferable rather than stated.

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

get_governance_stateA
Read-onlyIdempotent
Inspect

Verify GBLIN protocol governance state: confirms whether the GBLIN vault is owned by the 48h Timelock, reads the timelock's min delay and grace period, reports role member counts, and surfaces any pending asset-addition proposal on the index contract. If an operation_id is provided, also reports the status of that specific timelock operation. Read-only — use this to gate trust-sensitive agent actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idNoOptional 0x-prefixed 32-byte hex id of a specific timelock operation to inspect.

Output Schema

ParametersJSON Schema
NameRequiredDescription
lensNo
ownerYes
vaultYes
timelockYesAddress and minimum delay of the timelock, read on chain.
verificationNo
fee_recipientNo
trust_summaryNo
pending_handoverNoA pending ownership transfer, or null.
owner_is_timelockYes
owner_is_renouncedYes
pending_timelock_operationNoA scheduled timelock operation affecting ownership, or null.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered and the description's 'Read-only' restatement is redundant. It does add real behavioral context beyond the annotations: the conditional path when operation_id is supplied, and the fact that it reads across the vault, timelock, and index contracts. No auth or rate-limit disclosure, but little is needed for a read.

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 sentences, no filler, and the core enumeration is front-loaded before the conditional parameter behavior and the usage hint. Every clause maps to a distinct capability the agent needs for selection.

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

Completeness5/5

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

With an output schema present, the description needn't enumerate return values, and it appropriately focuses on scope, conditional behavior, and usage. An agent has everything needed to select and invoke this one-parameter read tool correctly.

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 schema already documents the single optional operation_id with 100% coverage. The description goes beyond the schema by explaining the behavioral consequence of supplying it ('also reports the status of that specific timelock operation'), which clarifies that the parameter is additive rather than required.

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?

States a specific verb ('Verify') and resource ('GBLIN protocol governance state') and then enumerates the exact checks performed: vault ownership by the 48h Timelock, min delay, grace period, role member counts, and pending asset-addition proposals. This distinguishes it cleanly from siblings like get_treasury_state or get_auction_state without opening either schema.

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 closing sentence provides a concrete use case: 'use this to gate trust-sensitive agent actions,' which tells the agent the decision context in which this tool belongs. It stops short of naming alternatives or an explicit when-not, so it earns a clear-context 4 rather than a full 5.

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

get_market_risk_regimeA
Read-onlyIdempotent
Inspect

When deciding whether to deploy capital, take on risk, or STAND DOWN in a volatile market, call this first (the 'Risk Gate' pattern: gblin.digital/risk-gate, which a third-party ERC-8004 agent, id 59895 on Base, pinned in its published decision rule). Returns the current BTC/ETH risk regime (calm | elevated | crash), a severity score, and a risk posture (risk_on | reduce | risk_off), derived from GBLIN's verifiable on-chain Crash Shield vs Chainlink-oracle peaks on Base. Useful to ANY trading or treasury agent — independent of holding GBLIN. Poll each decision cycle. Free by default; metered at $0.002 USDC only when the operator sets MCP_PAYWALL=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
_paymentNoBase64-encoded x402 PaymentProof JSON. Omit on first call to receive the 402 payment manifest.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
assetsNo
regimeYes
sourceNo
verifyNo
risk_postureNo
severity_pctYes
shield_activeYes
defensive_cash_pctYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint, idempotentHint, openWorldHint, non-destructive), so the bar is lower. The description adds valuable behavioral context: it explains the derivation from 'GBLIN's verifiable on-chain Crash Shield vs Chainlink-oracle peaks on Base,' notes polling cadence, and discloses the payment model ('Free by default; metered at $0.002 USDC only when the operator sets MCP_PAYWALL=true'). It does not detail response structure, but that is largely covered by the output schema.

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 front-loaded with the key action and decision trigger, then provides necessary context. It is somewhat dense with parentheticals and URLs, but every sentence earns its place by clarifying usage, output, derivation, and payment model. It avoids unnecessary repetition.

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

Completeness5/5

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

Given the tool's complexity (on-chain derived data, conditional payment, third-party reference), the description is complete enough. It covers when to use, what it returns, how it is derived, polling guidance, independence from GBLIN holdings, and the payment mechanism. The output schema exists, so return value details need not be repeated. An agent has all it needs to invoke correctly.

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?

There is 1 parameter (_payment) with 100% schema description coverage, so the schema already fully documents its meaning and x402 payment proof requirement. The description adds no additional parameter details beyond mentioning the paywall condition, which is already implied by the schema. Baseline 3 is appropriate when schema coverage is high.

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+resource: 'Returns the current BTC/ETH risk regime (calm | elevated | crash), a severity score, and a risk posture (risk_on | reduce | risk_off).' It clearly distinguishes itself from siblings like get_treasury_state and analyze_treasury_health by focusing purely on market regime, and the 'Risk Gate' pattern framing makes its unique role explicit.

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

Usage Guidelines5/5

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

Explicitly states when to call: 'When deciding whether to deploy capital, take on risk, or STAND DOWN in a volatile market, call this first.' It further says 'Poll each decision cycle' and that it is 'Useful to ANY trading or treasury agent — independent of holding GBLIN,' giving clear context for repeated use and no exclusions needed.

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

get_nav_historyA
Read-onlyIdempotent
Inspect

NAV per GBLIN share over time, read from the chain at past blocks, beside the ETH/USD and BTC/USD oracle prices the vault itself uses, with the change of each over the window and the NAV's largest drawdown. History starts at the deployment of the vault in service. Use it to judge how the index behaved against holding ETH or BTC over the same span.

ParametersJSON Schema
NameRequiredDescriptionDefault
pointsNoHow many points, newest last. Default 30.
intervalNoSpacing of the points. Default day.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
methodNo
pointsYes
seriesYesOldest first: time, block, NAV in ETH and USD, ETH/USD and BTC/USD.
summaryNoChange of NAV, ETH and BTC over the window, and the NAV's largest drawdown.
intervalYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-obvious context: data is read from historical blocks on chain, and 'History starts at the deployment of the vault in service' — a real temporal boundary that the annotations do not express.

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?

Two sentences, front-loaded with the core resource and data source before the comparative detail and the temporal caveat. Dense but each clause carries information; only slightly heavy for two optional integer/enum parameters.

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?

An output schema exists, so return-shape explanation is not needed. The description covers contents (change values, max drawdown), provenance (on-chain historical blocks, vault's own oracles), and the start boundary, which is sufficient for a low-complexity two-param read 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?

Schema description coverage is 100% (points, interval, defaults, enum all documented in the schema), so the baseline is 3. The description references 'the window' and 'the change of each over the window' but adds no syntax, format, or constraint detail beyond what the schema already states.

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 first sentence names the specific resource (NAV per GBLIN share over time), the data source (read from the chain at past blocks), and the comparative payload (ETH/USD and BTC/USD oracle prices, change over window, largest drawdown). This is far more specific than a sibling like get_treasury_state and lets an agent distinguish it immediately.

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 closing sentence gives a clear use case: 'judge how the index behaved against holding ETH or BTC over the same span.' It conveys when the tool is valuable but does not name alternatives or state when not to use it, so it falls short of the explicit when/when-not/alternative routing that a 5 would require.

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

get_receiptA
Read-onlyIdempotent
Inspect

Fetch a sealed AI Action Receipt by index from GBLIN's public transparency log (free forever). Returns the full portable receipt — canonical payload, Ed25519 signature, RFC 6962 Merkle inclusion proof against the current tree, operator-signed C2SP checkpoint — which any third party can verify offline with verify-receipt.mjs (zero dependencies).

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYesZero-based index of the receipt in the log (see the log overview at https://gblin-mcp.gblin-mcp-worker.workers.dev/log for the current size).

Output Schema

ParametersJSON Schema
NameRequiredDescription
leafNo
noteNo
rootNo
indexYes
anchorNo
formatNo
verifyNoHow to verify this receipt.
payloadYesThe sealed record as signed.
signatureYes
tree_sizeNo
checkpointNo
human_pageNo
provenanceNo
verifier_keyNo
verify_offlineNo
inclusion_proofYesSibling hashes from the leaf to the root (RFC 6962).
canonical_sha256No
canonicalizationNoThe canonical JSON form the leaf is hashed from.

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover safety traits (readOnlyHint, idempotentHint, destructiveHint, openWorldHint). The description adds meaningful behavioral context beyond annotations: the log is public and free forever, the returned receipt is portable and includes canonical payload, Ed25519 signature, RFC 6962 Merkle inclusion proof, and C2SP checkpoint, and it can be verified offline with verify-receipt.mjs. It does not mention rate limits or error behavior for out-of-range indices, but it adds substantial value over the structured 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 front-loaded with the core action and scope in the first sentence, followed by return details in the second. It is appropriately sized for a technically rich tool, though phrases like 'free forever' and 'zero dependencies' are mildly promotional and not strictly necessary for invocation correctness.

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

Completeness5/5

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

With an output schema present and rich annotations, the description is complete for an agent to call the tool correctly. It supplements the structured fields with verification context and return composition, and no critical invocation information is missing.

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 100%, and the single index parameter is fully documented in the schema, including zero-based semantics and a link to the log overview. The description only repeats 'by index' without adding new syntax or format details. Baseline 3 is appropriate when the schema already does the heavy lifting.

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: fetch a sealed AI Action Receipt by index from GBLIN's public transparency log. It is clearly distinguishable from sibling tools like seal_action_demo or verify_risk_attestation, which perform different operations on related concepts. An agent can identify exactly what this tool does without opening the schema.

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 purpose implies the use case: retrieve a receipt when you have its index and want the full verifiable artifact. However, the description does not explicitly state when to use this tool versus alternatives such as verify_risk_attestation or get_transaction_status, nor does it provide exclusions or prerequisites. Usage is therefore implied but not fully guided.

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

get_transaction_statusA
Read-onlyIdempotent
Inspect

Report what a sent Base transaction did: pending, succeeded, reverted or not found; its block and confirmations; the fee paid; the net token movements for the sender (GBLIN shares minted or redeemed, USDC, basket tokens); and, when it reverted, the decoded reason. Use it after sending the steps from prepare_action to confirm each one before the next.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYesThe transaction hash.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toNo
fromNo
hashYes
noteNo
blockNo
revertNo
statusYes
fee_ethNo
explorerNo
gas_usedNo
gas_limitNo
confirmationsNo
balance_changesNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and open-world behavior, so the safety profile is fully covered. The description adds the 'sent Base transaction' scope and the reverted-reason decoding, but most of its content describes return values rather than behavior beyond 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 purpose and the full list of reported fields are front-loaded in one dense sentence, with the usage rule following. The enumeration is long but each item is informative, and there is no filler.

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?

An output schema exists, so return values need not be restated in full, and the description still covers what an agent must know: when to call it and what it reports. For a single-parameter read tool with complete annotations, it is essentially complete.

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?

There is a single parameter with 100% schema description coverage, so the schema already carries the meaning of 'hash'. The description adds no syntax, format, or constraint details beyond what the schema provides; baseline 3 applies.

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 ('Report what a sent Base transaction did') and enumerates the exact outcomes (pending, succeeded, reverted, not found). It is clearly distinguishable from lookup-style siblings such as get_receipt or get_auction_state.

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 explicit sequencing guidance: 'Use it after sending the steps from prepare_action to confirm each one before the next,' naming the sibling that produces the inputs. It does not state when not to use it, but the context is unambiguous.

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

get_treasury_stateA
Read-onlyIdempotent
Inspect

Read the current GBLIN protocol state on Base mainnet: NAV in USD, basket composition with dynamic weights, and Crash Shield status. Use this BEFORE any swap to know the current price and risk regime.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
basketYesAssets in the basket with base and dynamic weights.
nav_usdYesNet asset value of one GBLIN share in USD.
auction_openYesTrue while a rebalancing auction is running.
nav_reliableYesFalse when a price feed is stale or a basket asset cannot be read; do not trade on the NAV then.
eth_price_usdYesETH price in USD from the oracle.
slippage_reasonNo
crash_shield_activeYesTrue when the crash shield has cut the weight of a falling asset.
slippage_buffer_pctNo
management_fee_bps_per_yearYesManagement fee in basis points per year, read from the contract.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds real context beyond that: it reads live mainnet state and defines the three data domains returned, plus the pre-swap sequencing. It omits auth requirements and any freshness/latency caveats, keeping it at a 4 rather than a 5.

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 sentences, zero filler. The returned fields are front-loaded and the usage constraint follows immediately, so an agent gets the payload and the trigger in the first read.

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

Completeness5/5

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

An output schema exists, so return-value explanation is technically not required, yet the description still summarizes the key outputs helpfully. With no parameters and annotations covering the safety profile, nothing an agent needs to call this correctly is missing.

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 takes zero parameters, so there is no parameter semantics to explain and the baseline of 4 applies. Nothing in the schema needs compensation from the 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?

Specific verb ("Read") plus specific resource ("GBLIN protocol state on Base mainnet"), and it enumerates the returned content: NAV in USD, basket composition with dynamic weights, and Crash Shield status. This clearly distinguishes it from sibling tools like analyze_treasury_health (analysis) and get_nav_history (historical series).

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?

"Use this BEFORE any swap to know the current price and risk regime" gives an explicit trigger and sequencing constraint, which is actionable guidance. It does not, however, name the neighboring alternatives (analyze_treasury_health, get_market_risk_regime, get_nav_history) or state when NOT to use it, so it falls short of a full 5.

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

how_to_seal_paidA
Read-onlyIdempotent
Inspect

Instructions for UNLIMITED paid seals ($0.0045 USDC per seal via x402 on Base) in GBLIN's AI Action Receipts transparency log — endpoint, body schema, payment flow, and how to verify receipts offline. Free demo alternative: seal_action_demo (5/day/IP).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
flowYes
noteNo
priceYes
receiptNo
endpointYes
read_freeNo
body_schemaNo
verify_offlineNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description supplies behavioral facts annotations cannot: exact cost ($0.0045 USDC per seal), the payment rail (x402 on Base), that the action goes into a public transparency log, and that receipts can be verified offline. It also contrasts rate limits against the free sibling.

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?

A single front-loaded sentence plus one short alternative clause — no filler. Slightly dense with parentheticals (price, rail, free-tier limit), but each parenthetical carries decision-relevant information.

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

Completeness5/5

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

For a zero-parameter documentation tool with an output schema, the description delivers everything an agent needs before calling: what it returns, the payment requirement, the network, and the fallback. Return-value details are correctly left to the output schema.

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 takes zero parameters, so the schema cannot carry semantic load and the baseline is 4. The description references a 'body schema' it exposes, which is useful orientation, but adds no per-field syntax details beyond that pointer.

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?

States a specific deliverable — instructions for paid seals — and enumerates exactly what the instructions cover: endpoint, body schema, payment flow, and offline receipt verification. It also names the sibling free alternative (seal_action_demo), so an agent can distinguish it from the demo-sealing tool without opening any schema.

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

Usage Guidelines5/5

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

Explicitly routes the agent: use this for paid, unlimited seals; use seal_action_demo for the free path, with the concrete constraint '5/day/IP'. Both the when-to-use and the alternative condition are stated rather than inferred.

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

invest_usdc_to_gblinA
Read-onlyIdempotent
Inspect

When your agent's idle USDC exceeds operating needs (rule of thumb: more than 7x daily burn), call this to park the SURPLUS into GBLIN — managed crypto exposure minted at NAV, redeemable any time via swap_gblin_to_usdc_jit. Returns two steps of calldata: (1) approve USDC to the GBLIN Zap, (2) GBLINZap.buyGBLINWithToken, which swaps the USDC to WETH on Uniswap V3 and mints at NAV with a non-zero minimum output. Free to call. The mint fee and the yearly management fee are governance parameters: read them live from get_treasury_state rather than from this text.

ParametersJSON Schema
NameRequiredDescriptionDefault
usdc_amountYesUSDC amount to invest (decimal string).
wallet_addressYesUser's wallet address that holds the USDC and signs the transactions.

Output Schema

ParametersJSON Schema
NameRequiredDescription
stepsYesTransactions to send in order.
actionYesAlways sequential_txs: send the steps one after the other.
expectedYesShares expected and the minimum applied.
gas_hintYesGas limit to set on the Zap step.
securityNo
gas_hint_noteNo

TDQS

A4.4/5.0
Behavior4/5

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

Goes well beyond the annotations: it discloses that the call is free, that it returns two calldata steps (approve + buyGBLINWithToken), that the swap routes through Uniswap V3, that minting happens at NAV with a non-zero minimum output, and that fees are live governance parameters rather than fixed text. There is mild tension with readOnlyHint=true given the returned calldata approves and mints, but the tool itself only constructs calldata and does not execute or mutate state, so this reads as preparation rather than an outright contradiction. Auth/permission requirements are not stated.

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?

Front-loaded with the decision rule, then the mechanism, then the return shape, then the fee caveat — logical order with no filler. It is on the longer side for a two-parameter tool, but each sentence carries distinct operational information (threshold, reverse path, calldata steps, fee source).

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

Completeness5/5

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

With an output schema present, the description need not document return values, yet it still sketches the two calldata steps. Combined with annotations covering safety and the schema covering both parameters, an agent has everything needed to decide and invoke correctly; the fee pointer to get_treasury_state closes the last gap.

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 coverage is 100%, so usdc_amount and wallet_address are already fully documented by the schema. The description reinforces context (surplus, wallet that holds USDC and signs) but adds no format, bounds, or unit detail beyond what the schema provides. Baseline 3 applies when the schema carries the parameter burden.

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?

States a specific verb+resource (park surplus USDC into GBLIN) and immediately distinguishes itself from siblings by naming swap_gblin_to_usdc_jit as the reverse path and get_treasury_state for fee data. The agent can tell exactly what this tool does without opening the schema.

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

Usage Guidelines5/5

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

Gives an explicit trigger condition with a concrete threshold ('idle USDC exceeds operating needs — rule of thumb: more than 7x daily burn'), restricts scope to SURPLUS only, and names the escape hatch (redeemable any time via swap_gblin_to_usdc_jit). When-to-use and the alternative are both spelled out.

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

plan_treasuryA
Read-onlyIdempotent
Inspect

Idle USDC to a reviewable plan in one call: operating cash = max(reserve_usd, daily_burn_usd × days), the surplus above it, a simulation of minting that surplus into GBLIN at NAV (fees read live from the vault, estimated exit value today, round-trip cost), the same simulation for a trial amount (100 USDC by default), the blockers (crash shield, redemption cooldown, ETH for the exit) and the tools to call after a human confirms. Reads only: nothing is executed and nothing is advised. GBLIN is crypto exposure (cbBTC, WETH, USDC), not cash and not yield.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDays of spend to keep liquid (default 7, max 365).
trial_usdcNoTrial amount to simulate beside the surplus (default 100).
reserve_usdNoUSD to keep liquid regardless of the burn rate; the larger of the two rules wins.
daily_burn_usdNoAverage daily spend in USD. Operating cash = daily_burn_usd × days.
wallet_addressYesAgent's 0x address.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextYesThe tools to call after a human confirms.
as_ofNoBlock and time the reads were taken at.
notesNo
trialYesThe same simulation for the trial amount.
inputsNoThe inputs as applied, with the defaults filled in.
marketYesNAV, ETH price, risk regime and crash shield status.
walletYes
surplusYesUSDC above the operating cash.
blockersYesReasons parking is not appropriate right now, if any.
simulationYesMint simulation for the surplus: shares, fees, exit value today, round-trip cost; or nothing_to_park.
wallet_stateYesUSDC, GBLIN and ETH balances, gas health, redemption cooldown.
operating_cashYesUSDC to keep liquid: max(reserve_usd, daily_burn_usd × days), with the runway in days.
park_candidateYesTrue when no blocker applies. Not a recommendation.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered, but the description adds substantive behavior: fees are read live from the vault, the simulation includes estimated exit value and round-trip cost, and it lists the concrete blockers (crash shield, redemption cooldown, ETH for exit). The final sentence explicitly recharacterizes GBLIN as crypto exposure, not cash or yield — useful risk context not present in structured fields.

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 core outcome is front-loaded and the dense parentheticals pack in the formula, simulation contents, and blockers without filler. It is heavy for a single paragraph and some clauses (e.g., the full blocker enumeration) could be trimmed, but nearly every sentence carries 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?

An output schema exists so return values need not be explained, yet the description still summarizes the plan contents and adds the risk caveat and blocker list, giving an agent enough to call and interpret the tool confidently. Coverage is strong; only the absence of explicit alternative-routing keeps it from a 5.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by giving the operating-cash formula (max(reserve_usd, daily_burn_usd × days)), noting the trial default (100 USDC), and stating which rule wins when they conflict. That is beyond what the schema alone conveys.

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 concrete transformation ('Idle USDC to a reviewable plan in one call') and enumerates the plan's outputs — operating cash, surplus, mint simulation, trial simulation, blockers — which lets an agent distinguish it from execution siblings like invest_usdc_to_gblin. The opening is a fragment naming the input rather than a clean verb+resource, so it falls just 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 Guidelines4/5

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

It places the tool firmly in a workflow ('the tools to call after a human confirms') and draws a boundary ('Reads only: nothing is executed and nothing is advised'), which implies this is the pre-execution planning step. It does not name a specific alternative to use instead if you want to actually execute, so it stops short of explicit when-not guidance.

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

prepare_actionA
Read-onlyIdempotent
Inspect

Build the unsigned transactions for any operation on the GBLIN vault, in the order to send them. Actions: mint_with_eth (amount in ETH), mint_with_weth (amount in WETH), mint_with_usdc (amount in USDC, through the Zap), redeem_in_kind (amount in shares; pro rata basket tokens, no fee, no price feed), exit_to_eth (amount in shares, through the Zap, all or nothing), exit_to_usdc (amount = the USDC you need), bid (trade with the rebalancing auction; row optional, the largest gap by default). Every output bound is non-zero and every step through the vault or the Zap carries its gas limit. Nothing is signed or sent: simulate the steps with preview_steps, then send them from the wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowNobid only: the basket row to bid on. Default: the row with the largest gap.
actionYesThe operation to prepare.
amountNoDecimal amount. Unit depends on the action (see the description). Not used by bid.
wallet_addressYesThe wallet that will sign and receive.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextNo
stepsYesTransactions to send in order.
actionYes
walletNo
expectedNoWhat the operation should deliver, with the minimums applied.
warningsNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description reinforces with 'Nothing is signed or sent' while adding per-action behavior: redeem_in_kind has 'no fee, no price feed', exit_to_eth is 'all or nothing', and every vault/Zap step carries a gas limit. These are meaningful traits beyond 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?

Front-loaded with the core action, then a dense but useful per-action list where each clause carries distinct semantics. Efficient overall, though the long inline action enumeration makes it fairly heavy for a single paragraph.

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

Completeness5/5

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

With an output schema present, return values need no explanation, and the description covers the prepare/simulate/send workflow, all action-specific units, and the safety framing. An agent has everything needed to invoke it correctly.

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?

Schema coverage is 100% (baseline 3), but the description goes further by resolving the otherwise ambiguous 'amount' unit per action (ETH, WETH, USDC, shares) and clarifying that bid ignores amount and only optionally uses row. This adds real meaning over the schema text.

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?

States a specific verb+resource ('Build the unsigned transactions for any operation on the GBLIN vault') and enumerates the exact actions available. It is distinguishable from siblings like preview_steps (simulate) and the various get_* state tools without opening any schema.

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?

Explicitly names the workflow and the alternative: simulate with preview_steps, then send from the wallet. This tells the agent when to reach for this tool versus the simulation sibling. It stops short of stating when NOT to use it or prerequisites, so it is not a full 5.

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

prepare_gblin_paymentA
Read-only
Inspect

Build a gasless GBLIN payment. The vault's share token implements EIP-3009, so the holder signs an authorization and anybody can carry it on chain: the payer needs no ETH. Returns the EIP-712 message to sign (its domain is read from the token, not assumed), the calldata that carries the signed authorization, and the x402 'exact' payload for paying an HTTP endpoint in GBLIN. Use method 'receive' when paying a known recipient: only that recipient can submit it, so nobody can front-run the transfer. Use 'transfer' for an x402 facilitator, which submits on the seller's behalf. With relay: true it also prepares the fee authorization for relay_gblin_payment, for when nobody else will carry the payment. No private key is requested, held or transmitted: the signature is produced by the caller's own wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesThe recipient's address.
fromYesThe payer's address: the wallet that will sign.
relayNotrue when nobody else will carry the payment on chain: also prepares the relay fee authorization, paid in GBLIN at the live NAV, for relay_gblin_payment. Forces method 'transfer'.
methodNo'receive' (default) can be submitted only by the recipient; 'transfer' by anyone.
amount_usdNoAmount in USD, converted at the live NAV. Give this or amount_gblin.
amount_gblinNoAmount in GBLIN shares, e.g. '0.25'. Give this or amount_usd.
valid_for_secondsNoHow long the authorization stays valid. Default 600, maximum 86400.

Output Schema

ParametersJSON Schema
NameRequiredDescription
relayNoWith relay: true, the fee authorization to sign and where to send both.
amountNo
digestYesThe EIP-712 digest of typed_data.
methodYes
submitNo
warningsNo
next_stepsNo
typed_dataYesThe EIP-712 message to sign with eth_signTypedData_v4.
x402_payloadYesThe x402 exact-scheme payment payload, with the signature left to fill.
authorizationYesfrom, to, value, validAfter, validBefore, nonce.
payer_balanceNo
x402_accepts_for_sellersNo

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint, openWorldHint) by disclosing the security posture: no private key is requested, held or transmitted; the EIP-712 domain is read from the token rather than assumed; 'receive' cannot be front-run because only the recipient can submit. These are exactly the behavioral facts an agent needs before signing and relaying.

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?

Front-loaded with the action and the return payloads, then method selection, then the relay caveat, then the no-private-key guarantee. Every sentence carries unique information, though the single long paragraph is dense and could be split for faster scanning.

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

Completeness5/5

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

For a multi-step signing/relaying tool with 7 parameters, an output schema and full schema coverage, the description covers the missing pieces: the gasless mechanism, method semantics, relay handoff, and security guarantees. Nothing needed to invoke it correctly is absent.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter behavior beyond the field docs: it clarifies that relay: true forces method 'transfer', that the domain comes from the token, and that amount_usd is converted at live NAV. It stops short of documenting valid_for_seconds bounds or amount interplay in more depth than the schema already does.

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?

States a specific verb and resource ('Build a gasless GBLIN payment') and immediately explains the EIP-3009 signing model that makes it distinct from a normal transfer. It also names the three artifacts returned (EIP-712 message, calldata, x402 payload), so an agent knows exactly what it produces versus sibling tools like relay_gblin_payment or verify_gblin_authorization.

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

Usage Guidelines5/5

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

Explicitly routes between the two methods ('receive' for a known recipient, 'transfer' for an x402 facilitator) and gives the condition for each. It also states when to set relay: true ('when nobody else will carry the payment') and names the downstream tool relay_gblin_payment, leaving nothing to inference.

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

preview_stepsA
Read-onlyIdempotent
Inspect

Simulate a list of transactions in sequence against the latest Base block, as if the wallet sent them one after the other, before anything is signed. Each step sees the state the previous ones left (an approval before a mint works). Returns, per step, whether it would succeed, the gas it uses, whether the gas limit it carries is enough, and the decoded revert reason with a hint when it fails; and the net token and ETH movements for the wallet. Pass the steps exactly as prepare_action, invest_usdc_to_gblin or swap_gblin_to_usdc_jit return them. State can change before your transactions land: a successful preview is evidence, not a guarantee.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesThe wallet that will send the steps.
stepsYesThe steps, in order: target and calldata (or their send_calls spellings, to and data), value in wei (optional), gas (optional).

Output Schema

ParametersJSON Schema
NameRequiredDescription
fromNo
noteNo
blockNoThe block the simulation ran on.
stepsYesPer step: success, gas used, whether the given limit is enough, recommended limit, revert reason.
would_succeedYesTrue only if every step succeeds in the simulation.
balance_changesYesNet token and ETH movements for the wallet.
first_failing_stepNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds substantial context beyond them: sequential state dependency between steps ('an approval before a mint works'), the per-step and net returns, and the caveat that on-chain state can change before landing. This is rich behavioral 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?

Three front-loaded sentences: purpose first, mechanics and return shape second, provenance and caveat third. Every sentence earns its place with no redundancy.

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

Completeness5/5

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

Complete for a simulation tool. Although an output schema exists (so return values need not be restated), the description still clarifies the return shape and sequencing semantics, and covers the state-may-change caveat an agent needs to interpret results correctly.

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?

Schema coverage is 100%, so the schema already documents from, steps, and the target/calldata aliases and optional value/gas. The description adds provenance meaning by telling the agent to pass steps 'exactly as' the producing tools return them and emphasizes they are applied in order, which goes modestly beyond the schema.

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?

States a specific verb+resource with precise scope: 'Simulate a list of transactions in sequence against the latest Base block ... before anything is signed.' This clearly distinguishes it from siblings like prepare_action (which produces steps) and the read-only state tools.

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

Usage Guidelines5/5

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

Explicitly frames when to use it ('before anything is signed'), and names the exact sibling tools whose output feeds it (prepare_action, invest_usdc_to_gblin, swap_gblin_to_usdc_jit). It also warns that a successful preview is 'evidence, not a guarantee,' which sets correct expectations about when the result is authoritative.

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

quote_safe_swapA
Read-onlyIdempotent
Inspect

Preview a buy (ETH→GBLIN) or sell (GBLIN→ETH) without executing. Returns expected output, safe minOut with dynamic slippage buffer (2.5% normal / 4% during Crash Shield), and fee breakdown. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
amount_inYesPositive decimal. ETH for buy, GBLIN for sell.
directionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
feesNo
directionYes
next_stepYes
amount_in_ethNoBuy only.
cooldown_noteNo
amount_in_gblinNoSell only.
slippage_reasonNo
expected_eth_outNoSell only.
safe_min_eth_outNoSell only. Pass as minEthOut.
expected_gblin_outNoBuy only.
safe_min_gblin_outNoBuy only. Pass as minOut.
slippage_buffer_bpsYes
will_revert_with_zero_toleranceNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: the dynamic slippage buffer (2.5% normal / 4% during Crash Shield) and the fee breakdown returned.

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 tightly written sentences, front-loaded with the core purpose and return values. Every sentence adds information without repetition.

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

Completeness5/5

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

An output schema exists, so return values need not be explained in full, yet the description still summarizes them. Annotations cover safety, and the description adds the slippage and fee context, leaving no critical gaps for correct invocation.

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?

Schema coverage is 50%: amount_in has a description, but direction has only an enum. The description compensates by mapping buy to ETH→GBLIN and sell to GBLIN→ETH, clarifying the missing half of the parameter semantics.

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?

States a specific verb (preview) and resource (buy/sell ETH↔GBLIN), and explicitly distinguishes from execution with 'without executing'. An agent can tell this is a read-only quote tool separate from swap execution siblings.

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 phrase 'without executing' implies the tool is for previewing before a swap, but it does not name any alternative tool or state when not to use it. No explicit routing to siblings like swap_gblin_to_usdc_jit or preview_steps is provided.

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

relay_gblin_paymentA
DestructiveIdempotent
Inspect

Have GBLIN's relay carry a signed GBLIN payment on chain for a payer that holds no ETH. Pass the payment and the relay fee, each as { authorization, signature }, both prepared by prepare_gblin_payment with relay: true and signed by the payer's wallet. The relay checks both against the chain, simulates them and submits them in one transaction through Multicall3: either both settle or neither does. The fee is paid in GBLIN at the live NAV. Returns the transaction hash and its outcome. This moves funds: run it only with authorizations the payer meant to sign.

ParametersJSON Schema
NameRequiredDescriptionDefault
feeYes{ authorization, signature } of the relay fee, from prepare_gblin_payment's relay block.
paymentYes{ authorization, signature } of the payment, method 'transfer'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
feeNo
noteNo
blockNo
relayYesThe relay that carried the payment.
statusYes
paymentNo
explorerNo
transactionYesThe transaction hash.

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses the atomic Multicall3 settlement ('either both settle or neither does'), chain-side verification and simulation before submission, fee denomination at live NAV, and the return shape. Annotations cover the safety profile (destructive/idempotent), and the description adds concrete operational mechanics.

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?

Front-loaded with purpose, then how to supply the inputs, then behavioral mechanics, ending with the funds warning. Six dense sentences with no filler; each carries distinct, actionable information.

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

Completeness5/5

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

For a nested two-object, fund-moving tool with an output schema, the description covers inputs, prerequisite tool, atomicity, fee mechanics, return summary, and a safety caveat. Nothing an agent needs to invoke it correctly is missing.

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?

Schema coverage is 100%, so baseline is 3. The description adds real value: both params are { authorization, signature } blocks produced by prepare_gblin_payment with relay: true, signed by the payer's wallet, with the payment method being 'transfer'.

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?

States a specific verb and resource ('have GBLIN's relay carry a signed GBLIN payment on chain') plus the distinguishing condition ('for a payer that holds no ETH'). It clearly differentiates itself from prepare_gblin_payment, which it names as the upstream tool.

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

Usage Guidelines5/5

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

Gives the selecting condition (payer holds no ETH), names the prerequisite producer (prepare_gblin_payment with relay: true), and adds an explicit safety exclusion ('run it only with authorizations the payer meant to sign'). An agent knows exactly when this applies and when it must not be run.

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

seal_action_demoAInspect

Seal the HASHES of an AI action into GBLIN's public append-only RFC 6962 transparency log (FREE demo, 5/day/IP, receipt marked demo:true). Returns a portable receipt: Ed25519 signature + Merkle inclusion proof + operator-signed C2SP checkpoint, offline-verifiable forever with the zero-dependency verify-receipt.mjs. Input/output go in as sha256 HASHES only; the action label and metadata you send are published in the public log. Unlimited seals cost $0.0045 via x402 — see how_to_seal_paid.

ParametersJSON Schema
NameRequiredDescriptionDefault
metaNoOptional public metadata (published).
toolNoOptional name of the tool/model that produced the action (published).
actionYesShort public label of the action, e.g. 'trade.executed' or 'report.generated'. Published in the log — never put secrets here.
agent_idNoOptional public identifier of the agent (published in the log).
input_hashYessha256 of the action input, as 64 lowercase hex chars. Hash locally; never send content.
output_hashNoOptional sha256 of the action output (64 lowercase hex chars).

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only supply the safety profile (readOnly=false, idempotent=false, openWorld=true). The description adds substantial behavior beyond that: a per-IP rate limit, the fact that the action label and metadata become publicly published, the exact receipt composition (Ed25519 signature, Merkle inclusion proof, operator-signed C2SP checkpoint), and that verification is offline and permanent.

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?

Two dense sentences with the core action front-loaded and no filler. The parenthetical rate-limit and receipt-detail clauses make it packed, but each clause carries information an agent needs before calling.

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

Completeness5/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 compensates by describing the return value (portable verifiable receipt) and its verification path. Rate limits, payment alternative, and the public-publishing side effect are all covered, leaving nothing material missing for a mutation tool of this complexity.

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 already 100%, so the schema documents hash format, length caps, and the 'published — never put secrets here' warning on its own. The description reinforces the hash-only contract and public-visibility consequence but adds no syntax or format detail the schema lacks; baseline 3 is appropriate.

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?

States a specific verb and resource: "Seal the HASHES of an AI action into GBLIN's public append-only RFC 6962 transparency log." It also names the closely-related sibling (how_to_seal_paid), so an agent can separate it from the payment-instruction tool without opening either schema.

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?

Gives clear operating context (FREE demo, 5/day/IP) and routes to the alternative with a condition: unlimited seals go through x402 "— see how_to_seal_paid." There is no explicit when-not-to-use versus prepare_action or the verification siblings, so it stops short of full routing guidance.

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

share_skill_with_peerA
Read-onlyIdempotent
Inspect

Generate a portable skill seed that another AI agent can use to install GBLIN MCP and start managing treasury. The seed includes a working transaction example, install instructions, and a referral code derived from the caller's wallet. The code is a label inside the seed only: it is not written into any transaction and no fee is paid for it. Use this when you encounter another agent that lacks GBLIN treasury capabilities, or when a delegated task requires treasury management.

ParametersJSON Schema
NameRequiredDescriptionDefault
peer_contextNoOptional brief description of the peer agent's use case (e.g. 'yield farming bot', 'x402 payment agent', 'NFT marketplace'). Used to customize the example transaction in the seed.
caller_walletYesEVM address of the caller agent's wallet (the agent currently using GBLIN MCP). Will be hashed into the referral code.
example_amount_usdcNoOptional USDC amount to use in the example transaction within the seed. Default: 5. Range: 1-100.

Output Schema

ParametersJSON Schema
NameRequiredDescription
textYesA ready-to-send description of the GBLIN skill.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive and open-world, so the bar is lower. The description adds meaningful behavior beyond them: the referral code is a label inside the seed, never written into a transaction, and no fee is paid for it — an important reassurance against misreading the code as an on-chain action.

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?

Front-loads the generation purpose and what the seed contains, then the referral-code clarification, then the usage trigger. Slightly dense but every sentence carries weight and none is filler.

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?

An output schema exists, so return values need not be explained. The description covers what is produced, the semantics of the referral code, and when to invoke it, leaving only minor gaps such as the size or format of the generated seed.

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 100%, with caller_wallet hashing into the referral code and peer_context/example_amount_usdc fully documented, so the baseline is 3. The description mentions the referral-code derivation but adds no format, syntax, or constraint detail beyond what the schema already provides.

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?

States a concrete verb and resource ('Generate a portable skill seed') and enumerates what the seed contains (example transaction, install instructions, referral code). This is clearly distinguishable from the sibling treasury-operation tools, which read/plan/execute rather than produce a shareable artifact.

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?

Gives explicit trigger conditions: 'when you encounter another agent that lacks GBLIN treasury capabilities, or when a delegated task requires treasury management.' Clear context, though it names no alternative tool or a when-not-to-use case.

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

swap_gblin_to_usdc_jitA
Read-onlyIdempotent
Inspect

When an x402 invoice (or any USDC obligation) arrives and your treasury sits in GBLIN, call this to get ready-to-broadcast calldata that redeems exactly the USDC you need, just in time. Three sequential transactions: (1) approve the shares to the GBLIN Zap, (2) GBLINZap.sellGBLINForEth, which redeems in kind and sells every leg for ETH, all or nothing, (3) a Uniswap WETH->USDC swap that spends only the guaranteed ETH minimum and still returns at least the requested USDC. EOAs sign three times; ERC-4337 / EIP-7702 wallets can batch them into one operation. Every step carries a non-zero minimum; ETH above the minimum stays in the wallet. Free to call. A redemption carries no protocol fee; the costs are the Zap's swaps and gas.

ParametersJSON Schema
NameRequiredDescriptionDefault
usdc_neededYesUSDC amount, decimal string.
wallet_addressYesAgent's 0x address (for cooldown check).

Output Schema

ParametersJSON Schema
NameRequiredDescription
stepsYesTransactions to send in order.
actionYesAlways sequential_txs: send the steps one after the other.
paramsNo
expectedYesShares spent, ETH and USDC expected, and the minimums applied.
gas_hintYesGas limit to set on the Zap step.
compatibilityNo
gas_hint_noteNo

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the exact three-transaction sequence, the all-or-nothing redemption semantics, the non-zero minimum guarantees on every step, wallet handling of surplus ETH, EOA vs ERC-4337/EIP-7702 signing paths, and the cost/fee profile. This is a rich behavioral contract, not a repeat of readOnlyHint/idempotentHint.

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?

Front-loaded with the trigger and the deliverable, then the mechanics; every sentence carries information an agent needs (sequence, minimums, signing model, cost). It is dense and slightly long, but nothing is disposable boilerplate.

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

Completeness5/5

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

With an output schema present, the description needn't explain return values, and it covers the remaining obligations: when to invoke, what gets produced, how many signatures are required, and what the cost surface is. An agent has everything needed to call it correctly.

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?

Schema coverage is 100%, so the baseline is 3, and the description adds real meaning on top: usdc_needed is 'exactly the USDC you need' with a guarantee the swap returns at least that amount, and wallet_address is tied to a cooldown check. Both parameters are given purpose beyond their field-level docs.

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?

States a specific verb and artifact ('get ready-to-broadcast calldata') plus the exact resource pair (GBLIN -> USDC) and the timing constraint (just in time). An agent can distinguish it from invest_usdc_to_gblin (the reverse direction) and prepare_gblin_payment without opening either schema.

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?

Gives a clear trigger condition: 'When an x402 invoice (or any USDC obligation) arrives and your treasury sits in GBLIN.' It covers when to use it but never names the sibling to prefer when the treasury is already in USDC or when no obligation exists, so the exclusion side is inferred rather than stated.

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

verify_gblin_authorizationA
Read-onlyIdempotent
Inspect

Check a signed GBLIN authorization against the chain before spending gas on it. Recovers the signer from the EIP-712 digest (and asks the wallet itself through ERC-1271 when the payer is a contract), then checks the validity window against on-chain time, whether the nonce has already been used or cancelled, and whether the payer still holds the amount. Returns a verdict and the ready calldata when it would settle, the failing reason when it would not. This is the same set of checks an x402 facilitator runs, so a 'would_settle' verdict here means the payment is good to carry.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodNoWhich method the signature was produced for. Default 'receive'.
signatureYesThe signature produced by the payer's wallet, 0x-prefixed.
authorizationYesThe authorization object: from, to, value, validAfter, validBefore, nonce.

Output Schema

ParametersJSON Schema
NameRequiredDescription
amountNo
checksYes
digestNo
methodYes
sourceNo
submitNoCalldata and who may submit it, or null when it would not settle.
failuresYesReasons it would not settle; empty when it would.
would_settleYesTrue only if the token would accept this authorization now.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial behavioral detail beyond them: EIP-712 signer recovery, the ERC-1271 contract-payer path, the validity-window/nonce/payer-balance checks, and the dual return shape (verdict + calldata vs. failing reason). This is exactly the extra context the annotations cannot carry.

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?

Four sentences, front-loaded with the core action, then the mechanism, then the return contract, then the trust framing. Dense but each sentence carries information; only the final x402 sentence is arguably optional.

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

Completeness5/5

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

Given an output schema exists, return values need not be explained, yet the description still clarifies the verdict semantics and calldata. Combined with the fully covered input schema and safety annotations, an agent has everything needed to call and interpret the tool correctly.

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 100% and the schema already documents each parameter (method enum, signature format, authorization fields). The description reinforces concepts like the digest and nonce but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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 ('Check a signed GBLIN authorization against the chain') and clarifies it is a pre-flight verification distinct from sibling tools like prepare_gblin_payment and relay_gblin_payment. An agent can immediately tell this validates rather than executes a payment.

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 clearly states when to use it ('before spending gas on it') and gives the operative condition for the verdict ('would_settle' means the payment is good to carry). It stops short of explicitly naming alternative siblings or when-not-to-use cases, so it is not a full 5.

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

verify_risk_attestationA
Read-onlyIdempotent
Inspect

Verify a GBLIN Risk Attestation — the object returned by GBLIN's /api/x402/attestation, or a proof-of-diligence a peer agent attached to its action. FREE, no payment. Runs four checks: (1) INTEGRITY — recomputes the EIP-712 attestation_id and detects tampering; (2) AUTHENTICITY — if a signature is present, recovers the signer and checks it is GBLIN's published attestor; (3) FRESHNESS — whether it expired (10-minute TTL), using on-chain time; (4) LIVE DRIFT — compares the attested regime to the CURRENT on-chain regime and flags if it changed. Use before you trust any counterparty/peer that claims it 'checked market risk via GBLIN'.

ParametersJSON Schema
NameRequiredDescriptionDefault
attestationYesThe full attestation object from /api/x402/attestation (must include `eip712`; `attestation_id`, `signature`, `attestor` are used when present). A JSON string of that object is also accepted.
expected_attestorNoOptional 0x address to check the signature against. Defaults to the GBLIN attestor address baked into this MCP build (GBLIN_ATTESTOR_ADDRESS env).

Output Schema

ParametersJSON Schema
NameRequiredDescription
liveNo
validYesTrue only if every check passed.
checksYesEach check by name, with its result.
sourceNo
attestedNo
guidanceNo
recomputed_attestation_idNo

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the burden is low, yet the description still adds substantial behavior: it is FREE with no payment, and it enumerates the four concrete checks (EIP-712 recomputation, signer recovery, 10-minute TTL against on-chain time, live regime drift). This tells the agent exactly what the call proves and what failure modes it detects.

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?

Front-loaded with the verb, resource, and the 'FREE' qualifier, then a numbered breakdown of the four checks plus a use-case sentence. Dense and largely waste-free, though the enumerated checks make it longer than strictly necessary.

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

Completeness5/5

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

With an output schema present, return formatting need not be described, and the description covers cost, the four verification dimensions, and the trust decision it supports. Nothing needed to call it correctly is missing.

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 coverage is 100%, so both parameters are already documented in the schema (including the eip712 requirement and expected_attestor defaulting to GBLIN_ATTESTOR_ADDRESS). The description adds only a slight note that the attestor is 'GBLIN's published attestor', so it meets the baseline without exceeding it.

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?

States a specific verb and resource (verify a GBLIN Risk Attestation) and scopes exactly which objects qualify: the /api/x402/attestation output or a peer's proof-of-diligence. An agent can distinguish it from siblings like verify_gblin_authorization because the resource being verified is named precisely.

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?

Gives an explicit trigger: 'Use before you trust any counterparty/peer that claims it checked market risk via GBLIN.' That is a clear contextual trigger, but no when-not condition or named alternative tool is offered.

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 updatesv1.1.5
    • Changedanalyze_treasury_health2 fields changed
      • addedInput schema / properties / _payment
        Added value: +{
        +  "description": "Base64-encoded x402 PaymentProof JSON. Omit on first call to receive the 402 payment manifest.",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "balances": {
        +      "type": "object"
        +    },
        +    "cooldown": {
        +      "description": "Whether the redemption cooldown is active and for how long.",
        +      "type": "object"
        +    },
        +    "gas_health": {
        +      "description": "Whether the wallet holds enough ETH for the next transactions.",
        +      "type": "object"
        +    },
        +    "ratios": {
        +      "type": "object"
        +    },
        +    "recommendation": {
        +      "description": "hold, rebalance_to_gblin or rebalance_to_usdc, with the reason.",
        +      "type": "object"
        +    },
        +    "wallet": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "wallet",
        +    "balances",
        +    "gas_health",
        +    "cooldown",
        +    "recommendation"
        +  ],
        +  "type": "object"
        +}
    • Addedget_auction_state
    • Changedget_governance_state2 fields changed
      • addedInput schema / required
        Added value: +[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "fee_recipient": {
        +      "type": "string"
        +    },
        +    "lens": {
        +      "type": "string"
        +    },
        +    "owner": {
        +      "type": "string"
        +    },
        +    "owner_is_renounced": {
        +      "type": "boolean"
        +    },
        +    "owner_is_timelock": {
        +      "type": "boolean"
        +    },
        +    "pending_handover": {
        +      "description": "A pending ownership transfer, or null.",
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "pending_timelock_operation": {
        +      "description": "A scheduled timelock operation affecting ownership, or null.",
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "timelock": {
        +      "description": "Address and minimum delay of the timelock, read on chain.",
        +      "type": "object"
        +    },
        +    "trust_summary": {
        +      "type": "string"
        +    },
        +    "vault": {
        +      "type": "string"
        +    },
        +    "verification": {
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "vault",
        +    "owner",
        +    "owner_is_timelock",
        +    "owner_is_renounced",
        +    "timelock"
        +  ],
        +  "type": "object"
        +}
    • Addedget_market_risk_regime
    • Addedget_nav_history
    • Addedget_receipt
    • Addedget_transaction_status
    • Changedget_treasury_state2 fields changed
      • addedInput schema / required
        Added value: +[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "auction_open": {
        +      "description": "True while a rebalancing auction is running.",
        +      "type": "boolean"
        +    },
        +    "basket": {
        +      "description": "Assets in the basket with base and dynamic weights.",
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "crash_shield_active": {
        +      "description": "True when the crash shield has cut the weight of a falling asset.",
        +      "type": "boolean"
        +    },
        +    "eth_price_usd": {
        +      "description": "ETH price in USD from the oracle.",
        +      "type": "number"
        +    },
        +    "management_fee_bps_per_year": {
        +      "description": "Management fee in basis points per year, read from the contract.",
        +      "type": "number"
        +    },
        +    "meta": {
        +      "type": "object"
        +    },
        +    "nav_reliable": {
        +      "description": "False when a price feed is stale or a basket asset cannot be read; do not trade on the NAV then.",
        +      "type": "boolean"
        +    },
        +    "nav_usd": {
        +      "description": "Net asset value of one GBLIN share in USD.",
        +      "type": "number"
        +    },
        +    "slippage_buffer_pct": {
        +      "type": "number"
        +    },
        +    "slippage_reason": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "nav_usd",
        +    "eth_price_usd",
        +    "nav_reliable",
        +    "management_fee_bps_per_year",
        +    "auction_open",
        +    "crash_shield_active",
        +    "basket"
        +  ],
        +  "type": "object"
        +}
    • Addedhow_to_seal_paid
    • Changedinvest_usdc_to_gblin3 fields changed
      • addedInput schema / properties / wallet_address
        Added value: +{
        +  "description": "User's wallet address that holds the USDC and signs the transactions.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "usdc_amount"
        -]New value: +[
        +  "usdc_amount",
        +  "wallet_address"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "action": {
        +      "description": "Always sequential_txs: send the steps one after the other.",
        +      "type": "string"
        +    },
        +    "expected": {
        +      "description": "Shares expected and the minimum applied.",
        +      "type": "object"
        +    },
        +    "gas_hint": {
        +      "description": "Gas limit to set on the Zap step.",
        +      "type": "number"
        +    },
        +    "gas_hint_note": {
        +      "type": "string"
        +    },
        +    "security": {
        +      "type": "object"
        +    },
        +    "steps": {
        +      "description": "Transactions to send in order.",
        +      "items": {
        +        "description": "One transaction to send, in order: target, calldata, value in wei, and gas when the step needs an explicit limit. The same call is repeated as to, data and chainId (8453) for wallet batch APIs such as send_calls.",
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "action",
        +    "steps",
        +    "expected",
        +    "gas_hint"
        +  ],
        +  "type": "object"
        +}
    • Addedplan_treasury
    • Addedprepare_action
    • Addedprepare_gblin_payment
    • Addedpreview_steps
    • Changedquote_safe_swap1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "amount_in_eth": {
        +      "description": "Buy only.",
        +      "type": "string"
        +    },
        +    "amount_in_gblin": {
        +      "description": "Sell only.",
        +      "type": "string"
        +    },
        +    "cooldown_note": {
        +      "type": "string"
        +    },
        +    "direction": {
        +      "enum": [
        +        "buy",
        +        "sell"
        +      ],
        +      "type": "string"
        +    },
        +    "expected_eth_out": {
        +      "description": "Sell only.",
        +      "type": "string"
        +    },
        +    "expected_gblin_out": {
        +      "description": "Buy only.",
        +      "type": "string"
        +    },
        +    "fees": {
        +      "type": "object"
        +    },
        +    "next_step": {
        +      "type": "string"
        +    },
        +    "safe_min_eth_out": {
        +      "description": "Sell only. Pass as minEthOut.",
        +      "type": "string"
        +    },
        +    "safe_min_gblin_out": {
        +      "description": "Buy only. Pass as minOut.",
        +      "type": "string"
        +    },
        +    "slippage_buffer_bps": {
        +      "type": "number"
        +    },
        +    "slippage_reason": {
        +      "type": "string"
        +    },
        +    "will_revert_with_zero_tolerance": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "direction",
        +    "slippage_buffer_bps",
        +    "next_step"
        +  ],
        +  "type": "object"
        +}
    • Addedrelay_gblin_payment
    • Addedseal_action_demo
    • Addedshare_skill_with_peer
    • Changedswap_gblin_to_usdc_jit1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "action": {
        +      "description": "Always sequential_txs: send the steps one after the other.",
        +      "type": "string"
        +    },
        +    "compatibility": {
        +      "type": "object"
        +    },
        +    "expected": {
        +      "description": "Shares spent, ETH and USDC expected, and the minimums applied.",
        +      "type": "object"
        +    },
        +    "gas_hint": {
        +      "description": "Gas limit to set on the Zap step.",
        +      "type": "number"
        +    },
        +    "gas_hint_note": {
        +      "type": "string"
        +    },
        +    "params": {
        +      "type": "object"
        +    },
        +    "steps": {
        +      "description": "Transactions to send in order.",
        +      "items": {
        +        "description": "One transaction to send, in order: target, calldata, value in wei, and gas when the step needs an explicit limit. The same call is repeated as to, data and chainId (8453) for wallet batch APIs such as send_calls.",
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "action",
        +    "steps",
        +    "expected",
        +    "gas_hint"
        +  ],
        +  "type": "object"
        +}
    • Addedverify_gblin_authorization
    • Addedverify_risk_attestation
  2. 6 tool updatesv1.1.2
    • First observedanalyze_treasury_health
    • First observedget_governance_state
    • First observedget_treasury_state
    • First observedinvest_usdc_to_gblin
    • First observedquote_safe_swap
    • First observedswap_gblin_to_usdc_jit

TDQS

A4/5.0

Scored across 21 tools

Disambiguation3/5

Several tools overlap in purpose: invest_usdc_to_gblin and swap_gblin_to_usdc_jit largely duplicate prepare_action's mint_with_usdc and exit_to_eth/exit_to_usdc paths, and plan_treasury, analyze_treasury_health, and invest_usdc_to_gblin all blend treasury planning/allocation. quote_safe_swap vs preview_steps is also blurry, though descriptions do help distinguish read-only quoting from full-sequence simulation.

Naming Consistency4/5

Nearly all tools use a consistent snake_case verb_noun or get_noun pattern (get_treasury_state, prepare_action, verify_risk_attestation). Minor deviations like how_to_seal_paid and quote_safe_swap break the pattern slightly but remain readable and unambiguous.

Tool Count3/5

21 tools is on the heavy side for a single server and is inflated by convenience wrappers (invest_usdc_to_gblin, swap_gblin_to_usdc_jit) that partially duplicate prepare_action. The breadth of sub-domains (treasury, payments, risk, receipts) justifies many tools, but the surface is borderline heavy.

Completeness4/5

Coverage is strong across the protocol lifecycle: read state (treasury, auction, governance, NAV history, risk regime), prepare/simulate/execute transactions, verify authorizations and attestations, and seal/fetch transparency-log receipts. A few niche operations (e.g. cancelling authorizations, richer governance actions) are absent but core workflows have no dead ends.

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that provides real-time access to Chainlink's decentralized on-chain price feeds, optimized for seamless integration into AI agents and autonomous systems.
    5
    12 npm
    7
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Manage Uniswap and Aerodrome liquidity positions with leverage, automated rebalancing, and yield optimization on Base and Unichain.
    35
    199 npm
    5
    AGPL 3.0
  • A
    license
    A
    quality
    C
    maintenance
    Eight crypto and DeFi data tools for AI agents: prices, gas, one ParaSwap route quote, GoPlus token security and top-holder samples, DefiLlama yields, Hyperliquid/dYdX funding, and observed wallet balances. Inspect prices free; pay 0.001–0.008 USDC per call on Base through x402. No API key or subscription.
    8
    109 npm
    MIT