Skip to main content
Glama
Typus-Lab

typus-perp-mcp

Official
by Typus-Lab

typus-perp-mcp

MCP (Model Context Protocol) server for Typus Perp — lets Claude and other AI agents query markets, manage positions, and execute trades on the Typus Perp DEX on Sui.


Prerequisites


Related MCP server: Sui Butler

Installation

git clone https://github.com/xingyen0613/typus-perp-mcp
cd typus-perp-mcp
npm install
cp .env.example .env   # then edit .env to add your PRIVATE_KEY
npm run build

Private Key Setup

Trading and liquidity tools require a private key. The private key is stored locally in a .env file and never leaves your machine.

1. Copy the example file:

cp .env.example .env

2. Edit .env and fill in your private key:

NETWORK=MAINNET
SUI_RPC_URL=https://fullnode.mainnet.sui.io:443
PRIVATE_KEY=<your-private-key>

Both Bech32 format (suiprivkey1...) and Base64 format are supported.

The .env file is listed in .gitignore and will never be committed to Git. If you only need read-only tools (query markets, positions, etc.), you can leave PRIVATE_KEY empty.


Enable in Claude

Setup order: Installation → Private Key Setup → add to Claude config below → restart Claude.

Claude Code

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "typus-perp": {
      "command": "node",
      "args": ["/absolute/path/to/typus-perp-mcp/dist/index.js"]
    }
  }
}

Claude Desktop

macOS — add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "typus-perp": {
      "command": "node",
      "args": ["/absolute/path/to/typus-perp-mcp/dist/index.js"]
    }
  }
}

Windows — add to %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "typus-perp": {
      "command": "node",
      "args": ["C:\\Users\\username\\typus-perp-mcp\\dist\\index.js"]
    }
  }
}

Replace the path in args with the actual location where you cloned this repo. PRIVATE_KEY and other settings are loaded from the .env file in the project root — no need to repeat them here. After editing the config, restart Claude to load the new MCP server.


Tools

Query Tools (read-only, no wallet required)


get_markets

Get all active trading markets and their configurations.

No parameters required.

Returns: Market list including leverage limits, trading fees, funding rates, open interest per symbol.


get_lp_pools

Get TLP liquidity pool information.

No parameters required.

Returns: TVL, per-token liquidity amounts and USD values, LP token info.


get_stake_pools

Get TLP staking pool information.

No parameters required.

Returns: Current TLP price snapshot, total staked shares.


get_positions

Get all open positions for a wallet address.

Parameter

Required

Description

address

Yes

Sui wallet address (0x...)

Returns: Open positions including size, collateral, entry price, liquidation price, unrealized PnL, funding fee, borrow fee, close fee.


get_orders

Get all pending orders for a wallet address.

Parameter

Required

Description

address

Yes

Sui wallet address (0x...)

Returns: Pending orders including size, trigger price, leverage, order type, linked position.


get_user_stake

Get a user's TLP staking positions and pending rewards.

Parameter

Required

Description

address

Yes

Sui wallet address (0x...)

Returns: Staked shares, active/deactivating shares, claimable rewards, unlock timestamps.

Use this to check your cooldown status after unstake or unstake_redeem. The deactivating_shares[].unlocked_ts_ms field shows the Unix timestamp (ms) when the cooldown ends and claim becomes available.


Trading Tools (requires PRIVATE_KEY)


create_order

Create a trading order on Typus Perp.

Parameter

Required

Description

tradingToken

Yes

The base token to trade. See Supported Tokens.

collateralToken

Yes

Token used as collateral. Supported: USDC, SUI

size

Yes

Position size as a raw integer (amount × 10^size_decimal). Use get_markets to find size_decimal for the token.

triggerPrice

Yes

Order trigger price as a raw integer (USD price × 10^8). e.g. $65,000 = 6500000000000

isLong

Yes

true = Long position, false = Short position

collateralAmount

Yes

Collateral amount as a raw integer. USDC has 6 decimals (10 USDC = 10000000), SUI has 9 decimals (5 SUI = 5000000000).

isStopOrder

No

true = stop order attached to an existing position. false = regular open/limit order. Default: false

reduceOnly

No

true = can only reduce an existing position. false = can open or increase. Default: false

linkedPositionId

No

Position ID to attach this order to. Required when isStopOrder is true. Use get_positions to find position IDs.

dryRun

No

true = simulate without submitting. Default: false

The perp market and pool index are determined automatically based on tradingToken (TYPUS uses index 1, all others use index 0).


cancel_order

Cancel a pending trading order.

Parameter

Required

Description

orderId

Yes

The order ID to cancel. Use get_orders to find order IDs.

marketIndex

Yes

The market index the order belongs to. Use get_orders to find the marketIndex for each order.


increase_collateral

Add more collateral to an existing position.

Parameter

Required

Description

positionId

Yes

The position ID to add collateral to. Use get_positions to find position IDs.

amount

Yes

Collateral amount as a raw integer (token units × 10^decimals).

marketIndex

Yes

The market index the position belongs to. Use get_positions to find the marketIndex for each position.


release_collateral

Withdraw excess collateral from an existing position.

Parameter

Required

Description

positionId

Yes

The position ID to release collateral from. Use get_positions to find position IDs.

amount

Yes

Amount to release as a raw integer (token units × 10^decimals).

marketIndex

Yes

The market index the position belongs to. Use get_positions to find the marketIndex for each position.


collect_funding_fee

Collect accumulated funding fees for a position.

Parameter

Required

Description

positionId

Yes

The position ID to collect funding fees from. Use get_positions to find position IDs.

marketIndex

Yes

The market index the position belongs to. Use get_positions to find the marketIndex for each position.


Liquidity Tools (requires PRIVATE_KEY)


mint_stake_lp

Deposit tokens into the TLP liquidity pool to mint TLP, with optional staking.

Parameter

Required

Description

collateralToken

Yes

Token to deposit. e.g. USDC, SUI

amount

Yes

Amount to deposit as a raw integer (token units × 10^decimals).

poolIndex

Yes

LP pool index. 0 = mTLP pool (accepts SUI, USDC), 1 = iTLP pool (accepts USDC, for TYPUS market).

stakePoolIndex

Yes

Stake pool index. 0 = mTLP stake pool, 1 = iTLP stake pool. Must match poolIndex.

stake

Yes

true = automatically stake the minted TLP after deposit. false = receive TLP without staking.

isAutoCompound

Yes

true = enable auto-compounding of staking rewards. false = rewards accumulate without compounding.


stake_lp

Stake existing TLP tokens to earn rewards.

Parameter

Required

Description

amount

Yes

Amount of TLP to stake as a raw integer (TLP units × 10^9).

stakePoolIndex

Yes

Stake pool index. 0 = mTLP stake pool, 1 = iTLP stake pool.


unstake

Begin unstaking TLP. This starts an unlock countdown — you must wait for the cooldown period to complete before calling redeem_tlpclaim. The cooldown duration is subject to change; check the official Typus documentation for the current value.

To check when your cooldown ends, call get_user_stake and look at deactivating_shares[].unlocked_ts_ms.

Parameter

Required

Description

stakePoolIndex

Yes

Stake pool index. 0 = mTLP stake pool, 1 = iTLP stake pool.

poolIndex

Yes

LP pool index. 0 = mTLP pool, 1 = iTLP pool. Must match stakePoolIndex.

share

No

Amount of shares to unstake as a raw integer. Omit to unstake all.


unstake_redeem

Combine unstake and redeem into a single transaction. Note that the cooldown period still applies — you must wait for it to complete before calling claim. The cooldown duration is subject to change; check the official Typus documentation for the current value.

⚠️ This does not return tokens to your wallet directly — you must wait for the cooldown period, then call claim to receive the underlying collateral. To check when your cooldown ends, call get_user_stake and look at deactivating_shares[].unlocked_ts_ms.

Parameter

Required

Description

stakePoolIndex

Yes

Stake pool index. 0 = mTLP stake pool, 1 = iTLP stake pool.

poolIndex

Yes

LP pool index. 0 = mTLP pool, 1 = iTLP pool. Must match stakePoolIndex.

share

No

Amount of shares to unstake and redeem as a raw integer. Omit to unstake and redeem all.


redeem_tlp

Redeem TLP tokens for underlying assets. Use this when:

  • TLP is already in your wallet (minted with stake=false), or

  • You have completed the unstake cooldown period

⚠️ This does not return tokens to your wallet directly — you must call claim afterwards. Full flow: unstake → (wait cooldown) → redeem_tlp → claim.

Parameter

Required

Description

poolIndex

Yes

LP pool index. 0 = mTLP pool, 1 = iTLP pool.

share

No

Amount of TLP shares to redeem as a raw integer. Omit to redeem all.


claim

Claim redeemed TLP tokens back as underlying collateral. This is the final step after unstake_redeem or redeem_tlp.

Parameter

Required

Description

collateralToken

Yes

The collateral token to receive. e.g. SUI, USDC

poolIndex

Yes

LP pool index. 0 = mTLP pool, 1 = iTLP pool.

stakePoolIndex

Yes

Stake pool index. 0 = mTLP stake pool, 1 = iTLP stake pool. Must match poolIndex.

Claim does not require an amount — it automatically transfers all redeemed collateral to your wallet.


harvest_reward

Harvest pending staking reward tokens.

Parameter

Required

Description

stakePoolIndex

Yes

Stake pool index. 0 = mTLP stake pool, 1 = iTLP stake pool.


swap

Swap tokens using the Typus Perp liquidity pool.

Parameter

Required

Description

fromToken

Yes

Token to swap from. e.g. USDC, SUI

toToken

Yes

Token to swap to. e.g. SUI, USDC

amount

Yes

Amount to swap as a raw integer (fromToken units × 10^decimals).

perpIndex

Yes

Perp market index. 0 = main market (SUI, BTC, ETH, etc.), 1 = TYPUS market.


Reference

Pool Index

Index

LP Pool

Stake Pool

Accepted Collateral

Markets

0

mTLP

mTLP stake

SUI, USDC

All markets except TYPUS

1

iTLP

iTLP stake

USDC

TYPUS market only

Supported Tokens

Token

Symbol to use

Decimals

SUI

SUI

9

Bitcoin

WBTC

8

Ethereum

wETH

8

Solana

wSOL

8

Aptos

wAPT

8

DEEP

DEEP

6

WAL

WAL

9

DOGE

DOGE

8

HYPE

HYPE

8

XRP

XRP

8

Japanese Yen

JPY

9

Gold

XAU

9

Silver

XAG

9

US Oil

USOIL

9

QQQ (ETF)

QQQX

9

S&P 500 (ETF)

SPYX

9

TYPUS

TYPUS

9

USDC (collateral)

USDC

6

Raw Integer Conversion

All amount parameters use raw integers (on-chain representation):

Value

Formula

Example

Token amount

amount × 10^decimals

10 USDC = 10000000 (6 decimals)

Position size

amount × 10^size_decimal

Use get_markets to find size_decimal


Workflow Examples

Open a Long with TP/SL

# 1. Open Long position
create_order: tradingToken="SUI", collateralToken="SUI", size="10000000000",
              triggerPrice="10000000000", isLong=true, collateralAmount="3000000000"

# 2. Get positionId
get_positions: address="0x..."

# 3. Set Take-Profit (TP)
create_order: tradingToken="SUI", collateralToken="SUI", size="10000000000",
              triggerPrice="500000000", isLong=false, reduceOnly=true,
              collateralAmount="0", linkedPositionId="<positionId>"

# 4. Set Stop-Loss (SL) — set BELOW current market price to avoid immediate trigger
create_order: tradingToken="SUI", collateralToken="SUI", size="10000000000",
              triggerPrice="50000000", isLong=false, isStopOrder=true, reduceOnly=true,
              collateralAmount="0", linkedPositionId="<positionId>"

# 5. Close position at market price
create_order: tradingToken="SUI", collateralToken="SUI", size="10000000000",
              triggerPrice="1", isLong=false, reduceOnly=true,
              collateralAmount="0", linkedPositionId="<positionId>"

Deposit and Withdraw Liquidity

# Deposit and stake
mint_stake_lp: collateralToken="SUI", amount="10000000000",
               poolIndex="0", stakePoolIndex="0", stake=true, isAutoCompound=false

# Withdraw — Option A: single transaction (cooldown still applies)
unstake_redeem: stakePoolIndex="0", poolIndex="0"               # Step 1: unstake + redeem
# ... wait for cooldown period ...
claim: collateralToken="SUI", poolIndex="0", stakePoolIndex="0" # Step 2: receive tokens

# Withdraw — Option B: two transactions
unstake: stakePoolIndex="0", poolIndex="0"                      # Step 1: start cooldown
# ... wait for cooldown period ...
redeem_tlp: poolIndex="0"                                       # Step 2: redeem
claim: collateralToken="SUI", poolIndex="0", stakePoolIndex="0" # Step 3: receive tokens

Important Notes

  • Minimum deposit: mTLP pool requires at least ~10 SUI (or equivalent USDC). Smaller amounts will fail with deposit_amount_insufficient.

  • reduceOnly orders require linkedPositionId: When closing or reducing a position with reduceOnly=true, you must provide linkedPositionId. Omitting it will fail with position_id_needed_with_reduce_only_order.

  • Stop-Loss price: Set SL below your entry price for longs (above for shorts). Setting SL above the current market price will trigger it immediately and close your position.

  • Withdrawal flow: unstake_redeem or redeem_tlp alone does not return tokens to your wallet. Always call claim as the final step to receive the underlying collateral.


Development

npm run build      # Compile TypeScript → dist/index.js
npm run typecheck  # Type check without building
npm start          # Run the server directly

Security

  • PRIVATE_KEY is stored locally and never transmitted outside your machine

  • Store it in .env or the MCP config's env block — never commit it to Git

  • .env is listed in .gitignore

  • For read-only use, leave PRIVATE_KEY empty — all query tools work without it

Available Tools

19 tools
cancel_orderB

Cancel a pending trading order. Requires PRIVATE_KEY in .env.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderIdYesThe order ID to cancel. Use get_orders to find order IDs.
marketIndexYesThe market index the order belongs to. Use get_orders to find the marketIndex for each order.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses a prerequisite: 'Requires PRIVATE_KEY in .env.' and the 'pending' constraint. However, it does not disclose what happens on successful cancellation (e.g., irreversible, no confirmation), potential error conditions, or whether the order is removed from the book immediately. This is some context, but not rich behavioral detail.

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 entire description is two short sentences, immediately stating the purpose and the key prerequisite. It is front-loaded and free of unnecessary detail, making it easy for an agent to process quickly. Every word earns its place.

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 tool is simple with two well-documented parameters, but there is no output schema and the description does not mention what the tool returns (e.g., success status, transaction hash, or error details). It also does not clarify behavior for invalid or already-cancelled orders. Given the lack of output schema, the description should have provided at least a hint about the return value or expected outcome, but it is otherwise adequate for 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 input schema already provides 100% coverage with descriptions for both parameters, each directing the user to 'get_orders' for finding valid values. The tool description does not add additional parameter semantics beyond this. Since the schema already explains the parameters well, the baseline of 3 is appropriate.

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's action with a specific verb and resource: 'Cancel a pending trading order.' This distinguishes it from other trading tools like create_order or get_orders, though it does not explicitly name any sibling alternatives. The phrase 'pending trading order' adds useful scoping.

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?

The description provides no explicit guidance on when to use this tool versus alternatives. It implicitly suggests that only pending orders can be cancelled, but it does not explain when cancellation is appropriate or mention any related tools (e.g., get_orders for finding order IDs is only in the schema, not the description). There is no 'when not to use' or comparison with other tools.

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

claimA

Claim redeemed TLP tokens back as underlying collateral. This is the final step after unstake → redeem → claim. Requires PRIVATE_KEY in .env.

ParametersJSON Schema
NameRequiredDescriptionDefault
poolIndexYesLP pool index. '0' = mTLP pool, '1' = iTLP pool.
stakePoolIndexYesStake pool index. '0' = mTLP stake pool, '1' = iTLP stake pool. Must match poolIndex.
collateralTokenYesThe collateral token to receive. e.g. 'SUI', 'USDC'

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the PRIVATE_KEY requirement and the asset transformation, but it omits details on reversibility, idempotency, or failure conditions. This is a clear but incomplete behavioral disclosure.

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

Conciseness5/5

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

The description is three short sentences, front-loaded with the core purpose, then adding sequencing and a prerequisite. Every sentence earns its place with no fluff or repetition.

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 3-parameter claim operation, the description provides the essential context: purpose, sequence, and key requirement. The schema fully covers parameters. It lacks mention of output or edge cases, but the overall package is adequate for correct invocation.

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 three parameters are fully documented in the schema, including pool index meanings, a 'must match' constraint, and an example collateral token. The description adds no additional parameter-level semantics, so the schema provides the baseline coverage.

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 action ('Claim redeemed TLP tokens back as underlying collateral') and positions it as the final step in a defined sequence, distinguishing it from siblings like 'redeem_tlp' and 'unstake'.

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 places this tool in the 'unstake → redeem → claim' flow, giving clear timing relative to other operations. It also notes the PRIVATE_KEY prerequisite. However, it does not explicitly name alternatives or state when not to use it beyond the implied order.

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

collect_funding_feeB

Collect accumulated funding fees for a position. Requires PRIVATE_KEY in .env.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionIdYesThe position ID to collect funding fees from
marketIndexYesThe market index the position belongs to. Use get_positions to find the marketIndex for each position.

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It only mentions the need for a PRIVATE_KEY, which implies authentication but does not explain side effects, reversibility, or what happens during collection. The tool likely mutates state (e.g., transfers funds), but this is not 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 a single sentence that states the primary action and a critical requirement. It wastes no words and front-loads the essential information, making it highly concise and well-structured.

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?

Given this is a financial mutation tool with no annotations and no output schema, the description is too sparse. It does not explain the behavioral outcomes, edge cases, or prerequisites beyond a private key, leaving significant gaps for an agent to safely invoke the tool. The schema covers parameters but not operational context.

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 in detail, including the pointer to get_positions for marketIndex. The description itself adds no parameter-specific detail beyond the schema, so the baseline of 3 is appropriate given that the schema handles semantics effectively.

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 action: 'Collect accumulated funding fees for a position.' This is a specific verb and resource, making the purpose unambiguous. However, it does not explicitly distinguish this tool from siblings like claim or harvest_reward, which could overlap in function, so it lacks direct differentiation.

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 a prerequisite ('Requires PRIVATE_KEY in .env.') and the schema hints to use get_positions for finding marketIndex, which offers some contextual guidance. Yet there is no explicit statement about when to use this tool versus alternatives such as claim or harvest_reward, so usage is only implied rather than clearly contrasted.

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

create_orderA

Create a trading order on Typus Perp. Requires PRIVATE_KEY in .env. Size and collateral amounts are raw integers — use get_markets to find size_decimal for the trading token.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeYesPosition size as a raw integer (base token units × 10^size_decimal). Use get_markets to find size_decimal for the token.
dryRunNoIf true, simulate the transaction without submitting.
isLongYestrue = Long position, false = Short position
reduceOnlyNotrue = this order can only reduce an existing position size. false = can open or increase a position.
isStopOrderNotrue = stop order (attached to an existing position). false = regular open/limit order.
tradingTokenYesThe base token to trade. Supported values: SUI, WBTC, wETH, wSOL, wAPT, DEEP, WAL, DOGE, HYPE, XRP, JPY, XAU, XAG, USOIL, QQQX, SPYX, TYPUS
triggerPriceYesOrder trigger price in USD as a raw integer (price × 10^8). e.g. $65,000 = '6500000000000'.
collateralTokenYesThe token used as collateral. Supported values: USDC, SUI
collateralAmountYesCollateral amount as a raw integer (token units × 10^decimals). USDC has 6 decimals (10 USDC = '10000000'), SUI has 9 decimals (5 SUI = '5000000000').
linkedPositionIdNoThe position ID to attach this order to. Required when isStopOrder is true. Use get_positions to find position IDs.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full transparency burden. It discloses the PRIVATE_KEY requirement, which is a meaningful behavioral trait (needs authentication). However, it does not mention side effects on positions, return values, or failure modes, which would be valuable for a mutation tool.

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 at three short sentences, front-loaded with the purpose, followed by the prerequisite and a key parameter tip. Every sentence contributes essential information without waste.

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 10-parameter trading mutation with no output schema, the description gives the essential prerequisite and a pointer for decimals, but it lacks higher-level context such as when to use it versus swap, or what the expected outcome is (e.g., order visible via get_orders). The schema covers parameters well, so this is adequate but not comprehensive.

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 baseline is 3. The description's note that 'Size and collateral amounts are raw integers' is redundant with the schema's detailed parameter descriptions and adds no new semantic value beyond reiterating 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 the tool's function with a specific verb and resource: 'Create a trading order on Typus Perp.' This distinguishes it from sibling tools such as get_orders and cancel_order, as it is the creation action in the order lifecycle.

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 concrete usage context: it requires PRIVATE_KEY in .env and instructs the agent to use get_markets for size_decimal, which is a prerequisite and a preparatory step. It does not explicitly mention alternatives or when not to use it, so it falls short of a full 5.

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

get_lp_poolsA

Get TLP liquidity pool information including TVL and per-token liquidity amounts

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?

With no annotations, the description carries the full transparency burden. The verb 'Get' implies read-only behavior, and the description specifies the returned data types (TVL and per-token amounts), but it does not explicitly state side-effect freeness or other behavioral traits.

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, well-structured sentence that front-loads the action and lists the key data points without unnecessary words. Every word contributes to understanding the tool's 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?

For a parameterless getter, the description provides adequate context on purpose and output content. However, it does not explicitly state whether it returns all pools or a single pool, nor the return structure, but these are easily inferred from the zero-parameter schema.

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

Parameters4/5

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

The tool accepts zero parameters, so the schema has full coverage and no parameter descriptions are needed. The baseline for 0-parameter tools is 4, and the description adds sufficient context about what information is returned.

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 the specific verb 'Get' and clearly identifies the resource as 'TLP liquidity pool information' with explicit mention of TVL and per-token liquidity amounts. This distinguishes it from sibling tools like get_markets and get_stake_pools, which target different 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?

No explicit when-to-use guidance or alternative tools are mentioned. The description implies usage through the name and content, but there is no exclusionary language to help differentiate from similar getter tools.

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

get_marketsA

Get all active trading markets and their configurations on Typus Perp (leverage, fees, funding rates, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description must carry the transparency burden. It clearly discloses that this is a read-only operation returning 'active' markets, which implies filtering and no side effects. It doesn't mention any caveats like pagination or authentication, but for this simple getter, the behavior is well understood.

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, front-loaded sentence that includes the action, resource, and key details. Every part is relevant and it is concise without wasting 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?

Given the tool's simplicity (no parameters, no output schema), the description provides sufficient context by specifying the content of the return data. It covers the essential information an agent needs to decide whether to use this tool.

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 no parameters, so the baseline is 4. The description adds context by listing return fields (leverage, fees, funding rates), which helps the agent understand what to expect, though it doesn't explain any parameter usage since none exist.

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 fetches all active trading markets and their configurations on Typus Perp, mentioning specific data types like leverage, fees, and funding rates. This aligns with a specific verb (Get) and resource (markets), and is distinct from sibling tools like get_positions or get_orders.

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 the tool is for retrieving market data when needed. While it doesn't explicitly mention alternatives or exclusions, the purpose is clear enough to differentiate from other tools. In context of the sibling list, this is the only market-related getter, so usage context is evident.

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

get_ordersA

Get all pending (unfilled) trading orders for a specific wallet address

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesSui wallet address (0x...) to query orders for

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the filtering behavior (pending/unfilled) and the query scope, but does not explicitly confirm it is read-only or describe return format/pagination. The verb 'Get' implies a read operation, which adds some transparency.

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, front-loaded sentence that contains no redundant information. It earns its place by clearly and efficiently conveying the tool's purpose and scope.

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?

This is a simple read-only tool with one parameter and no output schema. The description fully explains what the tool does and the query scope. While it does not explicitly describe the return format, that is implied by the tool name and description, making it sufficiently complete for this complexity.

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

Parameters3/5

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

Schema coverage for the single parameter is 100%, so the baseline is 3. The description mentions 'for a specific wallet address', which aligns with the schema but adds no additional meaning beyond what the schema already states.

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

Purpose5/5

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

The description clearly states the verb 'Get', the resource 'trading orders', and the scope 'pending (unfilled) for a specific wallet address'. This distinguishes it from siblings like create_order, cancel_order, and get_positions.

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 clear context: it retrieves pending orders for a given address, which implies when to use it. However, it does not explicitly mention alternatives or exclusions, so it falls slightly short of a 5.

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

get_positionsA

Get all open positions for a wallet address, including liquidation price, unrealized PnL, funding fee, borrow fee, and close fee for each position

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesSui wallet address (0x...) to query positions for

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that this is a read-only operation ('Get') and lists the specific return fields, providing useful transparency about the response. It does not mention error handling, rate limits, or authorization, but for a simple query this is sufficient.

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, efficient sentence that front-loads the action and lists key fields without unnecessary words. No redundancy or padding.

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 tool's simplicity (one parameter, no output schema), the description is complete enough: it states what is returned and the granularity ('for each position'). It does not specify the response structure (e.g., array), but this is implied. It adequately covers the main use case.

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 schema fully describes the single parameter 'address' with a clear description. The tool description only repeats 'for a wallet address' without adding extra semantic meaning beyond the schema, so it does not compensate beyond the baseline.

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 function: 'Get all open positions for a wallet address' and specifies the data returned (liquidation price, unrealized PnL, etc.). This is specific and differentiates from sibling tools focused on stakes, orders, and 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 usage when open positions are needed, but does not explicitly mention when to use this tool over siblings or list exclusions. No alternative tools are referenced, so guidance is minimal.

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

get_stake_poolsB

Get TLP staking pool information including current TLP price and total staked shares

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. The verb 'Get' implies a non-destructive read operation, and it mentions the specific data fields returned. However, it does not disclose whether the response is a list or single object, potential rate limits, or any other behavioral nuances beyond the basic read-only implication.

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 that front-loads the primary purpose and key included data. Every word earns its place, with no filler or redundancy.

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 tool's simplicity (no params, no output schema), the description is mostly sufficient. It states the two key data points returned, but it does not specify whether the result is a collection or single item, and it may omit other fields. This is a moderate gap for a tool with no output schema to fall back on.

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 the baseline is 4. The description adds context about the operation, but there are no parameter semantics to clarify. It appropriately avoids unnecessary detail.

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 gets TLP staking pool information, including current TLP price and total staked shares. The verb 'Get' plus specific resource 'TLP staking pool information' makes the purpose clear. It does not explicitly distinguish from siblings like get_lp_pools, but the TLP-specific focus provides reasonable 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?

The description provides no guidance on when to use this tool versus alternatives such as get_user_stake or get_lp_pools. There is no mention of scenarios, prerequisites, or exclusions. This leaves the agent to infer usage purely from the name and description.

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

get_user_stakeA

Get a user's TLP staking positions including staked share amounts, claimable rewards, and any shares currently in the unstaking cooldown period

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesSui wallet address (0x...) to query staking info for

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description must carry the burden. The verb 'Get' implies a read-only operation, and it discloses the return fields, but it does not explicitly state side effects, permissions, or error behavior. Basic behavior is implied but not fully 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 a single sentence, front-loaded with the verb and resource, and every phrase adds value (staked share amounts, claimable rewards, unstaking cooldown). 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?

For a simple one-parameter read tool with no output schema, the description provides a reasonable summary of the response ('staked share amounts, claimable rewards, cooldown shares'), which is sufficient. It could mention error handling or return format, but given the simplicity, it is nearly 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?

The input schema fully documents the sole parameter 'address' with a clear description ('Sui wallet address (0x...) to query staking info for'), so schema coverage is 100%. The description adds little beyond the schema, so the 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 uses a specific verb 'Get' with a clear resource ('user's TLP staking positions') and enumerates the specific data returned (staked share amounts, claimable rewards, unstaking cooldown). This clearly distinguishes it from sibling tools like get_stake_pools or get_positions.

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 reading a specific user's staking data, but it does not explicitly state when to use it over siblings like get_stake_pools or provide exclusions/alternatives. Usage context is implied by the purpose.

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

harvest_rewardA

Harvest pending staking reward tokens (e.g. TYPUS tokens). Requires PRIVATE_KEY in .env.

ParametersJSON Schema
NameRequiredDescriptionDefault
stakePoolIndexYesStake pool index. '0' = mTLP stake pool, '1' = iTLP stake pool.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It adds the critical prerequisite that PRIVATE_KEY is required in .env, which is valuable context. However, it does not disclose that harvesting is an on-chain transaction involving gas fees, potential failures, or that rewards are transferred to the user. More detail on side effects is needed.

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 short, information-dense sentences. The first sentence states the core action and purpose; the second provides a crucial prerequisite. There is zero redundancy or irrelevant phrasing.

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?

This is a mutation tool with no output schema and no annotations, so the description must explain return values and failure behavior. It does not mention what the tool returns on success, whether it can be called when no rewards are pending, or any failure conditions. The description is insufficient for a tool that likely executes a financial transaction.

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 full documentation for the only parameter (stakePoolIndex), including the meaning of '0' and '1'. The description adds no additional parameter semantics, so baseline 3 applies due to high schema coverage.

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 'Harvest' and the resource 'pending staking reward tokens', making its purpose unmistakable. It also gives a concrete example (TYPUS tokens) to remove ambiguity. This distinguishes it from siblings like 'claim' or 'collect_funding_fee'.

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 is for collecting staking rewards, but does not explicitly state when to use this tool versus alternatives like 'claim' or 'collect_funding_fee'. There is no mention of exclusions or preferred contexts, so guidance is only implicit.

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

increase_collateralA

Add more collateral to an existing position to reduce liquidation risk. Requires PRIVATE_KEY in .env.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesCollateral amount to add (raw integer with token decimals)
positionIdYesThe position ID to add collateral to
marketIndexYesThe market index the position belongs to. Use get_positions to find the marketIndex for each position.

TDQS

A3.9/5.0
Behavior3/5

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

The description discloses the private key requirement and the effect of reducing liquidation risk, which are behavioral traits not covered by the schema. With no annotations, it carries some burden but does not fully disclose other important aspects such as whether it's an on-chain transaction, what it returns, or if it is reversible.

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: the first states the action and purpose, and the second highlights the prerequisite. It is front-loaded, contains no filler, and every word contributes meaning.

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 financial mutation with no annotations or output schema, the description is somewhat sparse. It covers the core action and a key prerequisite, but does not specify what the agent should expect as a return value (e.g., transaction hash) or any additional side effects, leaving gaps for an agent to infer.

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 100% description coverage, with each parameter clearly explained (e.g., 'raw integer with token decimals' and 'Use get_positions to find the marketIndex'). The tool description adds no additional parameter semantics, 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 uses a specific verb ('Add') and identifies the resource ('collateral to an existing position'), making the action clear. It also states the purpose ('reduce liquidation risk'), which distinguishes it from sibling tools like release_collateral and helps the agent understand the intent.

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 clear context for when to use the tool ('to reduce liquidation risk') and specifies it applies to an existing position, which helps differentiate it from position creation. However, it does not explicitly mention alternatives like release_collateral or scenarios where this tool should not be used.

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

mint_stake_lpB

Deposit tokens into the TLP liquidity pool and optionally stake the resulting TLP. Requires PRIVATE_KEY in .env.

ParametersJSON Schema
NameRequiredDescriptionDefault
stakeYestrue = automatically stake the minted TLP after deposit. false = receive TLP without staking.
amountYesAmount to deposit (raw integer with token decimals)
poolIndexYesLP pool index. '0' = mTLP pool (accepts SUI, USDC), '1' = iTLP pool (accepts USDC, for TYPUS market).
isAutoCompoundYestrue = enable auto-compounding of staking rewards. false = rewards accumulate without compounding.
stakePoolIndexYesStake pool index. '0' = mTLP stake pool, '1' = iTLP stake pool. Must match poolIndex.
collateralTokenYesToken to deposit. e.g. 'USDC', 'SUI'

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions a prerequisite (PRIVATE_KEY) and lacks details about token transfers, minting, staking side effects, or reversibility. This is insufficient for a write-heavy DeFi operation.

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 one clear sentence and a prerequisite note. It is front-loaded and contains no redundant or filler text.

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?

Despite the schema covering parameter semantics, the description omits critical operational context such as when to use this tool, the on-chain flow, or potential failures. With no output schema and no annotations, the description is insufficient for a complex 6-parameter transaction.

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 schema covers all 6 parameters with 100% description coverage, so the added value from the tool description is minimal. It does not elaborate on how parameters interact (e.g., stakePoolIndex must match poolIndex) beyond what the schema states.

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

Purpose5/5

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

The description clearly states the action: deposit tokens into the TLP liquidity pool and optionally stake the resulting TLP. It distinguishes itself from siblings like stake_lp and redeem_tlp by combining minting and staking.

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 does not explicitly compare with alternatives like stake_lp. The phrase 'optionally stake' implies a choice but provides no guidance on when to use this tool versus staking existing TLP. The prerequisite note about PRIVATE_KEY is helpful but not a usage guideline.

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

redeem_tlpA

Redeem TLP tokens (already unstaked) for underlying assets. ⚠️ This does NOT return tokens to your wallet directly — you must call claim() afterwards to receive the underlying collateral. Full flow: unstake → redeem_tlp → claim. Requires PRIVATE_KEY in .env.

ParametersJSON Schema
NameRequiredDescriptionDefault
shareNoAmount of TLP shares to redeem (raw integer). Omit to redeem all.
poolIndexYesLP pool index. '0' = mTLP pool, '1' = iTLP pool.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently states a non-obvious behavior: redeeming does not directly return tokens to the wallet and requires a subsequent claim() call. This is critical context that prevents incorrect use.

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 compact yet informative, consisting of three sentences. It leads with the main purpose, immediately flags the critical claim() requirement, and ends with the flow and environment prerequisite. 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?

Despite no output schema or annotations, the description provides the necessary context for a two-parameter redeem step: the full workflow, the non-direct return behavior, and the required environment variable. This is sufficient for an agent to select and invoke the tool correctly.

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

Parameters3/5

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

The input schema already provides thorough descriptions for both parameters: share ('raw integer, omit to redeem all') and poolIndex ('0' = mTLP, '1' = iTLP). The tool description adds no additional parameter-specific meaning, so the baseline score of 3 applies.

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

Purpose5/5

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

The purpose is clearly stated with a specific verb and resource: 'Redeem TLP tokens (already unstaked) for underlying assets.' It distinguishes from siblings by emphasizing the 'already unstaked' precondition and by placing itself between unstake and claim in the full flow.

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 explains when to use the tool via the full flow: unstake → redeem_tlp → claim. It also warns that tokens are not returned directly and that claim() must be called afterward, which is a clear behavioral guideline. The PRIVATE_KEY requirement is a concrete prerequisite.

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

release_collateralB

Withdraw excess collateral from an existing position. Requires PRIVATE_KEY in .env.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount to release (raw integer with token decimals)
positionIdYesThe position ID to release collateral from
marketIndexYesThe market index the position belongs to. Use get_positions to find the marketIndex for each position.

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It mentions the need for PRIVATE_KEY but says nothing about the effect on the position, irreversibility, gas costs, or return value. For a mutation tool, this is under-specified.

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 and includes a necessary prerequisite. It is appropriately minimal with no wasted words, making it highly scannable.

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?

This is a mutation tool with no annotations and no output schema. The description does not mention what the tool returns, whether the withdrawal is permanent, or any side effects. While the schema covers parameters, the overall context is incomplete for a transaction-bearing 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?

All three parameters have thorough schema descriptions (100% coverage), so the baseline is 3. The description itself adds no parameter-specific meaning 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 the action ('Withdraw excess collateral') and the resource ('existing position'), using a specific verb that distinguishes it from sibling tools such as increase_collateral. The purpose is immediately apparent and unambiguous.

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 when to use the tool (when excess collateral exists) but does not explicitly contrast it with alternatives like increase_collateral. The only usage guideline provided is the requirement for PRIVATE_KEY in .env, which is a prerequisite rather than a usage context.

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

stake_lpA

Stake existing TLP tokens in the stake pool to earn rewards. Requires PRIVATE_KEY in .env.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount of TLP to stake (raw integer with TLP decimals)
stakePoolIndexYesStake pool index. '0' = mTLP stake pool, '1' = iTLP stake pool.

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions the private key requirement and does not disclose that staking is a transaction with side effects (e.g., gas costs, potential failure, irreversible state changes). This is a significant gap for a write-action tool.

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 is front-loaded with the action and resource, and includes a necessary prerequisite. Every word adds value, with no redundancy or filler.

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 tool has a simple 2-parameter schema and no output schema, but as a staking (mutation) tool with no annotations, it lacks essential contextual details such as potential error conditions, transaction confirmation expectations, or gas implications. The description is minimally viable but has clear gaps in operational context.

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 fully documents both parameters (amount and stakePoolIndex) with descriptions and allowed values. The description adds no additional parameter-level context, so it meets the baseline of 3 for high schema coverage without enhancement.

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 specific action (stake), the resource (existing TLP tokens), and the purpose (to earn rewards). The phrase 'existing TLP tokens' effectively differentiates it from sibling tools like mint_stake_lp, making the tool's role unambiguous.

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 a clear prerequisite ('Requires PRIVATE_KEY in .env') and implicitly distinguishes this tool from minting via 'existing TLP tokens.' However, it does not explicitly name alternative tools or state when not to use this tool, so it falls short of full explicit guidance.

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

swapB

Swap tokens using Typus Perp liquidity pool. Requires PRIVATE_KEY in .env.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount to swap (raw integer with fromToken decimals)
toTokenYesToken to swap to, e.g. 'SUI'
fromTokenYesToken to swap from, e.g. 'USDC'
perpIndexYesPerp market index. 0 = main market (SUI, BTC, ETH, etc.), 1 = TYPUS market.

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only mentions that a PRIVATE_KEY in .env is required, which is a useful security detail, but fails to disclose that this is an on-chain transaction with potential slippage, fees, or the nature of the returned result (e.g., transaction hash). The scope of side effects remains largely opaque.

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 short sentences, front-loaded with the core action in the first sentence and a key requirement in the second. Every word is useful, with no filler or redundancy.

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?

For a mutating swap tool with no annotations and no output schema, the description is under-specified. It omits any guidance on expected return values, transaction lifecycle, failure scenarios, or slippage/deadline parameters. While the schema covers parameters, the overall context for invoking the tool safely and understanding outcomes is incomplete.

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 provides descriptions for all four parameters (100% coverage), so the description adds no extra meaning beyond what is already in the schema. The baseline for full schema coverage is 3, and the description does not compensate or clarify any parameter semantics further.

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 ('Swap') and resource ('tokens using Typus Perp liquidity pool'), which clearly states the tool's function. It distinguishes itself from sibling tools (e.g., create_order, collect_funding_fee) by being the only token swap tool in the list.

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 the tool is used when one wants to swap tokens, but it does not explicitly describe when to use it compared to alternatives like create_order or cancel_order. No exclusions or alternative tool references are provided, leaving usage context implicit rather than directive.

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

unstakeA

Begin unstaking TLP (starts the unlock countdown). Requires PRIVATE_KEY in .env.

ParametersJSON Schema
NameRequiredDescriptionDefault
shareNoAmount of shares to unstake (raw integer). Omit to unstake all.
poolIndexYesLP pool index. '0' = mTLP pool, '1' = iTLP pool. Must match stakePoolIndex.
stakePoolIndexYesStake pool index. '0' = mTLP stake pool, '1' = iTLP stake pool.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavioral traits. It notes that the action begins an unlock countdown and requires PRIVATE_KEY, which is useful. However, it does not mention reversibility, side effects, or what happens after the countdown, leaving some behavioral gaps.

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 short sentences: one defining the action and one stating the prerequisite. Every word earns its place, no unnecessary detail.

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 adequately conveys the core function and prerequisite, and the schema handles parameter details. It is reasonably complete for a transactional tool, though it could briefly mention the link to unstake_redeem or the overall flow. Given the schema richness, this is 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 provides thorough descriptions for all three parameters (share, poolIndex, stakePoolIndex), covering semantics fully. The tool description adds no parameter-specific information, and since schema coverage is 100%, 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 'Begin unstaking TLP' and adds the distinctive 'starts the unlock countdown', making it specific to initiating a timed process. This distinguishes it from siblings like unstake_redeem or redeem_tlp which likely handle later steps.

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 starting the unstaking process and mentions the PRIVATE_KEY prerequisite, but does not explicitly differentiate from alternatives or provide when-not-to-use guidance. Clear context but no exclusions or alternative references.

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

unstake_redeemA

Unstake and immediately redeem TLP for underlying tokens in one transaction. ⚠️ This does NOT return tokens to your wallet directly — you must call claim() afterwards to receive the underlying collateral. Requires PRIVATE_KEY in .env.

ParametersJSON Schema
NameRequiredDescriptionDefault
shareNoAmount of shares to unstake and redeem (raw integer). Omit to unstake and redeem all.
poolIndexYesLP pool index. '0' = mTLP pool, '1' = iTLP pool. Must match stakePoolIndex.
stakePoolIndexYesStake pool index. '0' = mTLP stake pool, '1' = iTLP stake pool.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It explicitly warns that tokens are NOT returned directly to the wallet and that a separate claim() call is required, plus the PRIVATE_KEY prerequisite. This adds important behavioral context beyond the schema.

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 succinct with exactly two sentences and a brief warning. Every sentence provides essential information, and the most critical detail (the claim() requirement) is prominently placed.

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 tool is a transaction with no output schema, the description adequately covers the action, the required follow-up, and the environment prerequisite. It doesn't describe return values or failure modes, but these are less critical when the schema is complete and the warning covers the main usage caveat.

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 all parameters are already documented in the schema. The description adds no additional parameter semantics beyond what the schema provides, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the tool unstakes and immediately redeems TLP for underlying tokens in one transaction. The verb 'unstake and immediately redeem' is specific and the resource (TLP) is named, distinguishing this combined operation from sibling tools like unstake and redeem_tlp.

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 phrase 'in one transaction' implies a combined operation versus separate calls, providing clear context. The warning that claim() must be called afterwards is a crucial usage directive, though it does not explicitly name alternative approaches or list when not to use this tool.

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. 19 tool updatesv0.1.0
    • First observedcancel_order
    • First observedclaim
    • First observedcollect_funding_fee
    • First observedcreate_order
    • First observedget_lp_pools
    • First observedget_markets
    • First observedget_orders
    • First observedget_positions
    • First observedget_stake_pools
    • First observedget_user_stake
    • First observedharvest_reward
    • First observedincrease_collateral
    • First observedmint_stake_lp
    • First observedredeem_tlp
    • First observedrelease_collateral
    • First observedstake_lp
    • First observedswap
    • First observedunstake
    • First observedunstake_redeem

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: user staking vs pool info, order creation vs cancellation, collateral management, and the multi-step unstake/redeem/claim flow are all clearly separated. Even similar-sounding tools like unstake and unstake_redeem have explicit descriptions that delineate their purposes.

Naming Consistency4/5

Most tools follow a verb_noun snake_case pattern (get_markets, create_order, increase_collateral), but a few are bare verbs (unstake, claim, swap) or compound verbs (mint_stake_lp, unstake_redeem). This is a minor deviation from the otherwise consistent convention.

Tool Count4/5

With 19 tools, the set is slightly heavy but each tool earns its place given the dual domains of perpetuals trading and TLP staking/LP management. The count is justifiable for the breadth of operations covered.

Completeness4/5

Core workflows are well-covered: order lifecycle, position collateral management, staking/unstaking/redeeming/claiming, and swaps. Minor gaps exist, such as no explicit wallet balance tool to check free TLP or token holdings, but these can be worked around via user-supplied information or external chain queries.

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

  • A
    license
    Not graded
    quality
    F
    maintenance
    An MCP server for the Sui blockchain that enables AI agents to manage accounts, execute token swaps, and perform smart contract development using the Sui CLI. It supports over 30 tools for DeFi operations, staking, and market data via Pyth price oracles.
    21
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol (MCP) server for the Hyperliquid decentralized exchange, enabling AI assistants to perform trading operations, manage accounts, and retrieve market data.
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A comprehensive MCP server for Aster DEX perpetual futures trading, enabling AI agents to access real-time market data, perform institutional-grade analysis, execute orders, and run automated trading strategies.
    1
    MIT

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/Typus-Lab/typus-perp-mcp'

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