# Personal LP and Creator fees

Use the same prepare → preview → execute/status loop. All asset amounts, token IDs, and liquidity amounts are integer strings. Ticks are integers. Use the tool's SDK calculations; do not invent tick ranges or calculate liquidity with floating point.

## Personal LP

`inspect positions` lists the connected wallet's positions. Optional input `{"offset":"0","limit":"50"}` paginates them (limit ≤ 200). Each position includes `tokenId`, `token0`, `token1`, fee, tick bounds, liquidity, owed amounts, and `locked`.

Supported prepare actions and inputs:

| Action | Input |
| --- | --- |
| `lp-add` | `token`, `tickLower`, `tickUpper`, `amount0Desired`, `amount1Desired` |
| `lp-increase` | `tokenId`, `amount0Desired`, `amount1Desired` |
| `lp-remove` | `tokenId`, `liquidity` |
| `lp-collect` | `tokenId` |

`amount0Desired` and `amount1Desired` follow the registered pool's token ordering, not symbol ordering. Run `inspect token` with `{"token":"0x..."}`: its `poolState` contains `token0`, `token1`, `decimals0`, `decimals1`, `tick`, `tickSpacing`, and `sqrtPriceX96`. Use those fields for ordering and unit conversion. For a new range, get explicit tick bounds or translate the user's price range with the V3 SDK and actual pool ordering. The CLI does not accept human price bounds. `lp-increase` reuses the existing position range. Optional `source:"BNB"` wraps a WBNB shortfall; otherwise supply both assets directly. Optional `slippageBps` and `deadlineSeconds` use the normal defaults.

Example removal input after reading the user's position and chosen amount:

```json
{"tokenId":"123","liquidity":"1000000","slippageBps":100}
```

`lp-remove` prepares decrease **and collect**; continue through both steps to receive assets. `lp-collect` claims personal fees and already owed assets. Locked initial positions cannot be managed as personal LP. There is no LP transfer entry here.

For additions, `result.tokenId`, `liquidity`, `amount0`, `amount1` describe confirmed liquidity addition. `result.IncreaseLiquidity`, `result.DecreaseLiquidity`, `result.Collect`, and `result.events` contain receipt details. Check collect amounts for actual withdrawals.

## Creator fees

Input: `{"token":"0x..."}` with the actual token address. `inspect creator` returns the Creator, locked position ID, gross claimable original-asset amounts, and protocol fee share. Gross amounts are before the split, not the Creator's net receipt.

Use `prepare creator-claim` to collect. The contract sends original project token and WBNB to the recorded Creator and protocol treasury under its split rules. Collection can be triggered by the Creator or Locker owner with an Agent ID, or by an explicitly authorized feeCollector without an Agent ID. Only the Locker owner can grant or revoke collector permission through `setFeeCollector(address,bool)`. Collector permission only triggers the fixed split; it grants no token receipt, trading, personal LP, Vault operations withdrawal or buyback keeper rights. Do not describe the caller as the payee. The confirmed `result.creatorClaim` / `FeesClaimed` event gives the settlement. The user CLI still follows the Agent wallet and Agent ID flow, including `prepare creator-claim`. A fee collector without an Agent ID uses the direct `AgenticPadLocker.collectFees(token)` contract entry through operations tooling. No dedicated automatic fee-scanning program is provided. Fee collector permission is separate from buyback keeper permission. No implicit swap to BNB occurs. With no fees available, inspect reports zeros; do not submit a claim.
