@gblin-protocol/mcp-server
GBLIN MCP Server
Base mainnet에서 AI 에이전트를 위한 시장 리스크 국면(regime) 및 재무 도구. 자율 에이전트가 돈을 움직이기 전에 묻지 않으면 안 되는 두 가지 질문에 답하는 MCP(Model Context Protocol) 서버:
지금 시장이 리스크 오프(risk-off)인가? 실시간 국면 —
calm|elevated|crash— 온체인 Crash Shield에서 도출된 값을 읽습니다. 무료, API 키 불필요, 지갑 불필요. 상대방에게 확인했다는 사실을 증명해야 한다면, 서명된 EIP-712 리스크 증명서(risk attestation) 를 구매해서 휴대 가능한 주의의무 이행 증명(proof-of-diligence)으로 사용하세요.유휴 USDC는 작업 사이에 어디에 있어야 할까요? 담보로 뒷받침된 cbBTC/WETH/USDC 인덱스인 GBLIN 안입니다. NAV에서 발행·상환되며, 에이전트가 x402 인보이스를 결제해야 하는 바로 그 순간에 USDC로 Just-In-Time 스왑됩니다. 장기 동안 잠겨 있는 일 없이, 서명되지 않은 calldata만 필요합니다 — 여러에 지갑이 서명하며, 우리는 키를 절대 보관하지 않습니다.
📖 전체 문서 및 빠른 시작: gblin.digital/agents
⚡ 복사해 붙여넣기만 하면 되는 스타터 예제: examples/ — ElizaOS · AgentKit / TypeScript · Claude / 모든 MCP 클라이언트 — 각 예제마다 권장되는 재무 정책 시스템 프롬프트와 안전한 기본값 보안 환경이 포함되어 있습니다.
▶️ 실행 가능한 전체 사이클 데모 (읽기 전용, 키 불필요): npx tsx examples/full-cycle.ts — Base 메인넷에서 실시간으로: 재무 상태 → 리스크 국면 → 오프라인에서 검증된 증명서 → 투자(vesting) calldata → JIT 상환 calldata. 소스.
🌐 호스팅 MCP (Streamable HTTP, 설치 불필요): https://gblin-mcp.gblin-mcp-worker.workers.dev/mcp — 점 표기법 트리로 제공되는 무료 도구 8개, 인증 불필요, 세션 없음: risk.regime, risk.attestation_sample, protocol.stats, protocol.info, coherence.report, 그리고 AI Action Receipts (receipts.seal)는 IP당 지속적으로 5회(데모), receipts.get, receipts.verify — 순수 수학적 검증이라 이 서버를 신뢰할 필요가 없습니다). 프롬프트 2개: risk_gate, seal_and_verify. 이름 변경 전의 평면(flat) 이름도 목록에는 없는 별칭으로 2026-11-21까지 계속 동작합니다. 문서는 도구가 아니라 MCP 리소스로 제공됩니다: gblin://howto/attestation, gblin://howto/seal, gblin://limits, gblin://keys (검증자 키 + 키 순환 정책). MCP를 통한 유료 기능은 비용 없음.
GET 전용 감사 (POST를 사용할 수 없는 검토자나 클라이언트를 위한):
/meta(수량 +manifest_hash) ·/tools.json·/resources.json·/conformance·/v1/verify/:index(검사별 불리언 값 + 온체인 앵커 일관성). 이 호스팅 서버는 아래의 npm stdio 패키지(도구 13개, 재무 거버넌스 포함)와 의도적으로 다르고 部。 Smithery에도 등록되어 있습니다. 소스는worker/에 있습니다.
ElizaOS 플러그인
ElizaOS에서 실행되는 에이전트 용으로 컴패니언 플러그인을 설치하세요 — 이제 공식 ElizaOS 플러그인 레지스트리에 등록되었습니다 (v0.4.0, 보안 강화):
npm install plugin-gblin
# or: elizaos plugins add gblin이 플러그인은 네 개의 네이티브 Action(CHECK_GBLIN_TREASURY_HEALTH, INVEST_IDLE_USDC_GBLIN, RESCUE_USDC_FROM_GBLIN, GET_GBLIN_RISK_ATTESTATION)과 Provider를 제공하며, Provider는 매 루프마다 실시간 NAV 및 Crash Shield 상태를 에이전트 컨텍스트에 주입합니다.
Related MCP server: mcp-server
AI Action Receipts — 에이전트가 무엇을 했는지에 대한 증인이 있는 투명성 로그
이 기능이 공략하는 것은 2026년 AI 도입의 1번 장벽입니다: 어려운 문제는, 사후에 어떤 AI가 정확히 무엇을 했는지 아무도 증명할 수 없다는 것입니다 (조기: 근로자는 AI 결과 검증에 주당 2–4시간을 쓰고, 70%의 조직이 에이전트를 거버넨할 수 없다고 답합니다). 우리의 대답은 가장 작고 정직한 원시 셀입니다: RFC 6962 투명성 로그는 AI 행위를 위한 공개, 추가 전용. 입력과 출력은 해시로만 저장됩니다 (내용은 절대 저장하지 않음), 여러분이 보낸 짧은 action 라벨, agent_id, tool 및 meta 문자열은 공개 로그에 게시됩니다 — 식별자는 넣되, 비밀 항목은 절대 넣지 마세요. 그리고 어떤 제3자가 영원히 오프라인에서 검증할 수 있는 휴대용 영수증을 반환합니다.
receipt = canonical payload
+ Ed25519 signature (key: gblin.digital/receipts-log)
+ RFC 6962 inclusion proof (leaf → Merkle root)
+ C2SP signed checkpoint (origin, tree size, root)표준화는 제정된 **gblin-canonical-json/1**로 확정되었습니다: 객체 키는 UTF-16 코드 유닛으로 정렬, 공백 없음, 기본형은 JSON.stringify 시맨틱, 객체/배열은 재귀 처리. 테스트 벡터: 페이로드 {"b":1,"a":null} → 정규화 {"a":null,"b":1} → 리프 = SHA256(0x00 || canonical_bytes). 영수증 서명은 "gblin-receipt/v1\n" + canonical에 대한 Ed25519 서명입니다.
Seal (유료, 무제한):
POST https://gblin.digital/api/x402/seal— x402를 통해 USDC 0.01달러.Seal (데모, IP당 5회/일):
POST <worker>/v1/seal또는 24-7 MCP 도구receipts.seal(검증은receipts.verify로).읽기는 항상 평생 무료:
<worker>/v1/receipt/:index·/log·/log/checkpoint·/log/proof/:index· 사람이 읽는 페이지/receipt/:index.Base에 트리 루트를 매일 EAS로 앵커 (base.easscan.org에서 검증 가능, 스키마
0x9f433a96…, promiseId는keccak256("gblin-receipts-log")).오프라인 검증기, 의존성 없음:
verify-receipt.mjs—node verify-receipt.mjs receipt.json.
Seal은 일일 앵커된 서명 append-only 로그에서 존재와 시간을 증명합니다. 체크포인트는 현재 폐쇄자(운영자)의 서명으로 되어 있습니다 — 독립적인 증인(witness)의 추가 서명은 오픈 초대입니다. 우리는 이미 생각하는 모델의 투명성 로그(C2SP tlog-witness)에 공동 서명하고 있으며, 우리 로그를 공동 서명하는 증인은 모두 등재할 것입니다. 그때까지는 정직한 표현을 합니다: 운영자 서명, 체인에 앵커됨. 이는 규제 준수 인증서도 아니고 콘텐츠에 대한 승인도 아닙니다. Worker: <worker> = https://gblin-mcp.gblin-mcp-worker.workers.dev.
Coherence Proof — GBLIN이 약속을 지키는지 확인하기
GBLIN은 해시로 고정된 공개 약속을 사전 등록한 다음, 10분마다 이를 검사하는 automaton와 함께 실행하며, 종료된 각 날짜를 EAS 화상 기록으로 Base에 봉인합니다. 읽기는 평생 무료입니다. 유료 서비스는 자체적으로도 관찰 대상이 됩니다 — 인증자는 먼저 자신이 만든 도구를 스스로에게 적용합니다.
무료 보고서:
/coherence(JSON) 또는 호스팅 MCP 도구coherence.report.라이브 약속: P1 (유료 리스크 증명 엔드포인트의 가동 시간) 및 P2 (공개 에이전트 경제 카운터의 정직성, 당사 지갑 주소를 공개하고 제외함).
온체인: 각 닫힌 날은 전용 관찰자 지갑에 의해 Base에 EAS attestation으로 봉인됩니다. GBLIN은 발견 가능한 ERC-8004 에이전트 (#59286)입니다.
AI 에이전트 발견 — gblin-init
저장소에 AGENTS.md 재무 정책을 놓으십시오 그러면 모든 최신 AI 코딩 assistant (Claude Code, Cursor, Windsurf, GitHub Copilot, Codex)가 여러분의 코드베이스를 작업할 때 자동으로 GBLIN을 발견합니다:
npx -p @gblin-protocol/mcp-server gblin-init이 명령은 멱등적이며 안전한:
AGENTS.md이 없거나 없고 → 표준 템플릿인gblin.digital/AGENTS.template.md로부터 만듭니다.AGENTS.md이 존재하면 → 아래에 명확히 구분된 마커르로 GBLIN 블록을 추가합니다. 기존 내용은 절대 건드리지 않습니다.다시 실행할 경우 자동으로 IDLE (안정적인 HTML 마커로 로 감지됨).
--dry-run은 파일에 쓰지 않고 무엇을 할 것인지 인쇄합니다.--force블록을 최신 버전으로 새로고침합니다.
추가적으로 번들된 폴백 템플릿 덕분에 오프라인에서도 실행됩니다.
설치 후 힌트
패키지가 일반 종속성으로 설치될 때(npm i @gblin-protocol/mcp-server), 위의 명령을 제안하는 짧은 알림이 한 번만 출력됩니다. 포스트인스톨 중에는 어떤 파일도 생성되지 않습니다 — 보안을 우호적으로 하고 Socket-compliant 그것을. GBLIN_SKIP_HINT=1을 설정하면 이 알림을 끌 수 있습니다.
신뢰 및 트러스트
GBLIN V6는 48시간 Timelock Controller가 통치합니다 — 모든 관리 작업(파라미터 변경, 오라클 업데이트, 소유권 이전)은 체인에서, 실행되기 전에 172,800초 를 기다리는 것이라 강제됩니다. 에이전트와 소위 통합자가 BaseScan에서 직접 확인할 수 있습니다.
컴포넌트 | 주소 | 역할 |
GBLIN V6 토큰 | 인덱스 제어 (mainnet) | |
Timelock Controller | 48시간 변경 불가 지연, 14일 유예 기간 | |
소유권 이전 트랜잭션 | 블록 46160의량개 전에 이동됨 |
컨트랙트 수준에서 강제되는 속성:
MIN_DELAY는 불변입니다 (updateDelay를 재정의가 영구적으로 되돌아감)PROPOSER_ROLE과CANCELLER_ROLE은 엄격히 분리됩니다 (생성자에서 경=생략 불가)EXECUTOR_ROLE은 열려 있습니다 (address(0)) — 임의의 사람은 성숙한 작업을 집행할 수 있고, 검열 저항시간 잠금 지연은 자기 관리 즉, 모든 역할/구성 변경 그 자체가 반드시 48시간 지연을 통과해야 합니다
get_governance_state 툴이 그래서 owner_is_timelock: true 그리고 검증 가능한 `min_delay_seconds: 나타냅니다. AI 에이전트는 이러한 플래그를 사용해서 신뢰에 민감한 활동을 차단할 수 있습니다.
왜 이렇게 만들어졌는가
AI 에이전트는 오늘 유동 자본을 USDC로 보유합니다. USDC는 그대로 방치되어 있습니다: 수익률 0, 인플레이션 노출 전체.
GBLIN는 Base의 온체인 인덱스(45% cbBTC + 45% WETH + 10% USDC) 그리고 드로우다운이 상승하면서 리스크 자산 노출을 적응적으로 줄이는 알고리즘 Crash Shield (V6, 약 ~15%의 적응형 임계값)를 결합합니다. GBLIN은 상한 초과 드라이다운 이 특징 된 관리형 암호 자산 노출, 즉 여유 자본을 BTC/ETH 리스크에 대해 더 안정적으로 보유하는 방법 — 따라서 USDC의 대체가 아닙니다 (크래쉬일 때 가치가 하락할 수 있습니다). 에이전트는 Just-In-Time GBLIN→USDC 환원으로 x402 인보이스를 즉시 결제합니다.
이 서버는 표준 MCP 프로토콜로 어떤 LLM 에이전트에도 이 기능을 개시합니다.
시작하기
Claude Desktop
claude_desktop_config.json에 추가하세요 (Windows에서는 %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"gblin": {
"command": "npx",
"args": ["-y", "@gblin-protocol/mcp-server"]
}
}
}Claude Desktop을 다시 시작하면 도구 선택기에 13개의 GBLIN 도구가 나타납니다.
Windsurf / Cursor
~/.codeium/windsurf/mcp_config.json (Windsurf) 또는 해당하는 Cursor MCP 구성에 추가하세요:
{
"mcpServers": {
"gblin": {
"command": "npx",
"args": ["-y", "@gblin-protocol/mcp-server"],
"env": {
"GBLIN_RPC_URL": "https://base-rpc.publicnode.com"
}
}
}
}IDE 설정에서 MCP 서버를 새로고침하거나(또는 재시작)하세요. 그러면 도구를 인라인으로 호출할 수 있습니다.
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 / 커스텀
stdio를 통해 MCP를 지원하는 모든 프레임워크가 작동합니다:
npx @gblin-protocol/mcp-server또한 Cline, Continue.dev, 그리고 MCP 클라이언트 사양을 구현하는 모든 에이전트를 지원합니다.
13가지 도구 (npm stdio 패키지)
무료 도구 (결제 불필요)
도구 | 용도 |
| USD 기준 NAV + 바스켓 구성 + Crash Shield 상태 |
| 동적 슬리피지 버퍼로 매수/매도 미리보기 |
| x402의 마법: GBLIN→USDC 2단계 calldata 생성 (무료) |
| USDC 수익을 GBLIN 트레저리로 전환 (MEV-safe) (무료) |
| 소유자 == 48시간 타임락 + 대기 중인 자산 제안 + 최소 지연시간 확인 |
| 피어 에이전트 온보딩용 이식 가능한 스킬 시드 + 추천 코드 생성 |
| 피어의 리스크 증명 검증 (유효 기간이 있는 실사 증명): 무결성 + EIP-712 서명 + 신선도 + 실시간 드리프트 (무료) |
추가 무료 도구
도구 | 용도 |
| 여기서 시작하세요: BTC/ETH 리스크 국면 (안정/상승/크래시) + 심각도 + 리스크 자세, 가스 규정 무료, API 키 불필요 |
| 잔액 + 가스 + 운영 자금 여유 + 리밸런싱 조언 |
| GBLIN이 지불합니다: 리밸런싱 바운티가 있는지 확인해 보세요 (자본 불필요, 가스만 부담) |
리스크 증명 —
GET https://gblin.digital/api/x402/attestation에서 현재 BTC/ETH 위험 상황에 대한 10분 유효하고 검증 가능한 증명을 발행합니다 ($0.003 USDC, x402 방식). 이 증명을 실사 증명으로서 당신의 행동에 첨부하세요. 상대방은verify_risk_attestation으로 이 증명을 무료로 검증할 수 있습니다.
모든 도구는 구조화된 JSON을 반환합니다. 모든 가치는 온체인에서 산출됩니다 (NAV는 quoteSellGBLIN × Chainlink ETH/USD, 24시간 지연 보호 적용). 목업 데이터가 없습니다.
실시간 검증: 테스트 스위트 (npm test)는 Base 메인넷에서 도구 스위트를 실행하고 calldata 생성, 오라클 신선도, 슬리핀스 계산, 거버넌스 상태를 확인합니다. 최신 CI 실행을 참조하세요.
x402 마이크로페이먼트
모든 MCP 도구는 무료입니다. MCP 서버는 결코 요금을 청구하지 않습니다. 서버는 곧 검색·읽기 계층이며, 에이전트가 실제로 GBLIN을 사용할 때만 온체인 프로토콜 수수료(민트 시 대비 0.05%)로 수익을 창출합니다.
검증 가능한 호출당 지불(pay-per-call)은 HTTP 엔드포인트로 제공되며, Base 메인넷의 USDC (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913)로 모두 처리되고 가스리스 EIP-3009 transferWithAuthorization을 통해 Coinbase CDP Facilitator로 정산됩니다:
엔드포인트 | 가격 | 제공 내용 |
| $0.001 | NAV, 바스켓 비중, Crash Shield 상태 |
| $0.001 | 동적 슬리핏지 기반 안전 스왑 미리보기 |
| $0.001 | 소유자 = 48시간 타임락, 대기 중인 작업 |
| $0.002 | 지갑 잔고, 가스 자금 여유, 리밸런싱 조언 |
| $0.002 | 서명되지 않은 calldata: USDC → GBLIN |
| $0.005 | 서명되지 않은 calldata: GBLIN → USDC 정시 처리 |
| $0.003 | 서명된 EIP-IIOUS 리스크 증명 (10분 실사 증명) |
기계 판독 가능한 매니페스트: https://gblin.digital/.well-known/x402. 권장 클라이언트: @x402/fetch 또는 @x402/axios (x402 v2 — 402 챌린지, 서명, 재시도를 자동 처리합니다). MCP 도구 verify_risk_attestation는 어떤 증명이든 오프라인에서 무료로 검증합니다.
지급 수취인: 0x0edA5d314F4f5Dcb7A094953Fa9311a45172dd1B (GBLIN 수수료 지갑).
아키텍처 결정사항
결정적 2단계 JIT (V6)
GBLIN 로그라운 V6는 기존 sellGBLINForToken 단일 트랜잭션 경로를 제거했습니다. 이제 JIT 흐름은 결정적인 2단계 트랜잭션으로 구성됩니다: (1) sellGBLINForEth(amount, minEthOut)가 GBLIN을 소각하고 오라클 참조 기반 minOutput으로 바스켓을 ETH로 상환합니다; (2) Uniswap V3에서 자체 minOut을 가진 단일 WETH→USDC 스왑을 실행합니다. MCP는 두 단계를 즉시 브로드캐스트할 수 있는 calldata (steps[])로 반환합니다.
MCP는 다음 환경에서 동일하게 작동하는 PMU calldata를 반환합니다:
EOA 지갑 (Privy, MetaMask, 원시 개인 키)
ERC-4337 스마트 계정 (Safe, Coinbase 스마트 계정)
EIP-7702 위임된 EOA (Pectra 이상)
동적 슬리피지
슬리피지 허용 오차는 온체인 리스크 상태에 비례하여 조정됩니다:
조건 | 버퍼 |
정상 시장 | 2.5% |
Crash Shield 활성화 (바스켓 자산 1개 이상 감소) | 4.0% |
버퍼는 계약의 내부 maxInternalSlippage (200 bps) 위에 추가되어 오라클 드리프트와 Uniswap 유동성 변동을 흡수합니다.
MEV 보호
invest_usdc_to_gblin은 절대 minOut = 0을 전달하지 않습니다. minWethOut과 minGblinOut은 모두 온체인 시세와 동적 슬리피지 버퍼를 기반으로 계산됩니다. 이를 통해 단순한 buy-with-token 도구가 취약한 샌드위치 공격 표면을 제거합니다.
쿨다운 강제
계약은 각 매수 후 120초 판매 잠금을 강제합니다. JIT 도구는 lastDepositTime과 온체인 block.timestamp (절대 Date.now() 사용 금지)를 읽고, 스왑이 실행 반려될 경우 남은 정확한 시간을 포함한 명확한 CooldownActive 오류를 반환합니다.
구성
서버는 GBLIN_RPC_URL을 환경 변수에서 읽습니다. 환경 변수가 없으면 https://base-rpc.publicnode.com (무료, 키 불필요, 관대한 제한)로 대체됩니다.
프로덕션 규모 (100명 이상 동시 에이전트)에서는 전용 공급자를 사용하세요:
export GBLIN_RPC_URL="https://base-mainnet.g.alchemy.com/v2/YOUR_KEY"
npx @gblin-protocol/mcp-server전체 목록은 .env.example 참조하세요.
개발
git clone https://github.com/gblinproject/gblin-treasury-risk-regime
cd GBLIN-MCP
npm install
npm run build
npm test # live read-only smoke test against Base mainnet
npm start # run the compiled server프로젝트 구조:
src/
config.ts # network constants, addresses, slippage params
abi.ts # GBLIN_V6 + Chainlink + ERC-20 ABIs
client.ts # viem PublicClient + on-chain timestamp helper
helpers.ts # NAV, basket state, slippage, cooldown, reverse quote
keeper.ts # keeper bounty finder (incentivizedRebalance math)
tools.ts # the 10 treasury tool implementations + zod schemas (receipts.ts adds 3)
index.ts # MCP stdio server entry
scripts/
test.ts # live smoke test보안 참고 사항
서버는 읽기 전용입니다. 키를 보관하거나, 서명하거나, 브로드캐스팅하지 않습니다.
모든 견해 인용는 온체인 호출과 Chainlink 오라클 기반으로 생성됩니다. 오래되었거나 음수인 오라클 응답 도구가
OracleStale/OracleDead로 중단됩니다.에이전트의 지갑이 항상 유일한 서명자입니다. 도구가 반환하는 calldata는 일반 ABI 인코딩된 바이트입니다. 같은 환경에서 전파 전에 검토하세요.
텔레메트리, 분석, RPC 외 원격 의존성이 없습니다.
로드맵
v0.2: Uniswap V3 QuoterV2 통합으로 슬리피지 정밀도 1% 미만 구현
v0.3: Permit2 지원 (x402 재투자 시 approve 단계 생략)
v0.4: 멀티 에이전트 호스팅 환경용 Streamable HTTP 전송
v1.0: 감사된 전체 흐름 + 원격 전용 배포 가이드
관련 링크
프로토콜 사이트: https://gblin.digital
에이전트 문서: https://gblin.digital/agents
이슈: https://github.com/gblinproject/gblin-treasury-risk-regime/issues
MIT © 2026 GBLIN Protocol
에이전트 간 스킬 전파 (v0.1.9+)
GBLIN MCP에는 한 AI 에이전트가 다른 에이전트에게 트레저리 관리 기능을 전달할 수 있는 고유한 도구 — share_skill_with_peer — 가 포함되어 있습니다.
멀티 에이전트 환경(위임 작업, x402 지불 흐름, 공유 작업공간)에서 에이전트 A는 에이전트 A가 에이전트 B를 만나면, share_skill_with_peer 호출을 통해 이식 가능한 JSON "스킬 시드"를 생성할 수 있습니다. 시드에는 다음이 포함됩니다:
GBLIN MCP 서버 설치 지침
Basescan 상의 참고 거래를 포함한 실제 거래 예시
에이전트 A의 추천인 코드 (자신의 지갑에서 파생)
GBLIN에 대한 자연어 완전한 설명
에이전트 B는 이 시드를 사용해 몇 초 내에 서버를 설치할 수 있습니다. 이 시점부터 에이전트 B가 실행하는 모든 GBLIN 거래에는 ERC-8021 Builder Code (bc_gbdo32j0)를 통해 추천인 코드가 calldata에 포함됩니다. 프로토콜 수수료(거래 금액의 0.05%)는 에이전트 A의 지갑으로 분산 지급됩니다 — 기존 수수료 분배에서 발생하며, 새 비용이 부과되지 않습니다.
이로 인해 에이전트 생태계 전반에 트레저리 스킬의 바이럴 전파 메커니즘이 만들어지고, 모범적인 트레저리 관리를 전파하는 에이전트에게 경제적 보상을 제공합니다.
추가 인프라가 필요하지 않습니다. 메커니즘은 전적으로 온체인에서 기존 Builder Code 시스템을 통해 실행됩니다.
Keeper Bounty 시스템 (v0.1.11+)
GBLIN은 에이전트에게 요금을 부과하는 대신 에이전트에게 지불하는 몇 안 되는 프로토콜 중 하나입니다.
트레저리 풀이 목표 비중에서 벗어나면, **find_keeper_bounty**로 수익을 낼 수 있는 리밸런스가 존재하는지 확인할 수 있습니다. 존재하면 이 도구는 즉시 전송할 준비가 된 calldata를 반환합니다. 에이전트는 거래를 브로드캐스트하고 프로의 안정자금으로 0.0001 ETH를 받습니다 — 스왑에는 계약의 기본 자본이 사용되며, 호출자는 가스(~$0.01, Base)만 지불합니다.
// Example response when a bounty is available
{
"bountyAvailable": true,
"direction": "WETH->asset",
"estimatedRewardEth": "0.0001",
"target": "0x36C81d7E1966310F305eA637e761Cf77F90852f0",
"calldata": "0x...",
"value": "0",
"note": "Send this calldata to earn the reward. The swap uses the contract's own funds."
}지속적인 수입을 위해서는 find_keeper_bounty를 주기적으로(예: 5분에서 15분 간격) 폴링하세요. 실제 키퍼 순에서 gblin.digital/keepers에 실시간 리더보드가 있습니다.
탐색 및 신뢰
GBLIN은 AI 에이전트와 프로토콜을 위해 기계 판독 가능한 검색 파일을 제공합니다:
Coinbase x402 Bazaar: GBLIN의 엔드포인트 11개(웹앱 7개 + Sentinel 4개)는 CDP Bazaar 검색 계층에 포함되어 있습니다. 에이전트는 의미 검색 (
GET https://api.cdp.coinbase.com/platform/v2/x402/discovery/search?query=treasury+risk) 또는 판매자별 서치 (GET /real...)로 검색할 수 있습니다.x402 매니페스트: https://gblin.digital/.well-known/x402 — 유료 endpoint의 목록과 가격, 체인 id, 통화 단위 포함
LLM 검색: https://gblin.digital/api/x402/llms.txt — 인간이 읽을 수 있는 프로토콜 요약 (무료, 유료 벽 없음)
Base MCP 플러그인: base/skills에서 PR #56 — 검토 중 공식 통합
이 저장소의 MCP 서버는 모델 컨텍스트 프로토콜을 통해 동일한 x402 HTTP 작업을 제공하며 자동 에이전트와 직접 통합할 수 있습니다 (Claude Desktop, Cursor, Continue.dev, ElizaOS 등).
GBLIN 응용 프로그램 — x402 데이터 에이전트 예시
GBLIN Sentin은 x402 마이크로페이를 통해 on-chain 데이터를 판매하는 자율 AI 에이전토용 오픈소스 참조 구현이며, Base에서 완전한 x402 생산자 패턴을 보여줍니다.
엔드포인트 | 가격 | 데이터 |
| $0.002 USDC | Chainlink 리스크 신호: ETH, BTC, USDC에 대한 |
| $0.002 USDC | GBLIN 트레저리 상태, 바스켓 가중치, 키퍼 가용성 |
| $0.002 USDC | MCP 도구 참조가 포함된 실시간 키퍼 바운티 확인 |
| $0.03 USDC | 플래그십: 실행 가능한 추천(invest/hold/reduce/defer) + 신뢰도 + 권장 배분 |
디스커버리:
이 MCP 서버를 사용하는 모든 에이전트는 투자 전에 base-risk-pulse를 호출하여 현재 시장 리스크 신호에 따라 트레저리 작업을 게이트할 수 있습니다.
GBLIN Aureus — 자율 거래 에이전트(트랙 레코드 엔진)
Aureus는 Base에서 암호화폐, 주식, 지수, 금속을 거래하는 자율 촉매·로테이션 에이전트로, 그 결과에 대해 거짓말을 할 수 없습니다: 모든 투자 논리는 keccak 해시가 적용되어 에이전트가 실행되기 전에 온체인에 커밋되고, 종료 시점에 공개됩니다. 이기든 지든 그 기록은 영구적이며 독립적으로 검증할 수 있습니다. 좋은 것만 골라낸 스크린샷은 없습니다.
상태: DRY-RUN 검증. Aureus는 실제 자금 없이 라이브 마켓 데이터로 전체 루프를 돌립니다. 공개 게이트를 통과한 경우에만 실운용 자본으로 전환되는데, 그 기준은 완결 트레이드 30~50건, 수익 팩터 > 1.3, 최대 낙폭 < 10%, 강제 청산 0건입니다. 라이브 대시보드는 모든 지표를 실시간으로 공개합니다: gblin.digital/aureus.
내부 동작(자본을 살아있게 하는 지루한 부분):
리스크 엔진: 변동성 목표 기반 포지션 크기 조정, 항상 청산 거리 이내에 배치되는 스톱, 자동 낙폭 정지가 포함된 시가평가(Mark-to-Market) 자본, 10초 주기 스톱 감시
다중 거래소 펀딩 캐리: Binance/Bybit/OKX 중앙값을 통해 확인된 델타 중립 펀딩 캐리, 지속성 게이팅 적용(단발성 체결이 아닌 변화 양식만 허용)
다중 타임프레임 정렬: 빠른 평균회귀 신호는 일봉 추세(금융에서 가장 잘 문서화된 엣지인 시계열 모멘텀)를 기준으로 게이트
미시구조 관찰: 테이커 흐름(CVD)과 호가창 불균형이 테이프가 반대하는 진입을 거부
섀도 북: 필요한 전략은 모두 실시간 데이터에서 논문 트레이딩을 지속하고, 자본 배분은 항상 통계적 증명을 따르며 의견을 따르지 않음
뉴스 센티널: 6개 독립 제공자로 구성된 다중 LLM 합의 앙상블이 검증된 헤드라인을 리스크 신호로 변환 — 모든 진입은 수학이며, LLM은 측정 조절만 맡는다.
Aureus는 향후 GBLIN 트레저리 사용자로 계획되어 있다: 잘 쓰지 않는 유휴 자본은 이 MCP 서버를 통하여 GBLIN에 보관되고, 증거금이 필요한 때 JIT 스왑으로 USDC로 전환되는 방식입니다. 즉 에이전트가 프로토콜 자신의 요리를 직접 먹는 셈입니다.
라이브 대시보드: https://gblin.digital/aureus
관련 저장소
스마트 컨트랙트 & 프로토콜: https://github.com/gblinproject/GBLIN-Protocol
웹 앱 & x402 엔드포인트: https://github.com/gblinproject/GBLIN_WEBAPP
ElizaOS 플러그인: https://github.com/gblinproject/GBLIN_PLUGIN
GBLIN Sentinel (x402 데이터 에이전트): https://github.com/gblinproject/gblin-sentinel
GBLIN Aureus (자율 거래 에이전트): https://gblin.digital/aureus — dry-run 검증, 온체인 커밋-리빌(commit-reveal) 트랙 레코드
Available Tools
21 toolsanalyze_treasury_healthARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| _payment | No | Base64-encoded x402 PaymentProof JSON. Omit on first call to receive the 402 payment manifest. | |
| daily_burn_usd | No | Optional. Average daily spend in USD (e.g. 1.5). | |
| wallet_address | Yes | Agent's 0x address. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ratios | No | |
| wallet | Yes | |
| balances | Yes | |
| cooldown | Yes | Whether the redemption cooldown is active and for how long. |
| gas_health | Yes | Whether the wallet holds enough ETH for the next transactions. |
| recommendation | Yes | hold, rebalance_to_gblin or rebalance_to_usdc, with the reason. |
TDQS
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.
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.
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.
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.
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.
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_stateARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| best | No | The row with the largest gap, or null. |
| lens | No | |
| note | No | |
| rows | Yes | One entry per basket asset: side, gap from target and amount a bidder can fill. |
| curve | No | |
| vault | Yes | |
| howToBid | No | |
| openedAt | No | When the auction opened, or null when closed. |
| premiumBps | Yes | Current premium over the oracle price, in basis points; negative is a discount. |
| auctionOpen | Yes | |
| navReliable | Yes | |
| worstGapEth | No | |
| totalValueEth | No |
TDQS
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.
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.
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.
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.
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.
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_stateARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | No | Optional 0x-prefixed 32-byte hex id of a specific timelock operation to inspect. |
Output Schema
| Name | Required | Description |
|---|---|---|
| lens | No | |
| owner | Yes | |
| vault | Yes | |
| timelock | Yes | Address and minimum delay of the timelock, read on chain. |
| verification | No | |
| fee_recipient | No | |
| trust_summary | No | |
| pending_handover | No | A pending ownership transfer, or null. |
| owner_is_timelock | Yes | |
| owner_is_renounced | Yes | |
| pending_timelock_operation | No | A scheduled timelock operation affecting ownership, or null. |
TDQS
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.
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.
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.
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.
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.
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_regimeARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| _payment | No | Base64-encoded x402 PaymentProof JSON. Omit on first call to receive the 402 payment manifest. |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | No | |
| assets | No | |
| regime | Yes | |
| source | No | |
| verify | No | |
| risk_posture | No | |
| severity_pct | Yes | |
| shield_active | Yes | |
| defensive_cash_pct | Yes |
TDQS
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.
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.
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.
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.
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.
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_receiptARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Zero-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
| Name | Required | Description |
|---|---|---|
| leaf | No | |
| note | No | |
| root | No | |
| index | Yes | |
| anchor | No | |
| format | No | |
| verify | No | How to verify this receipt. |
| payload | Yes | The sealed record as signed. |
| signature | Yes | |
| tree_size | No | |
| checkpoint | No | |
| human_page | No | |
| provenance | No | |
| verifier_key | No | |
| verify_offline | No | |
| inclusion_proof | Yes | Sibling hashes from the leaf to the root (RFC 6962). |
| canonical_sha256 | No | |
| canonicalization | No | The canonical JSON form the leaf is hashed from. |
TDQS
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.
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.
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.
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.
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.
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_statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | The transaction hash. |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| hash | Yes | |
| note | No | |
| block | No | |
| revert | No | |
| status | Yes | |
| fee_eth | No | |
| explorer | No | |
| gas_used | No | |
| gas_limit | No | |
| confirmations | No | |
| balance_changes | No |
TDQS
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.
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.
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.
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.
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.
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_stateARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | No | |
| basket | Yes | Assets in the basket with base and dynamic weights. |
| nav_usd | Yes | Net asset value of one GBLIN share in USD. |
| auction_open | Yes | True while a rebalancing auction is running. |
| nav_reliable | Yes | False when a price feed is stale or a basket asset cannot be read; do not trade on the NAV then. |
| eth_price_usd | Yes | ETH price in USD from the oracle. |
| slippage_reason | No | |
| crash_shield_active | Yes | True when the crash shield has cut the weight of a falling asset. |
| slippage_buffer_pct | No | |
| management_fee_bps_per_year | Yes | Management fee in basis points per year, read from the contract. |
TDQS
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.
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.
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.
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.
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.
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_paidARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| flow | Yes | |
| note | No | |
| price | Yes | |
| receipt | No | |
| endpoint | Yes | |
| read_free | No | |
| body_schema | No | |
| verify_offline | No |
TDQS
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.
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.
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.
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.
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.
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_gblinARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| usdc_amount | Yes | USDC amount to invest (decimal string). | |
| wallet_address | Yes | User's wallet address that holds the USDC and signs the transactions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| steps | Yes | Transactions to send in order. |
| action | Yes | Always sequential_txs: send the steps one after the other. |
| expected | Yes | Shares expected and the minimum applied. |
| gas_hint | Yes | Gas limit to set on the Zap step. |
| security | No | |
| gas_hint_note | No |
TDQS
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.
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.
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.
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.
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.
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_treasuryARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days of spend to keep liquid (default 7, max 365). | |
| trial_usdc | No | Trial amount to simulate beside the surplus (default 100). | |
| reserve_usd | No | USD to keep liquid regardless of the burn rate; the larger of the two rules wins. | |
| daily_burn_usd | No | Average daily spend in USD. Operating cash = daily_burn_usd × days. | |
| wallet_address | Yes | Agent's 0x address. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next | Yes | The tools to call after a human confirms. |
| as_of | No | Block and time the reads were taken at. |
| notes | No | |
| trial | Yes | The same simulation for the trial amount. |
| inputs | No | The inputs as applied, with the defaults filled in. |
| market | Yes | NAV, ETH price, risk regime and crash shield status. |
| wallet | Yes | |
| surplus | Yes | USDC above the operating cash. |
| blockers | Yes | Reasons parking is not appropriate right now, if any. |
| simulation | Yes | Mint simulation for the surplus: shares, fees, exit value today, round-trip cost; or nothing_to_park. |
| wallet_state | Yes | USDC, GBLIN and ETH balances, gas health, redemption cooldown. |
| operating_cash | Yes | USDC to keep liquid: max(reserve_usd, daily_burn_usd × days), with the runway in days. |
| park_candidate | Yes | True when no blocker applies. Not a recommendation. |
TDQS
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.
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.
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.
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.
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.
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_actionARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| row | No | bid only: the basket row to bid on. Default: the row with the largest gap. | |
| action | Yes | The operation to prepare. | |
| amount | No | Decimal amount. Unit depends on the action (see the description). Not used by bid. | |
| wallet_address | Yes | The wallet that will sign and receive. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next | No | |
| steps | Yes | Transactions to send in order. |
| action | Yes | |
| wallet | No | |
| expected | No | What the operation should deliver, with the minimums applied. |
| warnings | No |
TDQS
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.
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.
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.
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.
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.
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_paymentARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | The recipient's address. | |
| from | Yes | The payer's address: the wallet that will sign. | |
| relay | No | true 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'. | |
| method | No | 'receive' (default) can be submitted only by the recipient; 'transfer' by anyone. | |
| amount_usd | No | Amount in USD, converted at the live NAV. Give this or amount_gblin. | |
| amount_gblin | No | Amount in GBLIN shares, e.g. '0.25'. Give this or amount_usd. | |
| valid_for_seconds | No | How long the authorization stays valid. Default 600, maximum 86400. |
Output Schema
| Name | Required | Description |
|---|---|---|
| relay | No | With relay: true, the fee authorization to sign and where to send both. |
| amount | No | |
| digest | Yes | The EIP-712 digest of typed_data. |
| method | Yes | |
| submit | No | |
| warnings | No | |
| next_steps | No | |
| typed_data | Yes | The EIP-712 message to sign with eth_signTypedData_v4. |
| x402_payload | Yes | The x402 exact-scheme payment payload, with the signature left to fill. |
| authorization | Yes | from, to, value, validAfter, validBefore, nonce. |
| payer_balance | No | |
| x402_accepts_for_sellers | No |
TDQS
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.
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.
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.
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.
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.
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_stepsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | The wallet that will send the steps. | |
| steps | Yes | The steps, in order: target and calldata (or their send_calls spellings, to and data), value in wei (optional), gas (optional). |
Output Schema
| Name | Required | Description |
|---|---|---|
| from | No | |
| note | No | |
| block | No | The block the simulation ran on. |
| steps | Yes | Per step: success, gas used, whether the given limit is enough, recommended limit, revert reason. |
| would_succeed | Yes | True only if every step succeeds in the simulation. |
| balance_changes | Yes | Net token and ETH movements for the wallet. |
| first_failing_step | No |
TDQS
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.
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.
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.
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.
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.
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_swapARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| amount_in | Yes | Positive decimal. ETH for buy, GBLIN for sell. | |
| direction | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| fees | No | |
| direction | Yes | |
| next_step | Yes | |
| amount_in_eth | No | Buy only. |
| cooldown_note | No | |
| amount_in_gblin | No | Sell only. |
| slippage_reason | No | |
| expected_eth_out | No | Sell only. |
| safe_min_eth_out | No | Sell only. Pass as minEthOut. |
| expected_gblin_out | No | Buy only. |
| safe_min_gblin_out | No | Buy only. Pass as minOut. |
| slippage_buffer_bps | Yes | |
| will_revert_with_zero_tolerance | No |
TDQS
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.
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.
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.
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.
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.
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_paymentADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fee | Yes | { authorization, signature } of the relay fee, from prepare_gblin_payment's relay block. | |
| payment | Yes | { authorization, signature } of the payment, method 'transfer'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| fee | No | |
| note | No | |
| block | No | |
| relay | Yes | The relay that carried the payment. |
| status | Yes | |
| payment | No | |
| explorer | No | |
| transaction | Yes | The transaction hash. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| meta | No | Optional public metadata (published). | |
| tool | No | Optional name of the tool/model that produced the action (published). | |
| action | Yes | Short public label of the action, e.g. 'trade.executed' or 'report.generated'. Published in the log — never put secrets here. | |
| agent_id | No | Optional public identifier of the agent (published in the log). | |
| input_hash | Yes | sha256 of the action input, as 64 lowercase hex chars. Hash locally; never send content. | |
| output_hash | No | Optional sha256 of the action output (64 lowercase hex chars). |
TDQS
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.
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.
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.
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.
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.
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.
swap_gblin_to_usdc_jitARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| usdc_needed | Yes | USDC amount, decimal string. | |
| wallet_address | Yes | Agent's 0x address (for cooldown check). |
Output Schema
| Name | Required | Description |
|---|---|---|
| steps | Yes | Transactions to send in order. |
| action | Yes | Always sequential_txs: send the steps one after the other. |
| params | No | |
| expected | Yes | Shares spent, ETH and USDC expected, and the minimums applied. |
| gas_hint | Yes | Gas limit to set on the Zap step. |
| compatibility | No | |
| gas_hint_note | No |
TDQS
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.
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.
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.
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.
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.
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_authorizationARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | Which method the signature was produced for. Default 'receive'. | |
| signature | Yes | The signature produced by the payer's wallet, 0x-prefixed. | |
| authorization | Yes | The authorization object: from, to, value, validAfter, validBefore, nonce. |
Output Schema
| Name | Required | Description |
|---|---|---|
| amount | No | |
| checks | Yes | |
| digest | No | |
| method | Yes | |
| source | No | |
| submit | No | Calldata and who may submit it, or null when it would not settle. |
| failures | Yes | Reasons it would not settle; empty when it would. |
| would_settle | Yes | True only if the token would accept this authorization now. |
TDQS
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.
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.
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.
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.
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.
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_attestationARead-onlyIdempotentInspect
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| attestation | Yes | The 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_attestor | No | Optional 0x address to check the signature against. Defaults to the GBLIN attestor address baked into this MCP build (GBLIN_ATTESTOR_ADDRESS env). |
Output Schema
| Name | Required | Description |
|---|---|---|
| live | No | |
| valid | Yes | True only if every check passed. |
| checks | Yes | Each check by name, with its result. |
| source | No | |
| attested | No | |
| guidance | No | |
| recomputed_attestation_id | No |
TDQS
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.
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.
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.
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.
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.
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.
21 tool updates
v1.1.5- Changed
analyze_treasury_health2 fields changed- added
Input schema / properties / _paymentAdded value: +{ + "description": "Base64-encoded x402 PaymentProof JSON. Omit on first call to receive the 402 payment manifest.", + "type": "string" +} - changed
Output 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" +}
- Added
get_auction_state - Changed
get_governance_state2 fields changed- added
Input schema / requiredAdded value: +[] - changed
Output 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" +}
- Added
get_market_risk_regime - Added
get_nav_history - Added
get_receipt - Added
get_transaction_status - Changed
get_treasury_state2 fields changed- added
Input schema / requiredAdded value: +[] - changed
Output 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" +}
- Added
how_to_seal_paid - Changed
invest_usdc_to_gblin3 fields changed- added
Input schema / properties / wallet_addressAdded value: +{ + "description": "User's wallet address that holds the USDC and signs the transactions.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "usdc_amount" -]New value: +[ + "usdc_amount", + "wallet_address" +] - changed
Output 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" +}
- Added
plan_treasury - Added
prepare_action - Added
prepare_gblin_payment - Added
preview_steps - Changed
quote_safe_swap1 field changed- changed
Output 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" +}
- Added
relay_gblin_payment - Added
seal_action_demo - Added
share_skill_with_peer - Changed
swap_gblin_to_usdc_jit1 field changed- changed
Output 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" +}
- Added
verify_gblin_authorization - Added
verify_risk_attestation
6 tool updates
v1.1.2- First observed
analyze_treasury_health - First observed
get_governance_state - First observed
get_treasury_state - First observed
invest_usdc_to_gblin - First observed
quote_safe_swap - First observed
swap_gblin_to_usdc_jit
TDQS
Scored across 21 tools
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.
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.
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.
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
Related MCP Connectors
Pay-per-call AI infra for agents: DeFi market data, LLM inference, STT/TTS. x402 v2, USDC on Base.
Pay-per-call crypto market intelligence for AI agents. USDC on Base via x402.
USDC/x402 agent marketplace. Verified Base mainnet pilot, testnet and public enrollment.
DeFi pool yield+security intelligence & token/contract risk scanner. USDC on Base via x402.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn 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.512 npm7MIT
- AlicenseAqualityBmaintenanceManage Uniswap and Aerodrome liquidity positions with leverage, automated rebalancing, and yield optimization on Base and Unichain.35199 npm5AGPL 3.0
- AlicenseAqualityCmaintenanceEight 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.8109 npmMIT
- AlicenseNot gradedqualityFmaintenanceOnchain agent-to-agent commerce protocol using x402 and ERC-8004. Enables AI agents to buy/sell services, manage vendor catalogs, and process payments on Base.MIT