Skip to main content
Glama
bbsyaya

mcp-server-TLD

by bbsyaya

mcp-server-TLD

License: MIT TRON Network TypeScript MCP JustLend npm

A Model Context Protocol (MCP) server that enables AI agents to interact with the JustLend DAO lending protocol on TRON. Supply assets, borrow against collateral, manage positions, and analyze DeFi portfolios — all through a unified AI interface.

Beyond JustLend-specific operations, the server also exposes a full set of general-purpose TRON chain utilities — balance queries, block/transaction data, token metadata, TRX transfers, smart contract reads/writes, staking (Stake 2.0), multicall, and more.

Overview

JustLend DAO is the largest lending protocol on TRON, based on the Compound V2 architecture. This MCP server wraps the full protocol functionality into tools and guided prompts that AI agents (Claude Desktop, Cursor, etc.) can use.

šŸ“Œ Current Version: JustLend V1

This MCP server currently supports JustLend V1 protocol. All contract addresses, ABIs, calculation functions, and lending operations are for V1.

Key Capabilities

JustLend Protocol

  • Market Data: Real-time APYs, TVL, utilization rates, prices for all markets

    • Direct contract queries for on-chain accuracy

    • API-based queries for comprehensive market data (more stable, includes historical data and mining rewards)

  • Account Data: Full position analysis with API support

    • Contract-based: Health factor, collateral, borrow positions

    • API-based: Enhanced data with mining rewards, historical trends, risk metrics

  • Mining Rewards: Advanced mining reward calculation (based on justlend-app logic)

    • Detailed breakdown by market and reward token (USDD, TRX, WBTC, etc.)

    • Separates new period vs. last period rewards

    • USD value calculation with live token prices

    • Mining status tracking (ongoing/paused/ended) and period end times

  • Supply: Deposit TRX or TRC20 tokens to earn interest (mint jTokens)

  • Borrow: Borrow assets against your collateral with health factor monitoring

  • Repay: Repay outstanding borrows with full or partial amounts

  • Withdraw: Redeem jTokens back to underlying assets

  • Collateral Management: Enter/exit markets, manage what counts as collateral

  • Portfolio Analysis: AI-guided risk assessment, health factor monitoring, optimization

  • Token Approvals: Manage TRC20 approvals for jToken contracts

  • JST Voting / Governance: View proposals, cast votes, deposit/withdraw JST for voting power, reclaim votes

General TRON Chain

  • Balances: TRX balance (with Sun/TRX conversion), TRC20/TRC1155 token balances

  • Blocks: Latest block, block by number/hash, block number, chain ID

  • Transactions: Fetch transaction details, receipts, wait for confirmation

  • Contracts: Read/write any contract, fetch on-chain ABI, multicall (v2 & v3), deploy, estimate energy

  • Token Metadata: TRC20 info (name/symbol/decimals/supply), TRC721 metadata, TRC1155 URI

  • Transfers: Send TRX, transfer TRC20 tokens, approve spenders

  • Staking (Stake 2.0): Freeze/unfreeze TRX for BANDWIDTH or ENERGY, withdraw expired unfreeze

  • Address Utilities: Hex ↔ Base58 conversion, address validation, resolution

  • Wallet: Sign messages, sign typed data (EIP-712), HD wallet derivation from mnemonic

Related MCP server: TRON Energy/Bandwidth MCP Server

Supported Markets

jToken

Underlying

Description

jTRX

TRX

Native TRON token

jUSDT

USDT

Tether USD

jUSDC

USDC

USD Coin

jBTC

BTC

Bitcoin (wrapped)

jETH

ETH

Ethereum (wrapped)

jSUN

SUN

SUN token

jWIN

WIN

WINkLink

jTUSD

TUSD

TrueUSD

Prerequisites

Installation

git clone https://github.com/your-org/mcp-server-TLD.git
cd mcp-server-TLD
npm install

Configuration

Environment Variables

SECURITY: Never save private keys in config files. Use environment variables.

# Required for write operations (supply, borrow, transfer, stake, etc.)
export TRON_PRIVATE_KEY="your_private_key_hex"
# OR use a mnemonic phrase
export TRON_MNEMONIC="word1 word2 ... word12"
export TRON_ACCOUNT_INDEX="0"   # Optional HD wallet account index, default: 0

# Strongly recommended — avoids TronGrid 429 rate limiting on mainnet
export TRONGRID_API_KEY="your_trongrid_api_key"

Client Configuration

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "justlend": {
      "command": "npx",
      "args": ["tsx", "/path/to/mcp-server-TLD/src/index.ts"],
      "env": {
        "TRONGRID_API_KEY": "your_key"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "justlend": {
      "command": "npx",
      "args": ["tsx", "/path/to/mcp-server-TLD/src/index.ts"]
    }
  }
}

Usage

# Stdio mode (for MCP clients)
npm start

# HTTP/SSE mode (for remote clients)
npm run start:http

# Development with auto-reload
npm run dev

API Reference

Tools (34 total)

Wallet & Network

Tool

Description

Write?

get_wallet_address

Show configured wallet address

No

get_supported_networks

List available networks

No

get_supported_markets

List all jToken markets with addresses

No

Market Data

Tool

Description

Write?

get_market_data

Detailed data for one market (APY, TVL, rates) - Contract query

No

get_all_markets

Overview of all markets - Contract query

No

get_protocol_summary

Comptroller config & protocol parameters - Contract query

No

get_markets_from_api

[API] All market data with mining rewards & trends

No

get_dashboard_from_api

[API] Protocol-level statistics (TVL, users, etc.)

No

get_jtoken_details_from_api

[API] Detailed jToken info with interest rate model

No

Account & Balances

Tool

Description

Write?

get_account_summary

Full position: supplies, borrows, health factor - Contract query

No

get_account_data_from_api

[API] Enhanced account data with mining rewards & trends

No

check_allowance

Check TRC20 approval for jToken

No

get_trx_balance

TRX balance

No

get_token_balance

TRC20 token balance

No

Lending Operations

Tool

Description

Write?

supply

Deposit assets to earn interest

Yes

withdraw

Withdraw supplied assets

Yes

withdraw_all

Withdraw all from a market

Yes

borrow

Borrow against collateral

Yes

repay

Repay outstanding borrows

Yes

enter_market

Enable market as collateral

Yes

exit_market

Disable market as collateral

Yes

approve_underlying

Approve TRC20 for jToken

Yes

claim_rewards

Claim mining rewards

Yes

JST Voting / Governance

Tool

Description

Write?

get_proposal_list

List all governance proposals with status and vote counts

No

get_user_vote_status

User's voting history: voted proposals, withdrawable votes

No

get_vote_info

Voting power: JST balance, available votes, locked votes

No

get_locked_votes

Votes locked in a specific proposal

No

check_jst_allowance_for_voting

Check JST approval for WJST voting contract

No

approve_jst_for_voting

Approve JST for the WJST voting contract

Yes

deposit_jst_for_votes

Deposit JST to get voting power (1 JST = 1 Vote)

Yes

withdraw_votes_to_jst

Withdraw WJST back to JST

Yes

cast_vote

Cast for/against votes on a proposal

Yes

withdraw_votes_from_proposal

Reclaim votes from completed proposals

Yes

Prompts (AI-Guided Workflows)

Prompt

Description

supply_assets

Step-by-step supply with balance checks and approval

borrow_assets

Safe borrowing with risk assessment and health factor checks

repay_borrow

Guided repayment with verification

analyze_portfolio

Comprehensive portfolio analysis with risk scoring

compare_markets

Find best supply/borrow opportunities

Architecture

mcp-server-TLD/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ core/
│   │   ā”œā”€ā”€ chains.ts          # Network configs + JustLend contract addresses
│   │   ā”œā”€ā”€ abis.ts            # jToken, Comptroller, Oracle, TRC20 ABIs
│   │   ā”œā”€ā”€ tools.ts           # MCP tool registrations
│   │   ā”œā”€ā”€ prompts.ts         # AI-guided workflow prompts
│   │   ā”œā”€ā”€ resources.ts       # Static protocol info resource
│   │   └── services/
│   │       ā”œā”€ā”€ # — JustLend-specific —
│   │       ā”œā”€ā”€ clients.ts     # TronWeb client factory (cached)
│   │       ā”œā”€ā”€ wallet.ts      # Key/mnemonic management, signMessage, signTypedData
│   │       ā”œā”€ā”€ markets.ts     # APY, TVL, utilization, prices
│   │       ā”œā”€ā”€ account.ts     # User positions, liquidity, allowances
│   │       ā”œā”€ā”€ lending.ts     # supply, borrow, repay, withdraw, collateral
│   │       ā”œā”€ā”€ voting.ts      # JST governance: proposals, cast vote, deposit/withdraw WJST
│   │       ā”œā”€ā”€ # — General TRON chain —
│   │       ā”œā”€ā”€ address.ts     # Hex ↔ Base58 conversion, validation
│   │       ā”œā”€ā”€ balance.ts     # TRX balance (rich), TRC20/TRC1155 balances
│   │       ā”œā”€ā”€ blocks.ts      # Block queries, block number, chain ID
│   │       ā”œā”€ā”€ transactions.ts# getTransaction, getTransactionInfo, waitForTransaction
│   │       ā”œā”€ā”€ transfer.ts    # transferTRX, transferTRC20, approveTRC20
│   │       ā”œā”€ā”€ tokens.ts      # TRC20/TRC721/TRC1155 metadata
│   │       ā”œā”€ā”€ contracts.ts   # readContract, writeContract, multicall, deploy, estimateEnergy
│   │       ā”œā”€ā”€ multicall-abi.ts # Multicall2 & Multicall3 ABIs
│   │       ā”œā”€ā”€ staking.ts     # Stake 2.0: freeze, unfreeze, withdrawExpireUnfreeze
│   │       └── utils.ts       # toSun/fromSun, formatJson, hexToNumber, isAddress, …
│   ā”œā”€ā”€ server/
│   │   ā”œā”€ā”€ server.ts          # MCP server init
│   │   └── http-server.ts     # Express HTTP/SSE transport
│   └── index.ts               # Stdio entry point
ā”œā”€ā”€ bin/cli.js                 # CLI entry for npx
└── tests/
    └── core/
        ā”œā”€ā”€ chains.test.ts
        └── services/
            ā”œā”€ā”€ services.test.ts    # Client cache, legacy balance tests
            ā”œā”€ā”€ address.test.ts     # Pure: address format conversion (16 tests)
            ā”œā”€ā”€ utils.test.ts       # Pure: unit conversions, formatters (26 tests)
            ā”œā”€ā”€ balance.test.ts     # Integration: TRX & TRC20 balances
            ā”œā”€ā”€ blocks.test.ts      # Integration: block queries
            ā”œā”€ā”€ contracts.test.ts   # Mixed: pure ABI helpers + integration reads
            ā”œā”€ā”€ tokens.test.ts      # Integration: TRC20 token metadata
            ā”œā”€ā”€ transactions.test.ts# Integration: transaction fetch
            ā”œā”€ā”€ transfer.test.ts    # Write: skipped by default (TEST_TRANSFER=1)
            ā”œā”€ā”€ staking.test.ts     # Write: skipped by default (TEST_STAKING=1)
            └── wallet.test.ts      # Unit: skipped without TRON_PRIVATE_KEY

Testing

# Run all tests (pure/unit tests always pass; integration tests need network)
npm test

# Run individual test files (recommended to avoid TronGrid rate limits)
npx vitest run tests/core/services/utils.test.ts
npx vitest run tests/core/services/address.test.ts
npx vitest run tests/core/services/balance.test.ts
npx vitest run tests/core/services/blocks.test.ts
npx vitest run tests/core/services/contracts.test.ts
npx vitest run tests/core/services/transactions.test.ts
npx vitest run tests/core/services/tokens.test.ts

# Enable write/staking tests (uses real funds — use Nile testnet!)
TRON_PRIVATE_KEY=xxx TEST_TRANSFER=1 npx vitest run tests/core/services/transfer.test.ts
TRON_PRIVATE_KEY=xxx TEST_STAKING=1 npx vitest run tests/core/services/staking.test.ts

Rate limiting: Integration tests make real RPC calls to TronGrid. Without TRONGRID_API_KEY the free tier limits to a few requests per second. Run test files individually, or set TRONGRID_API_KEY to avoid 429 errors.

Security Considerations

  • Private keys are read from environment variables only, never exposed via MCP tools

  • Write operations are clearly marked with destructiveHint: true in MCP annotations

  • Health factor checks in prompts prevent dangerous borrowing

  • Always test on Nile testnet before mainnet operations

  • Be cautious with unlimited approvals (approve_underlying with max)

  • Never share your claude_desktop_config.json if it contains keys

Example Conversations

"What are the best supply rates on JustLend right now?" → AI calls get_all_markets, sorts by supplyAPY, presents ranking

"I want to supply 10,000 USDT to earn interest" → AI uses supply_assets prompt: checks balance → approves USDT → supplies → verifies

"Am I at risk of liquidation?" → AI calls get_account_summary, analyzes health factor, warns if < 1.5

"Borrow 500 USDT against my TRX collateral" → AI uses borrow_assets prompt: checks collateral → calculates new health factor → executes if safe

"What is the TRX balance of address TXxx...?" → AI calls the general-purpose TRX balance tool, returns balance in both TRX and Sun

"Freeze 100 TRX for ENERGY" → AI calls staking service to freeze via Stake 2.0, returns transaction hash

"Show me the latest governance proposals" → AI calls get_proposal_list, displays proposals sorted by ID with status and vote counts

"I want to vote for proposal #425 with 1000 JST" → AI checks get_vote_info → if no votes, suggests approve_jst_for_voting + deposit_jst_for_votes → then cast_vote

"Withdraw my votes from completed proposals" → AI calls get_user_vote_status to find withdrawable proposals → calls withdraw_votes_from_proposal for each

License

MIT

Available Tools

37 tools
approve_jst_for_votingA
Idempotent

Approve JST token for the WJST voting contract. Required before depositing JST to get voting power. Use amount='max' for unlimited approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoAmount to approve, or 'max' for unlimited. Default: max
networkNoNetwork. Default: mainnet

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate idempotent and non-destructive write operation. Description adds the 'amount=max' tip and clarifies the approval action, going beyond the annotations without contradiction.

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

Conciseness5/5

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

Two concise sentences, front-loaded with action and purpose, zero wasted words.

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

Completeness5/5

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

Simple tool with no output schema. Description covers purpose, prerequisite, and a usage tip, fully adequate for its complexity.

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

Parameters3/5

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

Schema covers both parameters at 100%. Description adds minor value by reinforcing the 'max' option for amount, but network parameter and details like format are not elaborated.

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

Purpose5/5

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

Description uses specific verb 'Approve' and resource 'JST token for the WJST voting contract', clearly distinguishing it from siblings like check_allowance and deposit_jst_for_votes.

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

Usage Guidelines4/5

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

States 'Required before depositing JST to get voting power', providing clear when-to-use context. Does not explicitly exclude other scenarios, but the prerequisite relationship is well conveyed.

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

approve_underlyingA
Idempotent

Approve the jToken contract to spend your underlying TRC20 tokens. Required before supply() or repay() for TRC20-backed markets (not needed for jTRX). Use amount='max' for unlimited approval. Typical cost: ~23,000 energy + ~265 bandwidth.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoAmount to approve, or 'max' for unlimited. Default: max
marketYesjToken symbol (e.g. 'jUSDT')
networkNoNetwork. Default: mainnet

TDQS

A4.5/5.0
Behavior5/5

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

Description adds significant behavioral context beyond annotations: it discloses typical cost (~23,000 energy + ~265 bandwidth) and the fact that the call is required before supply/repay. No contradiction with annotations: readOnlyHint=false, openWorldHint=true, idempotentHint=true, destructiveHint=false all align.

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

Conciseness5/5

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

Two sentences that concisely convey the purpose, prerequisites, and a usage hint. Every sentence adds value; no fluff.

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

Completeness5/5

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

For a simple approval tool with no output schema, the description covers what the tool does, when to use it, and includes practical details (cost, 'max' usage). It is complete.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all three parameters. The description adds only the note about amount='max' for unlimited approval, which is also in the schema description. The cost information is not parameter-specific. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the action: approve jToken contract to spend underlying TRC20 tokens. It specifies the context (required before supply/repay for TRC20-backed markets, not for jTRX), providing a specific verb and resource with necessary differentiation from siblings like approve_jst_for_voting.

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

Usage Guidelines4/5

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

Description explicitly states when to use (before supply/repay for TRC20-backed markets) and when not (not for jTRX). It lacks explicit mention of alternatives but the context is clear given sibling tools like supply and repay. The hint about using 'max' for unlimited approval adds usage guidance.

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

borrowA
Destructive

Borrow assets from a JustLend market against your collateral. You must have entered a market as collateral (enter_market) and have sufficient liquidity. Check your account_summary and health_factor before borrowing. Typical cost: ~100,000 energy + ~313 bandwidth.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount of underlying to borrow (e.g. '500')
marketYesjToken symbol (e.g. 'jUSDT', 'jTRX')
networkNoNetwork. Default: mainnet

TDQS

A4.4/5.0
Behavior5/5

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

The description adds behavioral context beyond annotations: it notes the typical cost (~100,000 energy + ~313 bandwidth) and the need to check health_factor, complementing destructiveHint=true and readOnlyHint=false.

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

Conciseness5/5

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

Three sentences front-load the main purpose, prerequisites, and cost information, with no wasted words or redundant phrasing.

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

Completeness4/5

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

The description covers the main aspects: what the tool does, prerequisites, and cost. Though it lacks details about return values, it is adequate for typical use given the schema covers parameters.

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

Parameters3/5

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

All parameters are described in the schema (100% coverage), so the description adds no additional semantic value beyond what the schema already provides.

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

Purpose5/5

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

The description states a specific verb ('Borrow assets') and resource ('from a JustLend market against your collateral'), clearly distinguishing it from sibling tools like supply, withdraw, or repay.

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

Usage Guidelines4/5

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

The description explicitly lists prerequisites: must have entered a market as collateral and sufficient liquidity, and advises checking account_summary and health_factor before borrowing. It does not explicitly mention when not to use or alternatives, but provides sufficient context for safe usage.

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

cast_voteA
Destructive

Cast a vote on a governance proposal. You must have available votes (deposit JST first if needed). Support: true = vote FOR, false = vote AGAINST. You can add more votes to a proposal you already voted on.

ParametersJSON Schema
NameRequiredDescriptionDefault
votesYesAmount of votes to cast (e.g. '1000')
networkNoNetwork. Default: mainnet
supportYestrue = vote FOR the proposal, false = vote AGAINST
proposalIdYesThe proposal ID to vote on

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true (state change). The description adds that you can add more votes to a previously voted proposal, implying non-idempotent behavior. It does not disclose error conditions (e.g., insufficient votes), permissions, or rate limits. The description adds moderate context beyond annotations.

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

Conciseness5/5

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

The description is very concise: three sentences that front-load the purpose. Every sentence provides essential information: what it does, prerequisites, parameter semantics, and repeatability. No wasted words.

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

Completeness4/5

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

Given no output schema and full schema coverage, the description covers the action, prerequisites, and parameter details. It mentions that you can add more votes, which is important. It doesn't specify return values or error handling, but for a simple vote action, it is fairly complete.

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

Parameters3/5

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

Schema descriptions cover 100% of parameters. The description adds that votes can be added to an existing vote, which provides extra behavioral context for the 'votes' parameter. However, it largely duplicates the schema for 'support' and doesn't add new detail for 'proposalId' or 'network'. Minimal additional value over schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Cast a vote on a governance proposal.' It specifies the meaning of the 'support' parameter (FOR/AGAINST) and notes the prerequisite of having available votes. This distinguishes it from sibling tools like 'get_user_vote_status' or 'deposit_jst_for_votes'.

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

Usage Guidelines3/5

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

The description includes important usage context: you must have available votes (deposit JST first if needed) and you can add more votes to a proposal already voted on. However, it does not explicitly state when to use this tool versus siblings like 'withdraw_votes_from_proposal' or 'check_jst_allowance_for_voting', nor does it provide alternatives or exclusions.

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

check_allowanceA
Read-onlyIdempotent

Check if the underlying TRC20 token has been approved for a jToken market. Must be approved before supply() or repay() for TRC20 markets. Not needed for jTRX.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketYesjToken symbol (e.g. 'jUSDT')
addressNoAddress to check. Default: configured wallet
networkNoNetwork. Default: mainnet

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds that it's a read-only check and idempotent (implied by 'check'), but does not need to repeat annotation content. With rich annotations, the description adds moderate value by specifying TRC20 context.

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

Conciseness5/5

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

Two sentences with no wasted words. Front-loaded with the core purpose, then provides usage context. Every sentence earns its place.

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

Completeness4/5

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

Given the annotations and schema richness, the description is complete enough. It explains the prerequisite context (supply/repay) and edge case (jTRX not needed). No output schema, so return values are not expected.

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

Parameters3/5

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

Schema coverage is 100% and each parameter has a description. The description adds minimal extra detail (e.g., default address and network behavior), so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool checks if a TRC20 token is approved for a jToken market, using the verb 'check' and specifying the resource. It distinguishes from siblings by noting it is needed before supply/repay and not required for jTRX.

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

Usage Guidelines4/5

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

The description says when to use (before supply/repay for TRC20 markets) and when not (not for jTRX). It does not explicitly name alternative tools, but the context of usage is clear.

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

check_jst_allowance_for_votingA
Read-onlyIdempotent

Check if JST has been approved for the WJST voting contract. Must be approved before depositing JST to get votes.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressNoTRON address. Default: configured wallet
networkNoNetwork. Default: mainnet

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. Description adds context about the voting contract and prerequisite, but behavioral traits are well-covered by annotations.

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

Conciseness5/5

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

Two sentences, no unnecessary words. Purpose is front-loaded and every word adds value.

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

Completeness4/5

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

For a simple read-only check with rich annotations and no output schema, the description is sufficient. Provides necessary context about the voting contract prerequisite.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are fully documented. Description adds no additional parameter meaning beyond what schema provides.

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

Purpose5/5

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

Description clearly states the tool checks if JST is approved for the WJST voting contract, with a specific verb and resource. It distinguishes from sibling tools like approve_jst_for_voting and deposit_jst_for_votes.

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

Usage Guidelines4/5

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

Explicitly states it must be used before depositing JST, providing clear when-to-use guidance. Does not explicitly mention when not to use, but context is sufficient.

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

claim_rewardsA

Claim accrued JustLend mining rewards for the configured wallet. Typical cost: ~60,000 energy + ~330 bandwidth.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork. Default: mainnet

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate mutation (readOnlyHint=false). The description adds valuable behavioral insight by disclosing the typical resource cost (energy and bandwidth), which is beyond what the annotations provide and aids in decision-making.

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

Conciseness5/5

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

The description is extremely concise with two sentences: one stating the purpose and one providing cost details. Every word is necessary, and the information is front-loaded.

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

Completeness4/5

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

For a simple tool with one optional parameter and no output schema, the description covers the core purpose and cost. It lacks mention of the effect (transfer to wallet) but this is implied. Overall, it is fairly complete given the tool's simplicity.

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

Parameters3/5

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

The only parameter 'network' is fully described in the schema (100% coverage) with a default value. The tool description does not add additional meaning about the parameter, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'claim' and the resource 'accrued JustLend mining rewards', making the action specific and distinct from sibling tools like get_mining_rewards which only read rewards.

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

Usage Guidelines4/5

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

The description implies usage for claiming rewards and provides cost information (~60,000 energy + ~330 bandwidth) to help the agent decide if it can proceed. However, it does not explicitly mention when not to use or suggest checking rewards first with get_mining_rewards.

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

deposit_jst_for_votesA
Destructive

Deposit JST into the WJST contract to get voting power. Requires prior approval of JST for the WJST contract (use approve_jst_for_voting first). 1 JST = 1 Vote. Deposited JST can be withdrawn back after voting.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount of JST to deposit (e.g. '1000')
networkNoNetwork. Default: mainnet

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false and destructiveHint=true, consistent with the description's 'Deposit' mutation. The description adds behavioral context: it requires prior approval, describes the voting power rate (1 JST = 1 Vote), and mentions reversibility (withdrawable). This goes beyond annotations by specifying the prerequisite and outcome.

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

Conciseness5/5

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

Three sentences cover purpose, prerequisite, and key details (rate and reversibility). No redundant or irrelevant information. Every sentence adds value, making it highly concise.

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

Completeness4/5

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

The description covers the core functionality, prerequisites, and outcome. It lacks details on error behaviors (e.g., insufficient balance) or return values, but given the simplicity of the tool (2 parameters, no output schema), the content is largely complete. Missing minor context prevents a 5.

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

Parameters3/5

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

The input schema already provides descriptions for both parameters ('amount' and 'network') with 100% coverage. The description does not add any further parameter details beyond what the schema gives, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action: 'Deposit JST into the WJST contract to get voting power.' It identifies the specific resource (WJST contract) and the purpose (voting power), distinguishing it from sibling tools like approve_jst_for_voting or withdraw_votes_to_jst.

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

Usage Guidelines4/5

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

The description explicitly instructs to use approve_jst_for_voting first as a prerequisite, guiding when to call this tool. It also notes that deposited JST can be withdrawn later, providing context on the lifecycle. However, it does not explicitly state when not to use this tool (e.g., if insufficient allowance).

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

enter_marketA
Idempotent

Enable a jToken market as collateral. Required before borrowing against supplied assets. Once entered, your supply in this market counts towards your borrowing capacity. Typical cost: ~80,000 energy + ~300 bandwidth.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketYesjToken symbol (e.g. 'jUSDT', 'jTRX')
networkNoNetwork. Default: mainnet

TDQS

A4.5/5.0
Behavior5/5

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

The description adds valuable behavioral context beyond annotations: it states the cost (energy + bandwidth), which is critical for the agent to estimate resource usage. Annotations already indicate idempotent and non-destructive, and the description aligns with them.

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

Conciseness5/5

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

Three concise sentences cover the purpose, prerequisite, effect, and cost with no fluff. Information is front-loaded and every sentence earns its place.

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

Completeness5/5

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

Given no output schema and only two parameters, the description fully informs the agent about action, prerequisite, effect, and cost. No gaps remain for using this tool correctly.

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

Parameters3/5

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

Schema coverage is 100% and both parameters are documented clearly. The description does not add extra parameter-level details beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool enables a jToken market as collateral and explains its role as a prerequisite for borrowing. It distinguishes from siblings like exit_market by emphasizing the borrowing context.

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

Usage Guidelines4/5

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

The description explicitly says it is 'required before borrowing' and explains the effect on borrowing capacity, providing clear usage guidance. It does not explicitly mention alternatives, but the sibling tool list includes exit_market which is the inverse.

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

estimate_lending_energyA
Read-onlyIdempotent

Estimate energy, bandwidth, and TRX cost for any JustLend operation BEFORE executing it. Covers ALL operations: supply, withdraw, withdraw_all, borrow, repay, approve, enter_market, exit_market, claim_rewards. Tries on-chain simulation first; falls back to historical typical values if simulation fails. Returns per-step breakdown (e.g. approve + mint for supply), total energy, total bandwidth, and estimated TRX cost. For supply/repay: automatically checks current allowance — if sufficient, the approve step is skipped. For approve: supports custom spender address (not just jToken). Use this tool whenever the user asks about gas/energy/cost for any lending operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoAmount in underlying token units (e.g. '100'). Default: '1'. Not needed for enter_market, exit_market, approve, withdraw_all, claim_rewards.
marketYesjToken symbol (e.g. 'jUSDT', 'jTRX', 'jUSDD'). Required for all operations except claim_rewards.
addressNoTRON address for simulation. Default: configured wallet
networkNoNetwork. Default: mainnet
spenderNoCustom spender address for approve operation. Default: jToken contract address. Only used when operation is 'approve'.
operationYesThe operation to estimate resources for

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds crucial behavioral details: it tries on-chain simulation first, falls back to historical values, provides a per-step breakdown, and automatically checks allowance for supply/repay. This goes well beyond the annotations.

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

Conciseness4/5

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

The description is relatively long but well-structured and front-loaded with the core purpose. Every sentence adds value, though a few details (e.g., 'Covers ALL operations...') could be implied. Overall, it balances completeness with readability.

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

Completeness5/5

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

Given no output schema, the description fully explains what the tool returns (per-step breakdown, total energy, bandwidth, TRX cost) and covers edge cases like fallback and allowance checks. It leaves no significant gaps for an agent to make mistakes.

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

Parameters5/5

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

All 6 parameters are documented in the schema, but the description adds extra context: default values for amount ('1'), address (configured wallet), network (mainnet), and notes that spender is only used for 'approve'. It clarifies which operations don't need amount, adding significant value.

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

Purpose5/5

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

The description clearly states the tool estimates energy, bandwidth, and TRX cost for any JustLend operation before execution. It lists all 9 operations (supply, withdraw, etc.) and explicitly contrasts with execution tools by saying 'BEFORE executing it', distinguishing from sibling tools like supply or borrow.

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

Usage Guidelines4/5

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

The description explicitly says to use this tool 'whenever the user asks about gas/energy/cost for any lending operation'. It provides context on fallback behavior and automatic allowance checks for supply/repay. It does not explicitly list when not to use, but the broad coverage and clear purpose make it unambiguous.

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

exit_marketA
Destructive

Disable a jToken market as collateral. Will fail if doing so would make your account undercollateralized. Check account_summary first to ensure safety. Typical cost: ~50,000 energy + ~280 bandwidth.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketYesjToken symbol (e.g. 'jUSDT')
networkNoNetwork. Default: mainnet

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations (destructiveHint=true), the description adds valuable behavioral details: it fails if undercollateralized, and provides typical energy/cost estimates. This informs the agent of consequences and preconditions.

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

Conciseness5/5

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

Three sentences, each adding essential information: action, failure condition, safety tip, and cost. No redundant or wasted words.

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

Completeness5/5

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

For a write operation with safety implications, the description covers the core action, failure mode, precondition, and cost. No output schema is present, but return values are straightforward and need not be detailed.

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

Parameters3/5

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

Schema coverage is 100%, with both parameters already well-described in the schema. The description adds no additional meaning to the parameters, meeting the baseline expectation.

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

Purpose5/5

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

The description clearly states the tool disables a jToken market as collateral. It uses a specific verb ('disable') and identifies the resource ('jToken market as collateral'), distinguishing it from sibling tools like supply or borrow.

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

Usage Guidelines4/5

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

The description explicitly says it will fail if it would cause undercollateralization and advises to check account_summary first. This provides clear context for when to use the tool, though it does not name the alternative (enter_market) explicitly.

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

get_account_data_from_apiA
Read-onlyIdempotent

Get user account data from JustLend API. More stable and comprehensive than contract queries. Returns lending positions, balances, mining rewards, health factor, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressNoTRON address to check. Leave empty to use configured wallet.
networkNoNetwork. Default: mainnet

TDQS

A4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds context about stability and comprehensiveness, and lists return data types. This is adequate given the annotations, though no additional behavioral constraints are disclosed.

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

Conciseness5/5

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

The description is very concise: two sentences. The first sentence immediately states the core purpose, and the second adds comparative value and enumerates return data. No unnecessary words.

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

Completeness4/5

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

The tool has no output schema, so the description must cover what is returned. It lists key data points (lending positions, balances, mining rewards, health factor, etc.), providing sufficient context. A more exhaustive list would improve completeness, but 'etc.' is acceptable for a high-level description.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add extra meaning beyond what the schema already provides for the two parameters. The description's mention of 'Leave empty to use configured wallet' is already in the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get user account data from JustLend API.' It specifies the data source and lists returns. It distinguishes from contract queries, and the sibling context shows many get_* tools, but this one is focused on account data from the API.

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

Usage Guidelines4/5

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

The description includes a comparative statement: 'More stable and comprehensive than contract queries,' which guides when to use this tool over contract-based alternatives. However, it does not explicitly compare to other API-based siblings like get_account_summary, leaving some ambiguity.

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

get_account_summaryA
Read-onlyIdempotent

Get a comprehensive view of a user's JustLend positions: supply balances, borrow balances, collateral status, health factor, liquidation risk, and USD values for each market.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressNoTRON address (Base58 T... format) to check. Leave empty to use configured wallet.
networkNoNetwork. Default: mainnet

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, indicating safe read operations. The description adds value by specifying exactly what data is returned (supply balances, borrow balances, health factor, etc.), which supplements the annotations.

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

Conciseness5/5

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

The description is a single, clear sentence that front-loads the purpose and lists key data fields. Every word adds value, with no redundancy or wasted space.

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

Completeness4/5

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

The tool has 2 optional parameters and no output schema. The description lists the returned fields (supply balances, borrow balances, etc.) but could benefit from additional detail on output structure, formatting, or edge cases. However, it is sufficiently complete for a read-only query tool.

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

Parameters3/5

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

Schema coverage is 100% as both parameters (address, network) are fully documented in the input schema. The description does not add additional meaning or constraints beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states 'Get a comprehensive view of a user's JustLend positions' and lists specific data fields (supply balances, borrow balances, etc.). It distinguishes from sibling tools like get_market_data (specific market) or get_protocol_summary (protocol-level).

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

Usage Guidelines3/5

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

The description implies use for a full account overview but does not explicitly state when to use this tool versus alternatives like get_market_data or get_all_markets. No when-not-to-use or alternative guidance is provided.

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

get_all_marketsA
Read-onlyIdempotent

Get overview data for ALL JustLend markets including supply APY, borrow APY, mining rewards APY, underlying staking yield, total supply APY, and TVL. Mining APY is calculated from on-chain supply mining programs (USDD/TRX dual mining, WBTC mining, etc.). totalSupplyAPY = base supply APY + underlying staking APY + mining APY.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork. Default: mainnet

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value by explaining how mining APY is calculated and the formula for totalSupplyAPY, providing context beyond the structured annotations.

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

Conciseness4/5

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

Three sentences, front-loaded with purpose, no redundant words. Could be slightly more structured but is appropriately concise.

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

Completeness4/5

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

Given no output schema, the description adequately explains the data points included (APYs, TVL) and the mining APY calculation. It does not mention pagination or limits, but for an overview of all markets this is likely sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not elaborate on the 'network' parameter but does not conflict with it; no added value beyond schema.

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

Purpose5/5

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

The description uses a specific verb ('Get') and resource ('overview data for ALL JustLend markets'), listing key fields (supply APY, borrow APY, etc.). This clearly distinguishes it from sibling tools like get_market_data (single market) or get_dashboard_from_api.

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

Usage Guidelines3/5

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

The description strongly implies use when market-wide overview is needed via 'ALL', but lacks explicit when-to-use or when-not-to-use guidance compared to alternatives like get_supported_markets or get_market_data.

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

get_dashboard_from_apiA
Read-onlyIdempotent

Get JustLend protocol dashboard from API. Returns protocol-level statistics: total supply, total borrow, TVL, number of suppliers/borrowers, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork. Default: mainnet

TDQS

A3.8/5.0
Behavior3/5

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

The description does not add behavioral information beyond annotations. Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description repeats that data is from an API but does not disclose additional traits like rate limits or caching behavior.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary action, and no wasted words. Every sentence adds necessary context.

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

Completeness4/5

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

Given the simple parameter set and annotations covering safety and idempotence, the description provides enough context to understand the return value scope. No output schema exists, but the description hints at the data returned. Could mention pagination or format, but overall sufficient.

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

Parameters3/5

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

The input schema has one optional parameter (network) with 100% coverage. The description does not add any meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description explicitly states it retrieves the JustLend protocol dashboard from an API and lists specific protocol-level statistics it returns (total supply, total borrow, TVL, etc.). This clearly distinguishes it from sibling tools like get_wallet_address or get_market_data which serve different purposes.

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

Usage Guidelines3/5

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

The description implies use for fetching overall protocol metrics but does not explicitly state when to use this tool versus alternative tools like get_protocol_summary or get_all_markets. No guidance on context or exclusions is provided.

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

get_jtoken_details_from_apiB
Read-onlyIdempotent

Get detailed jToken information from API. Returns comprehensive market details including interest rate model, reserve info, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork. Default: mainnet
jtokenAddrYesjToken contract address

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already provide readOnlyHint, idempotentHint, and openWorldHint, which cover safety. The description adds context about return contents (interest rate model, reserve info), which is helpful but does not disclose any behavioral traits beyond what annotations already convey.

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

Conciseness5/5

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

The description is concise with two sentences, front-loaded with the main action, and provides examples of return content without waste. Every sentence adds value.

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

Completeness3/5

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

The description mentions return content (interest rate model, reserve info) but uses 'etc.' which introduces vagueness. Since there is no output schema, a more complete description of the return structure would be beneficial, but for a simple tool it is adequate.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description does not add any additional meaning beyond the schema descriptions, such as format details or defaults for the network parameter.

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

Purpose4/5

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

The description clearly states it gets detailed jToken information from an API and returns comprehensive market details. However, it does not explicitly distinguish itself from sibling tools like get_market_data, which may have similar functionality. The 'from API' hint provides some differentiation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as get_market_data or get_all_markets. The description implies usage when a jToken address is known, but lacks explicit context or exclusions.

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

get_locked_votesA
Read-onlyIdempotent

Get the number of votes a user has locked in a specific proposal.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressNoTRON address. Default: configured wallet
networkNoNetwork. Default: mainnet
proposalIdYesThe proposal ID to check

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds no behavioral traits beyond annotations (e.g., no mention of authentication, rate limits, or return format). Adequate but no extra value.

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

Conciseness5/5

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

One sentence, no redundant words, front-loaded with key action. Extremely concise and well-structured.

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

Completeness4/5

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

For a simple query tool with full annotation coverage and complete schema, the description is sufficient. However, it could mention default address behavior or return type. Still, it's largely complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents parameters. The description adds no additional meaning beyond what's already in the schema. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the exact action ('get'), the resource ('number of votes'), and the scope ('a user has locked in a specific proposal'). It distinguishes from siblings by making the proposal-specificity obvious.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like get_user_vote_status or get_vote_info. No when-not-to-use or context provided.

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

get_market_dataA
Read-onlyIdempotent

Get detailed market data for a specific JustLend market: supply/borrow APY, TVL, utilization, collateral factor, price, and status. Use jToken symbol like 'jUSDT' or 'jTRX'.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketYesjToken symbol (e.g. 'jUSDT', 'jTRX') or jToken address
networkNoNetwork. Default: mainnet

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds what data is returned but does not disclose additional behaviors like error handling or rate limits.

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

Conciseness5/5

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

Two concise sentences: first states purpose and output, second provides usage guidance. No unnecessary words.

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

Completeness4/5

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

The description covers the key data fields and parameterization method. For a read-only tool with no output schema, it provides sufficient context for the agent to use correctly.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. The description reinforces the parameter usage with examples, adding marginal value beyond the schema.

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

Purpose5/5

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

The description clearly states 'Get detailed market data for a specific JustLend market' and lists the specific fields (APY, TVL, etc.), distinguishing it from sibling tools like get_all_markets and get_supported_markets.

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

Usage Guidelines3/5

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

The description provides an example of usage: 'Use jToken symbol like 'jUSDT' or 'jTRX'', but does not explicitly state when to use this tool versus alternatives like get_all_markets or get_markets_from_api.

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

get_markets_from_apiA
Read-onlyIdempotent

Get all market data from JustLend API. More stable than contract queries. Returns comprehensive market data including APY, TVL, utilization, prices, mining rewards, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork. Default: mainnet

TDQS

A4.4/5.0
Behavior5/5

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

Discloses stability advantage and lists specific return fields (APY, TVL, etc.), adding value beyond annotations (readOnlyHint, idempotentHint). No contradictions with annotations.

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

Conciseness5/5

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

Two concise sentences, no wasted words. First sentence states purpose, second adds context and return details.

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

Completeness4/5

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

Covers return data adequately for a simple read tool with one optional parameter. Lacks mention of potential errors or limits, but annotations cover safety.

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

Parameters3/5

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

Schema coverage is 100% and already describes the network parameter. The tool description adds no extra parameter information, so baseline score is appropriate.

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

Purpose5/5

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

Clearly states 'Get all market data from JustLend API' with specific verb and resource. Distinguishes from siblings like get_market_data or get_all_markets by emphasizing bulk data from a stable API source.

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

Usage Guidelines4/5

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

Provides a clear usage hint: 'More stable than contract queries,' indicating when to prefer this tool. Could be improved by explicitly stating when not to use it or listing alternatives, but the guidance is helpful.

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

get_mining_rewardsA
Read-onlyIdempotent

Get mining rewards for supply markets (USDD, WBTC, etc.). Returns unclaimed rewards, mining APY, and reward breakdown from API.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressNoTRON address. Leave empty to use configured wallet.
networkNoNetwork. Default: mainnet

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds that the tool returns specific reward details from an API, enhancing transparency without contradictory information.

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

Conciseness5/5

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

Single sentence that is front-loaded with the purpose, no wasted words. Every part earns its place.

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

Completeness4/5

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

The tool is simple with 2 optional parameters and no output schema. The description covers return values (unclaimed rewards, APY, breakdown) but lacks response format details. Adequate for a read-only query with annotations.

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

Parameters3/5

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

Schema coverage is 100% with both parameters described. The description does not add further parameter semantics beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'mining rewards', specifies the scope (supply markets like USDD, WBTC), and lists return contents (unclaimed rewards, mining APY, reward breakdown). This distinguishes it from sibling claim_rewards.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like claim_rewards or get_market_data. The purpose is clear, but there is no when-not-to-use or mention of context.

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

get_proposal_listA
Read-onlyIdempotent

Get the list of JustLend DAO governance proposals. Returns proposals with their status (Active, Passed, Defeated, etc.), vote counts, and details. Sorted by newest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax number of proposals to return. Default: 10. Use 0 for all.
networkNoNetwork. Default: mainnet

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description's mention of returning status and details adds some context but is not extensive. It does not cover potential rate limits, authorization requirements, or behavior for empty results.

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

Conciseness5/5

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

Two concise sentences that front-load the purpose and include key output details (status, votes, sorting). Every sentence adds value with no redundancy.

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

Completeness5/5

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

Given the lack of an output schema, the description adequately explains the return values (status, vote counts, details, sorted). It covers defaults for limit and network. Suitable for a read-only list tool.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds minimal value. It mentions defaults (e.g., limit default 10) which are already in the schema. The description does not provide additional meaning beyond the schema.

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

Purpose4/5

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

The description clearly states the tool returns a list of governance proposals with status, vote counts, and details, sorted by newest first. It uses a specific verb ('Get') and resource ('proposal list'), distinguishing it from sibling tools like get_vote_info which focus on individual votes.

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

Usage Guidelines3/5

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

The description implies usage for browsing proposals but provides no explicit guidance on when to use this tool versus alternatives (e.g., for filtered views or specific proposal details). No exclusions or conditions are stated.

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

get_protocol_summaryA
Read-onlyIdempotent

Get JustLend protocol-level info: Comptroller config, close factor, liquidation incentive, total markets.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork. Default: mainnet

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by specifying the exact data returned (Comptroller config, close factor, etc.) but does not disclose any additional behavioral traits such as authentication requirements, rate limits, or scope of data (e.g., whether it covers all networks or just the specified one). Given the annotations are strong, the description is adequate but not exceptional.

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

Conciseness5/5

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

The description is a single sentence that front-loads the action ('Get JustLend protocol-level info') and lists key contents. Every word is functional with no redundancy or filler.

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

Completeness4/5

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

Given the simplicity of the tool (one optional parameter, no output schema, comprehensive annotations), the description is complete enough. It clarifies the scope (protocol-level vs. market-level) and specifies the fields returned. Minor improvement could include noting that results are for a given network, but the schema already addresses that.

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

Parameters3/5

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

The input schema has one parameter (network) with a description ('Network. Default: mainnet'), providing 100% schema coverage. The tool description does not add any additional meaning beyond that. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves JustLend protocol-level information including specific fields (Comptroller config, close factor, liquidation incentive, total markets). It uses a specific verb ('Get') and identifies the resource ('protocol-level info'), distinguishing it from sibling tools like get_market_data which focus on individual markets.

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

Usage Guidelines3/5

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

The description implies this tool is for protocol-level summary data via the phrase 'protocol-level info', but it does not explicitly state when to use it versus alternatives like get_market_data or get_all_markets. No when-not or exclusion criteria are provided. Usage is inferred but not directly guided.

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

get_supported_marketsA
Read-onlyIdempotent

List all available JustLend lending markets (jTokens) with their addresses and underlying assets.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork (mainnet, nile). Default: mainnet

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, which is reinforced by the description's wording 'List'. The description adds that it returns addresses and underlying assets, which is helpful. No contradictions. However, no mention of network filtering behavior or response format.

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

Conciseness5/5

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

Single sentence of 14 words, directly describing the tool's purpose. No fluff or redundant information. Front-loaded with the key action 'List all available JustLend lending markets'.

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

Completeness3/5

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

Given the simplicity of the tool (1 optional param, no output schema), the description is adequate but lacks context about how it differs from similar sibling tools like get_all_markets or get_markets_from_api. Could be more complete by noting this is the canonical way to list supported markets.

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

Parameters3/5

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

Schema coverage is 100% for the single optional parameter 'network', which is already described in the schema. The description does not add any additional meaning beyond the schema's definition. Baseline score of 3 is appropriate.

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

Purpose5/5

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

Clearly states the tool lists all available lending markets (jTokens) and specifies that it includes addresses and underlying assets. This is a specific verb+resource combination that distinguishes it from similar tools like get_all_markets or get_market_data.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives. There are multiple sibling tools for retrieving markets (e.g., get_all_markets, get_markets_from_api), but the description does not explain why an agent should choose this one. No usage context or constraints provided.

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

get_supported_networksA
Read-onlyIdempotent

List all supported TRON networks for JustLend.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

Description is consistent with annotations (readOnlyHint, idempotentHint) but adds no extra behavioral details beyond what annotations already provide.

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

Conciseness5/5

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

Single sentence, no fluff, front-loaded and efficient.

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

Completeness4/5

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

Sufficiently complete for a simple 0-parameter tool with clear annotations; no output schema but listing networks is straightforward.

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

Parameters4/5

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

No parameters in schema, so baseline 4 applies; description does not need to add parameter info.

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

Purpose5/5

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

Description clearly states the verb 'List' and the resource 'supported TRON networks for JustLend', distinguishing it from sibling tools like get_supported_markets.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives; lacks explicit when-to-use or when-not-to-use context.

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

get_token_balanceA
Read-onlyIdempotent

Get TRC20 token balance for an address. You can pass either a token symbol (e.g. 'USDD', 'USDT', 'ETH') or a contract address. When using a symbol, it resolves to the correct contract address from JustLend markets automatically. IMPORTANT: Always prefer using token symbols over raw addresses to avoid using outdated/wrong contract addresses. For example, use 'USDD' instead of a raw address — the old USDD (TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn) is deprecated. The returned balance is already formatted in human-readable token units (decimals already applied). Do NOT divide the balance by decimals again.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoToken symbol (e.g. 'USDD', 'USDT', 'TRX', 'ETH', 'BTC', 'SUN', 'JST', 'WIN', 'BTT', 'NFT', 'TUSD', 'WBTC', 'USD1', 'wstUSDT', 'sTRX'). Preferred over tokenAddress.
addressNoTRON address. Default: configured wallet
networkNoNetwork. Default: mainnet
tokenAddressNoTRC20 token contract address. Use 'token' parameter with a symbol name instead when possible.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond readOnlyHint annotations, description reveals that balances are already formatted (decimals applied), avoiding common error of re-dividing. Also warns about deprecated addresses and automatic symbol resolution.

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

Conciseness5/5

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

Single, well-structured paragraph with clear purpose, usage guidance, and important warnings. Every sentence adds value without redundancy.

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

Completeness5/5

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

For a read-only balance tool with 4 optional parameters and no output schema, description covers token selection, address usage, return format, and deprecation warnings comprehensively.

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

Parameters4/5

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

Schema covers descriptions (100%), but description adds practical guidance: prefer token over tokenAddress, automatic resolution, deprecation warning for USDD. Adds value over raw schema.

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

Purpose5/5

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

The description clearly states it gets TRC20 token balances for an address, specifying token symbol or contract address. It distinguishes itself from sibling tools like get_trx_balance (for TRX) by focusing on TRC20 tokens.

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

Usage Guidelines4/5

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

Explicitly advises to prefer token symbols over raw addresses to avoid deprecated contracts, e.g., USDD. Implicitly distinguishes from related tools (get_trx_balance, check_allowance) but no explicit when-not-to-use.

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

get_trx_balanceB
Read-onlyIdempotent

Get TRX balance for an address.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressNoTRON address. Default: configured wallet
networkNoNetwork. Default: mainnet

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds no further behavioral context (e.g., on validity of addresses, network behavior).

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

Conciseness4/5

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

Remarkably concise at one sentence. Slightly more context could be added, but for a simple tool this is mostly effective.

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

Completeness2/5

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

No output schema exists, yet the description omits the return value type. Also does not mention default address behavior, which is in the schema but not captured here.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters. The description does not add extra meaning beyond the schema.

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

Purpose5/5

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

The description 'Get TRX balance for an address' uses a specific verb and resource, clearly distinguishing it from siblings like 'get_token_balance' which handles other tokens.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives such as 'get_token_balance' or 'get_account_summary'. The description does not mention preconditions or context.

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

get_usdd_mining_configA
Read-onlyIdempotent

Get USDD mining configuration including mining periods, reward tokens (USDD/TRX dual mining), and schedule.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds behavioral context by detailing the config contents (mining periods, reward tokens, schedule), which aids understanding of what to expect.

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

Conciseness5/5

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

The description is a single, concise sentence (18 words) that front-loads the action and resource. Every word adds value, with no redundancy or fluff.

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

Completeness4/5

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

Given no output schema, the description provides a reasonable overview of the config contents (mining periods, reward tokens, schedule). For a read-only, parameterless tool, this is sufficient to inform the agent of what data will be returned, though additional structure details could enhance completeness.

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

Parameters4/5

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

There are no parameters, and schema coverage is 100%. The description does not need to add parameter semantics, but the baseline for zero parameters is 4. No additional value is required.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'USDD mining configuration', listing specific contents (mining periods, reward tokens, schedule). This provides direct purpose and distinguishes from sibling tools like get_wbtc_mining_config.

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

Usage Guidelines3/5

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

The description implies usage for retrieving USDD mining config, but does not explicitly state when to use this tool versus alternatives (e.g., get_wbtc_mining_config) or provide exclusion criteria. It is clear but lacks explicit guidance.

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

get_user_vote_statusA
Read-onlyIdempotent

Get a user's voting status across all governance proposals. Shows which proposals the user has voted on, their vote amounts (for/against/abstain), and which proposals have withdrawable votes.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressNoTRON address. Default: configured wallet
networkNoNetwork. Default: mainnet

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate readOnly and idempotent behavior. The description adds value by detailing the exact information returned (proposals voted on, vote amounts, withdrawable votes) and does not contradict annotations.

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

Conciseness5/5

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

The description consists of two concise sentences with the main action front-loaded. Every word adds value, and there is no redundancy.

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

Completeness4/5

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

For a simple read-only tool with no output schema, the description is reasonably complete, covering the key outputs. However, it does not mention potential pagination, limits, or whether all proposals (past and active) are included.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description does not add any information about the parameters beyond what the schema provides (address defaults to configured wallet, network defaults to mainnet).

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

Purpose5/5

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

The description clearly states the verb 'get' and the resource 'user's voting status across all governance proposals', specifying what information is returned (vote amounts, withdrawable votes). It distinguishes from sibling tools like get_vote_info by covering all proposals.

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

Usage Guidelines3/5

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

The description implies usage for checking a user's overall voting status but does not explicitly state when to use this tool versus alternatives like get_vote_info, get_locked_votes, or cast_vote. No when-not guidance is provided.

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

get_vote_infoA
Read-onlyIdempotent

Get voting power info for a user: JST wallet balance, available (surplus) votes, total deposited votes, and votes currently cast in proposals. This is the key tool to check before voting — it shows how many votes are available to use.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressNoTRON address. Default: configured wallet
networkNoNetwork. Default: mainnet

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description adds value by detailing the specific data returned (wallet balance, surplus votes, etc.). No contradictions.

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

Conciseness5/5

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

Two sentences: first states purpose and outputs, second provides usage context. No extraneous words. Highly efficient and front-loaded.

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

Completeness4/5

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

The tool is simple (read-only, optional params, no output schema). The description lists the key return data points and usage context, which is sufficient for an agent to decide when to call it. Lacks detail on return format but acceptable given no output schema.

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

Parameters3/5

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

Both parameters have schema descriptions (address: TRON address, network: Network), achieving 100% schema coverage. The description does not add new details beyond referring to 'a user', which maps to address. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'voting power info', listing specific data returned (JST balance, surplus votes, deposited votes, cast votes). It distinguishes itself from siblings by positioning it as 'the key tool to check before voting', implying a specific use case.

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

Usage Guidelines4/5

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

The description explicitly tells when to use it: 'to check before voting'. It indicates it shows available votes, which is the primary use case. However, it does not explicitly exclude alternatives or mention when not to use it.

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

get_wallet_addressA
Read-onlyIdempotent

Get the configured wallet address. This wallet is used for all lending operations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

The description adds context beyond annotations by stating the wallet is 'configured' and used for 'all lending operations,' which helps the agent understand the significance and scope. No contradictions with annotations (readOnlyHint, idempotentHint, destructiveHint).

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

Conciseness5/5

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

Two concise sentences with no redundancy. The first sentence states the action and resource, the second adds context. Every sentence adds value.

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

Completeness5/5

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

For a parameterless tool that returns a single wallet address, the description is complete. It explains what it retrieves and its relevance to lending operations. No output schema is needed as the return is straightforward.

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

Parameters4/5

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

The tool has zero parameters, so schema coverage is 100%. The description does not need to add parameter details; the baseline score of 4 is appropriate as the description adds no confusion and the purpose is clear.

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

Purpose5/5

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

The description clearly states the action ('get') and the resource ('configured wallet address'), and distinguishes the tool by noting its use in lending operations, which differentiates it from sibling tools like get_token_balance or get_account_data.

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

Usage Guidelines3/5

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

The description implies use when needing the wallet address for lending operations, but provides no explicit guidance on when to use versus alternatives like get_account_summary or other getters. The simplicity of the tool (no parameters) reduces the need for elaborate guidance.

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

get_wbtc_mining_configB
Read-onlyIdempotent

Get WBTC mining configuration and supply mining activity details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description adds little behavioral context beyond stating it 'gets' data. No additional disclosures about auth, rate limits, or side effects.

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

Conciseness4/5

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

Single concise sentence that front-loads the purpose. No wasted words, but could be slightly more structured (e.g., bullet points for different data types).

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

Completeness3/5

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

For a zero-parameter read-only tool, the description provides minimal context. It names two data types but doesn't specify structure or return format. Adequate but would benefit from listing key fields or noting that results are a single config object.

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

Parameters4/5

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

No parameters exist, so schema coverage is 100%. The description does not need to add parameter info; it is clear that the tool takes no inputs.

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

Purpose4/5

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

The description clearly states the tool retrieves WBTC mining configuration and supply mining activity details. It distinguishes from similar tools like get_usdd_mining_config and get_mining_rewards by specifying the resource.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., get_mining_rewards). No context about prerequisites or exclusions.

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

repayA
Destructive

Repay borrowed assets to a JustLend market. For TRC20 markets, must have approved underlying first. Use amount='max' to repay the full outstanding borrow. Typical cost: 80,00090,000 energy + 280320 bandwidth (TRX costs less than TRC20).

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount to repay (e.g. '500'), or 'max' for full repayment
marketYesjToken symbol (e.g. 'jUSDT', 'jTRX')
networkNoNetwork. Default: mainnet

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate destructiveHint=true (write operation). The description adds value by disclosing the need for prior approval on TRC20, the 'max' special value, and typical energy/bandwidth costs, which go beyond the annotation hints.

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

Conciseness5/5

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

Three sentences, each serving a distinct purpose: stating the main action, providing a prerequisite, and giving a usage tip with typical costs. No filler, front-loaded with the core purpose.

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

Completeness4/5

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

The description covers the main action, prerequisites, special input values, and costs. It does not explain the result of the action (e.g., reduced borrow balance), but given the lack of output schema, this is acceptable and sufficient for an agent to use the tool correctly.

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

Parameters4/5

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

While the schema already covers 100% of parameters with descriptions, the tool description adds extra meaning: it explains the special 'max' value for amount and provides cost context that helps the agent interpret the parameter values.

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

Purpose5/5

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

The description clearly states the verb 'Repay' and resource 'borrowed assets to a JustLend market', which is specific and distinct from sibling tools like borrow or withdraw.

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

Usage Guidelines4/5

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

It explains when to use the tool (repaying borrows), includes a prerequisite for TRC20 markets ('must have approved underlying first'), and provides practical guidance on using 'max' and typical costs. It does not explicitly state when not to use it, but the context is clear.

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

supplyA
Destructive

Supply (deposit) assets into a JustLend market to earn interest. For TRC20 markets, you must first call approve_underlying. For jTRX, TRX is sent directly. Returns a jToken balance representing your deposit. Typical cost: ~100,000 energy + ~310 bandwidth for TRC20, ~80,000 energy + ~280 bandwidth for TRX. Use estimate_lending_energy tool for precise estimates before executing.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount of underlying to supply (e.g. '1000' for 1000 USDT)
marketYesjToken symbol (e.g. 'jUSDT', 'jTRX')
networkNoNetwork. Default: mainnet

TDQS

A4.3/5.0
Behavior5/5

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

The description adds significant behavioral context beyond annotations: returns a jToken balance, typical energy and bandwidth costs, and prerequisite approval for TRC20. Annotations indicate destructiveHint and not idempotent, consistent with a deposit operation.

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

Conciseness4/5

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

The description is concise (4 sentences) and well-structured: purpose, prerequisite, return value, cost info. It is front-loaded and contains no redundant text.

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

Completeness4/5

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

Given the complexity of a financial transaction tool with no output schema, the description covers purpose, prerequisites, return value, costs, and references an estimation tool. It could be improved by explaining error cases or authorization details, but it is largely complete.

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

Parameters3/5

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

Schema description coverage is 100% with clear descriptions for amount (example format), market (jToken symbol), and network (optional, default mainnet). The tool description adds no additional parameter semantics beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Supply (deposit)'), the resource ('JustLend market'), and the purpose ('earn interest'). It distinguishes the tool from siblings like borrow, withdraw, and repay by specifying the deposit operation.

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

Usage Guidelines4/5

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

The description provides explicit guidelines: requiring approve_underlying for TRC20 markets, direct TRX for jTRX, and referencing estimate_lending_energy for cost estimation. It does not explicitly state when not to use the tool, but the sibling context from tool names provides differentiation.

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

withdrawA
Destructive

Withdraw (redeem) supplied assets from a JustLend market. Specify the amount in underlying units. May fail if assets are used as collateral for active borrows. Typical cost: ~90,000 energy + ~300 bandwidth.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount of underlying to withdraw (e.g. '500')
marketYesjToken symbol (e.g. 'jUSDT', 'jTRX')
networkNoNetwork. Default: mainnet

TDQS

A4.2/5.0
Behavior4/5

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

Adds behavioral context beyond annotations by noting possible failure if assets are used as collateral and specifying typical cost in energy and bandwidth, without contradicting annotations.

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

Conciseness5/5

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

Three sentences, no wasted words, front-loaded with purpose, and well-structured.

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

Completeness4/5

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

The description covers main risks (collateral blockage), cost, and required parameters, though lacks explicit mention of output or immediate effects.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all parameters; the description's mention of 'underlying units' does not significantly add beyond the schema example.

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

Purpose5/5

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

The description clearly states a specific verb ('withdraw'/'redeem') and resource ('supplied assets from a JustLend market'), and distinguishes itself from sibling tools like 'supply' and 'borrow'.

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

Usage Guidelines4/5

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

Description provides context such as amount units and potential failure due to collateral, but does not explicitly contrast with alternatives like 'withdraw_all'.

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

withdraw_allA
Destructive

Withdraw ALL supplied assets from a JustLend market by redeeming all jTokens. Typical cost: ~90,000 energy + ~300 bandwidth.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketYesjToken symbol (e.g. 'jUSDT')
networkNoNetwork. Default: mainnet

TDQS

A4.1/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations, specifically the typical cost ('~90,000 energy + ~300 bandwidth'). It also confirms the destructive nature (all assets withdrawn). No contradictions with annotations (destructiveHint=true).

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

Conciseness5/5

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

The description is a single sentence followed by a cost note. Every word is essential, no redundancy. Front-loaded with the core action.

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

Completeness3/5

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

The description lacks information about return values (e.g., transaction hash, status). While the action is simple, without an output schema, the description should briefly mention what to expect as a result. Otherwise, it is adequate.

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

Parameters3/5

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

Schema coverage is 100% with parameter descriptions. The description adds no further meaning beyond what the schema provides (e.g., 'jToken symbol (e.g. 'jUSDT')' is already in the schema). Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Withdraw ALL supplied assets'), the resource ('JustLend market'), and the mechanism ('redeeming all jTokens'). It effectively distinguishes from sibling tools like 'withdraw' (partial) and 'supply'.

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

Usage Guidelines4/5

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

The description implies use for full withdrawal only, but does not explicitly state when to use this tool versus the partial withdrawal sibling 'withdraw'. No when-not or alternatives are given, but the purpose is clear enough.

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

withdraw_votes_from_proposalA
Destructive

Withdraw (reclaim) votes from a completed or canceled proposal. Only works for proposals that are no longer active. After withdrawing, the votes become available again for other proposals or can be converted back to JST.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork. Default: mainnet
proposalIdYesThe proposal ID to withdraw votes from

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true, and the description adds critical context: the proposal must be non-active, and votes become available again. No contradiction.

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

Conciseness4/5

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

Two sentences, each conveying essential information without fluff. The description is concise and front-loaded.

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

Completeness4/5

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

Given no output schema, the description covers prerequisites (inactive proposal), effects, and postconditions. It could mention return values, but overall it's complete for a withdrawal tool.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds limited value beyond the schema. It repeats the parameter purpose but does not provide additional details like format or constraints.

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

Purpose5/5

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

The description clearly states the verb 'withdraw' and resource 'votes from a proposal', specifying 'completed or canceled' proposals, which distinguishes it from siblings like 'withdraw_votes_to_jst' and 'cast_vote'.

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

Usage Guidelines4/5

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

The description explicitly states the condition 'Only works for proposals that are no longer active' and explains the outcome for alternative uses. It could be more explicit about when not to use, but it's sufficient.

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

withdraw_votes_to_jstA
Destructive

Withdraw WJST back to JST. Can only withdraw votes that are not currently locked in active proposals. Use get_vote_info to check your surplus (available) votes before withdrawing.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount of votes/WJST to withdraw back to JST (e.g. '1000')
networkNoNetwork. Default: mainnet

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the mutation nature is clear. The description adds the important behavioral detail about the locked-vote restriction, but does not elaborate on return values or side effects beyond the expected.

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

Conciseness5/5

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

Three concise sentences: first states purpose, second adds constraint, third advises a prerequisite. Every sentence is informative and there is no redundancy or wasted words.

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

Completeness4/5

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

For a simple mutation tool without an output schema, the description covers purpose, constraints, and prerequisite. The only omission is a mention of what the tool returns (e.g., transaction hash), but given the tool's simplicity and the context of sibling tooling, it is largely complete.

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

Parameters3/5

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

Schema coverage is 100% and both parameters (amount and network) are described in the schema. The description does not add new semantic information beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (withdraw WJST back to JST) and specifies a constraint (only votes not locked in active proposals). It differentiates itself from sibling tools like withdraw_votes_from_proposal.

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

Usage Guidelines5/5

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

The description explicitly states when to use the tool (only for free votes) and advises checking surplus with get_vote_info first, providing clear guidance on prerequisites and alternatives.

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. Dates show when Glama detected each change.

  1. 37 tool updatesv1.10.0
    • First observedapprove_jst_for_voting
    • First observedapprove_underlying
    • First observedborrow
    • First observedcast_vote
    • First observedcheck_allowance
    • First observedcheck_jst_allowance_for_voting
    • First observedclaim_rewards
    • First observeddeposit_jst_for_votes
    • First observedenter_market
    • First observedestimate_lending_energy
    • First observedexit_market
    • First observedget_account_data_from_api
    • First observedget_account_summary
    • First observedget_all_markets
    • First observedget_dashboard_from_api
    • First observedget_jtoken_details_from_api
    • First observedget_locked_votes
    • First observedget_market_data
    • First observedget_markets_from_api
    • First observedget_mining_rewards
    • First observedget_proposal_list
    • First observedget_protocol_summary
    • First observedget_supported_markets
    • First observedget_supported_networks
    • First observedget_token_balance
    • First observedget_trx_balance
    • First observedget_usdd_mining_config
    • First observedget_user_vote_status
    • First observedget_vote_info
    • First observedget_wallet_address
    • First observedget_wbtc_mining_config
    • First observedrepay
    • First observedsupply
    • First observedwithdraw
    • First observedwithdraw_all
    • First observedwithdraw_votes_from_proposal
    • First observedwithdraw_votes_to_jst

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap among data retrieval tools like get_market_data, get_all_markets, and get_markets_from_api, which provide similar market information from different sources. Descriptions help differentiate, but an agent might still select the wrong one without careful analysis.

Naming Consistency5/5

Tool names consistently follow a verb_noun pattern with underscores (e.g., get_wallet_address, approve_underlying, cast_vote). Even longer names like get_markets_from_api and get_jtoken_details_from_api maintain this pattern, making the naming predictable and easy to understand.

Tool Count3/5

With 37 tools, the set is somewhat large for a single lending protocol. While many are necessary for comprehensive coverage (including governance and helper tools), some like the multiple market data tools could be consolidated, making the count feel slightly excessive for the apparent scope.

Completeness5/5

The tool set covers all core lending operations (supply, withdraw, borrow, repay, collateral management, approvals) plus governance (voting, depositing votes) and utility tools (balance checks, energy estimation). There are no obvious gaps for a user interacting with JustLend protocol.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bbsyaya/mcp-server-tld'

If you have feedback or need assistance with the MCP directory API, please join our Discord server