Skip to main content
Glama

prepare_uniswap_v3_increase_liquidity

DestructiveIdempotent

Build an unsigned Uniswap V3 increaseLiquidity transaction to add liquidity to an existing LP position. Reads position details on-chain and verifies ownership to prevent deposits to others' positions.

Instructions

Build an unsigned Uniswap V3 LP increaseLiquidity transaction — adds liquidity to an existing position identified by tokenId. Reads the position's (token0, token1, fee, tickLower, tickUpper) on-chain via positions(tokenId), so the caller only supplies the tokenId + amounts. Hard-refuses when the tokenId is not owned by wallet (the on-chain call would still succeed and route the deposit into someone else's position — the position owner gets the new liquidity). Use get_lp_positions to enumerate the wallet's tokenIds. Up to two ERC-20 approvals are chained ahead of the increaseLiquidity() call. v1 limitation: only WETH (not native ETH) is supported as a pair side; wrap ETH first via prepare_native_send to the WETH contract. Slippage defaults to 50 bps (0.5%); soft cap at 100 bps requires acknowledgeHighSlippage: true. Pass amount0Desired: "0" (or amount1Desired) for a single-sided range deposit when the current price is outside the position's range.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
walletYes
chainNoethereum
tokenIdYesERC-721 tokenId of the Uniswap V3 LP NFT to add liquidity to. The position must be owned by `wallet` — the builder reads ownerOf(tokenId) and refuses if it doesn't match. Use `get_lp_positions` to enumerate the wallet's tokenIds.
amount0DesiredYesHuman-readable decimal amount of the position's token0 to add. NOT raw wei. Pass "0" for a single-sided range deposit when the current price is outside the position's range.
amount1DesiredYesHuman-readable decimal amount of the position's token1. Same shape as amount0Desired.
slippageBpsNoSlippage tolerance in basis points (1 bp = 0.01%). Default 50 bps (0.5%). Hard ceiling 500 bps; soft cap 100 bps requires acknowledgeHighSlippage: true.
acknowledgeHighSlippageNoRequired when slippageBps is in (100, 500]. Surface the trade-off to the user before proceeding.
deadlineSecNoSeconds from now until the on-chain `deadline` parameter expires. Default 1200 (20 min).
approvalCapNoCap on the ERC-20 approval preceding this action. Omit for "unlimited" (standard DeFi UX — fewer follow-up approvals). Pass "exact" to approve only what this action pulls. Pass a decimal string (e.g. "500") for a specific ceiling in the asset's human units; must be ≥ the action amount, otherwise the transaction would revert.
Behavior4/5

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

Annotations indicate destructive and idempotent. The description adds key behavioral details: hard-refuses if tokenId not owned, chains up to two ERC-20 approvals, and supports only WETH (not native ETH). These go beyond annotations and help the agent understand 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?

The description is dense but well-organized, with each sentence adding distinct value (purpose, constraints, usage tips, edge cases). Slightly verbose but not wasteful; front-loaded with the core function.

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 complexity (Uniswap V3, approvals, ownership check, slippage), the description covers almost all needed context. It does not describe the return format (unsigned tx data), but the tool's purpose (build unsigned tx) is clear enough for agents to use correctly.

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?

The description richly explains each parameter beyond the schema: tokenId ownership requirement and enumeration link, human-readable amounts with single-sided deposit tip, slippage defaults and caps, deadline default, and approval cap options. This compensates for the 78% schema coverage and adds 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 builds an unsigned Uniswap V3 increaseLiquidity transaction for an existing position. It distinguishes from siblings like prepare_uniswap_v3_mint (new position) and prepare_uniswap_v3_decrease_liquidity (removing liquidity) by specifying it adds liquidity to an existing position identified by tokenId.

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 usage guidance: use when adding liquidity to an existing position, indicates prerequisites (tokenId from get_lp_positions, wrapping ETH if needed), and explains single-sided deposits and slippage caps. It implicitly differentiates from alternatives like mint tool for new positions.

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

Install Server

Other Tools

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/szhygulin/vaultpilot-mcp'

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