Skip to main content
Glama
arcadia-finance

mcp-server

Arcadia Finance MCP Server

npm npm downloads License: AGPL-3.0 TypeScript MCP Smithery MCP Badge arcadia-finance-mcp-server MCP server

MCP server for Arcadia Finance, a platform for concentrated liquidity on Uniswap and Aerodrome with automated rebalancing, compounding, yield optimization, and leverage, or single-sided liquidity into lending pools. Read protocol data and build unsigned transactions for LP management, borrowing, deposits, and more.

Designed for AI agents (Claude, Cursor, etc.) to interact with Arcadia onchain.

Install

Install in VS Code Install in Cursor

Related MCP server: Stacks AI MCP Server

Tools

Read Tools

Tool

Description

read.account.info

Account overview: health factor, collateral, debt, positions, liquidation price, automation status.

read.account.history

Historical account value over time.

read.account.pnl

PnL and yield data for an account.

read.wallet.accounts

List all Arcadia accounts owned by a wallet address.

read.wallet.balances

On-chain ERC20 balances and native ETH for a wallet address.

read.wallet.allowances

Check ERC20 token allowances for a spender. Use before write.wallet.approve to avoid redundant approvals.

read.wallet.points

Points balance for a specific wallet address.

read.asset.list

Supported collateral assets with addresses, types, decimals.

read.asset.prices

USD prices for one or more asset addresses.

read.pool.list

All lending pools: TVL, APY, utilization, liquidity.

read.pool.info

Single pool detail with APY history over time.

read.point_leaderboard

Paginated Arcadia points leaderboard.

read.strategy.list

LP strategies with APY, underlyings, pool info. Supports featured filter and pagination.

read.strategy.info

Full detail for a specific LP strategy: APY per range width, pool config.

read.strategy.recommendation

Rebalancing recommendation for an account.

read.guides

Reference guides: automation setup, strategy selection, strategy templates.

read.asset_manager.intents

Automation intents and their params; add account_address for live per-account availability.

read.asset_manager.current

Automations enabled on an account: decoded config, mapped intents, Merkl state, superseded managers.

Write Tools

All write tools return unsigned transactions as { to, data, value, chainId }.

Tool

Description

write.wallet.approve

Approve an ERC20 token for spending. Required before depositing into an account. Call read.wallet.allowances first to check if already approved.

write.pool.deposit

Lend the pool's underlying asset into an ERC-4626 tranche to earn interest. Mints tranche shares to the receiver.

write.pool.redeem

Redeem tranche shares back into the underlying asset (lender exit).

write.account.create

Create a new Arcadia account via Factory.

write.account.deposit

Deposit ERC20 tokens into an account.

write.account.withdraw

Withdraw assets from an account.

write.account.borrow

Borrow from a lending pool.

write.account.repay

Repay debt to a lending pool from wallet.

write.account.add_liquidity

Flash-action: deposit + swap + mint LP + optional leverage, atomically.

write.account.remove_liquidity

Remove/decrease LP position liquidity.

write.account.swap

Swap assets within an account (backend-routed).

write.account.deleverage

Repay debt by selling collateral (swap + repay in one tx).

write.account.close

Atomic close: burn LP + swap + repay debt in one tx.

write.account.stake

Stake, unstake, or claim rewards for LP positions.

write.account.automations

Configure automations from an intents array (full desired state). Returns the unsigned setAssetManagers tx.

write.account.automations_delta

Enable/disable individual automations, leaving the rest untouched.

Dev Tools

Always registered but requires PK env var to function.

Tool

Description

dev.send

Sign and broadcast an unsigned transaction using a local private key (PK env var). Not for production — use a dedicated wallet MCP server instead.

Transaction Signing

All write tools return unsigned transactions as { to, data, value, chainId }. This server does NOT sign or broadcast — your agent or application is responsible for that.

Options

Wallet MCP servers (recommended for production): Pair this server with a wallet MCP server that handles signing:

Wallet MCP

Provider

Model

MCP Wallet Signer

Community

Non-custodial, routes to browser wallet (MetaMask, Rabby)

Coinbase AgentKit

Coinbase

Wallet-agnostic, supports multiple providers

Phantom MCP

Phantom

Embedded wallet

Privy MCP

Privy

Wallet infrastructure

Safe MCP

Community

Multi-sig via Safe

Or use your existing wallet setup (Fireblocks, Dfns, Turnkey, Biconomy, Dynamic) and pass the unsigned tx object to your provider's signing method.

viem/ethers in your agent:

import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";

const account = privateKeyToAccount("0x...");
const client = createWalletClient({ account, chain: base, transport: http() });

// tx = result from any write.* tool
const hash = await client.sendTransaction(tx);

Built-in dev.send tool (development only): The server includes a dev-only signing tool that reads a private key from the PK environment variable. Set PK via a .env file or your MCP client config:

# .env in the server directory (never commit — already gitignored)
PK=0xYourPrivateKeyHex
RPC_URL_BASE=https://base-mainnet.g.alchemy.com/v2/your-key

The server loads .env automatically on startup. Works with any MCP client (Claude Desktop, Claude Code, VSCode, Cursor). MCP client env block settings take precedence if both are set.

Not for production — use a dedicated wallet MCP server (Fireblocks, Turnkey, Safe) instead.

Setup

Prerequisites: Node.js >= 22

yarn install
yarn build

Environment variables:

Variable

Required

Default

Transport

Description

RPC_URL_BASE

No

Public RPC

Both

RPC URL for Base (8453).

RPC_URL_UNICHAIN

No

Public RPC

Both

RPC URL for Unichain (130).

RPC_URL_OPTIMISM

No

Public RPC

Both

RPC URL for Optimism (10).

RPC_URL_ROBINHOOD

No

Public RPC

Both

RPC URL for Robinhood (4663).

PK

No

Both

Private key (hex) for dev-only dev.send tool.

TRANSPORT

No

stdio

Transport mode: stdio or http.

PORT

No

3000

HTTP

Listen port for HTTP transport.

ALLOWED_ORIGINS

No

https://mcp.arcadia.finance

HTTP

Comma-separated allowed Origin headers (CORS / DNS rebinding).

RATE_LIMIT_RPM

No

60

HTTP

Max requests per minute per session.

Supported chains: Base (8453), Unichain (130), Optimism (10), Robinhood (4663)

MCP Client Configuration

Remote (no install needed):

{
  "mcpServers": {
    "arcadia-finance": {
      "url": "https://mcp.arcadia.finance/mcp"
    }
  }
}

Via npx (local stdio):

{
  "mcpServers": {
    "arcadia-finance": {
      "command": "npx",
      "args": ["-y", "@arcadia-finance/mcp-server"],
      "env": {
        "RPC_URL_BASE": "https://base-mainnet.g.alchemy.com/v2/your-key"
      }
    }
  }
}

Claude Code:

# Remote
claude mcp add arcadia-finance --transport http https://mcp.arcadia.finance/mcp

# Local
claude mcp add arcadia-finance -- npx -y @arcadia-finance/mcp-server

From source (local development):

{
  "mcpServers": {
    "arcadia-finance": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-server/dist/index.js"],
      "env": {
        "RPC_URL_BASE": "https://base-mainnet.g.alchemy.com/v2/your-key"
      }
    }
  }
}

Skills

The skills/ directory contains Claude Code skills that teach AI agents how to use this MCP server effectively. To install a skill, symlink it into your Claude skills directory:

ln -s /path/to/mcp-server/skills/clamm-liquidity ~/.claude/skills/clamm-liquidity

Available skills:

Skill

Description

clamm-liquidity

Concentrated liquidity management: concepts, intent-based automation, and step-by-step workflows.

Reporting Issues

Found a bug, missing feature, or unclear documentation while using this server? Open an issue: https://github.com/arcadia-finance/mcp-server/issues

For AI agents: If you hit a gap during task execution, open an issue with:

  • Tool name and parameters you used

  • What you expected vs what happened

  • The strategy or goal you were trying to execute

Pull requests for documentation fixes are welcome from agents and humans alike. All PRs require human review before merging.

Where to Find Us

Development

yarn dev          # Run with tsx (hot reload)
yarn build        # Compile TypeScript
yarn test         # Run tests
yarn lint         # Lint with ESLint
yarn format       # Check formatting with Prettier

Available Tools

35 tools
dev.sendA
Destructive
Inspect

DEV ONLY — Sign and broadcast an unsigned transaction using a local private key (PK env var). For production, use a dedicated wallet MCP server (Fireblocks, Safe, Turnkey, etc.) instead of this tool. Takes the transaction object returned by any write.* tool and submits it onchain.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget contract address
dataYesEncoded calldata (hex)
valueNoValue in wei (default '0')0
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)

Output Schema

ParametersJSON Schema
NameRequiredDescription
signerYes
statusYes
txHashYes
gasUsedYes
gasLimitYes
blockNumberYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the tool as destructive and not idempotent. The description adds valuable context about the private key source (environment variable) and confirms that it submits onchain. No contradictions with annotations.

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

Conciseness4/5

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

Three concise sentences: one for core purpose, one for usage guidance, one for input context. No fluff, but the structure could be slightly improved by separating the 'DEV ONLY' emphasis more explicitly. Still efficient.

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

Completeness4/5

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

The description covers purpose, input context, and usage constraints. An output schema exists but is not shown; the description does not explain return values, but given the presence of an output schema, this is acceptable. Could mention potential errors or gas implications, but overall adequate for a dev-only tool.

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

Parameters3/5

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

Schema coverage is 100% with each parameter described. The description adds no parameter-specific information beyond the schema, only stating that the tool takes the transaction object from write.* tools, which is implicit from the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool signs and broadcasts unsinged transactions using a local private key, explicitly marking it as DEV ONLY. This disambiguates it from the sibling write.* tools (which generate transactions) and from production wallet servers mentioned as alternatives.

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 advises using this tool only in development and suggests alternative dedicated wallet MCP servers (Fireblocks, Safe, Turnkey) for production. It also specifies that the input is the transaction object from any write.* tool, providing clear when-to-use guidance.

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

read.account.historyA
Read-onlyIdempotent
Inspect

Get historical collateral and debt values for an Arcadia account over time. Returns a time series of snapshots (timestamp, collateral_value, debt_value, net_value). Each value is the account's net value in USD (human-readable, not raw units). Useful for charting account performance over a period.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days of history (default 14)
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
account_addressYesArcadia account address

Output Schema

ParametersJSON Schema
NameRequiredDescription
historyYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already indicate safe, idempotent read. The description adds value by specifying that returned values are in human-readable USD and are net values, providing behavioral context beyond the annotations.

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

Conciseness5/5

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

The description is two sentences, front-loaded with purpose and output, and includes a concrete usage hint. Every sentence adds value without redundancy.

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

Completeness5/5

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

Given the existence of an output schema, the description adequately covers purpose, parameters, and behavioral hints. It provides all needed context for a simple historical data retrieval tool.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already describes all parameters. The description only implicitly references 'days' via 'over a period', adding no new meaning to the parameters.

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

Purpose5/5

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

The description clearly states the action ('Get historical collateral and debt values'), the resource ('Arcadia account'), and the output format ('time series of snapshots'). It distinguishes from siblings like 'read.account.info' by focusing on historical values over time.

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

Usage Guidelines4/5

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

The description includes a use case ('Useful for charting account performance over a period'), which implicitly suggests when to use the tool. However, it does not explicitly mention when not to use it or compare against alternatives like 'read.account.pnl' or 'read.account.info'.

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

read.account.infoA
Read-onlyIdempotent
Inspect

Get full overview of an Arcadia account: health factor, collateral value, debt, deposited assets, liquidation price, and automation status. Health factor = 1 - (used_margin / liquidation_value): 1 = no debt (safest), >0 = healthy, 0 = liquidation threshold, <0 = past liquidation. Higher is safer. The automation object reports which asset managers are enabled (rebalancer, compounder, yield_claimer, cow_swapper, merkl_operator, gas_relayer), each as the position's dex_protocol when protocol-specific or true when account-level, plus inferred_intents (the automations those managers add up to), merkl claim state, and deprecated_managers for any superseded deployment still set on the account. Superseded managers should be cleared: write.account.automations disables them as part of a save. For the full decoded per-manager config use read.asset_manager.current. LP positions in assets[] include a dex_protocol field (slipstream, slipstream_v2, slipstream_v3, staked_slipstream, staked_slipstream_v2, staked_slipstream_v3, uniV3, uniV4). To configure automations, prefer passing the position's id as position_id to write.account.automations, which resolves the protocol and tokens for you; the dex_protocol value is also accepted directly as its protocol param. Slipstream V2 is Base-only. V3 is available on Base and Optimism. Unichain supports only Slipstream V1, uniV3, and uniV4. Numeric fields without a _usd suffix are in the account's numeraire token raw units (divide by 10^decimals: 6 for USDC, 18 for WETH, 8 for cbBTC). Fields ending in _usd are in USD with 18 decimals (divide by 1e18). health_factor is unitless. Asset amounts are raw token units. To list all accounts for a wallet, use read.wallet.accounts.

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
account_addressYesArcadia account address

Output Schema

ParametersJSON Schema
NameRequiredDescription
overviewYes
automationNo
context_notesNo
account_versionYes
liquidation_priceYes

TDQS

A4.6/5.0
Behavior5/5

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

Beyond annotations (readOnly, idempotent, openWorld), the description adds substantial behavioral detail: the health factor formula, unit conversion rules (raw units vs _usd fields with 18 decimals), automation object structure, chain-specific protocol support, and handling of deprecated managers. This gives the agent a rich understanding of what to expect.

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

Conciseness4/5

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

The description is long but front-loaded with the main purpose and then systematically covers field semantics, unit conversions, automation details, and cross-references. Every sentence provides valuable information, though it could be slightly tightened; however, given the tool's complexity, the length is justified.

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?

Even with an output schema present, the description adds essential interpretive context: health factor meaning, unit decimal handling, automation object semantics, and protocol-chain compatibility. It also covers usage guidance and cross-references, making it fully complete for an agent to select and invoke correctly.

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

Parameters3/5

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

Schema coverage is 100% with both parameters already described (chain_id and account_address). The description adds no new parameter-level semantics but does provide chain-specific protocol context (e.g., Slipstream V2 Base-only) that indirectly aids parameter selection. Baseline 3 is appropriate since schema does the heavy lifting.

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 opens with 'Get full overview of an Arcadia account' and lists specific fields (health factor, collateral, debt, assets, liquidation price, automation status), making the purpose precise. This clearly distinguishes it from sibling read tools like read.account.history and read.account.pnl.

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?

Explicitly directs to alternatives: 'For the full decoded per-manager config use read.asset_manager.current' and 'To list all accounts for a wallet, use read.wallet.accounts.' It also references write.account.automations for disabling superseded managers, providing clear when-to-use and when-not-to context.

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

read.account.pnlA
Read-onlyIdempotent
Inspect

Get PnL (cost basis) and yield earned for an Arcadia account. Returns lifetime totals: cost basis vs current value (negative cost_basis = net profit withdrawn), net transfers per token, total yield earned in USD and per token. cost_basis, current_value, cost_diff are in USD (human-readable). Per-token fields (net_transfers, summed_yields_earned) are in raw token units.

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
account_addressYesArcadia account address

Output Schema

ParametersJSON Schema
NameRequiredDescription
yield_earnedYes
pnl_cost_basisYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark it as read-only, non-destructive, idempotent, and open-world. The description adds value by explaining the meaning of negative cost_basis, units (USD vs raw tokens), and that returns are lifetime totals, which are not covered by annotations.

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

Conciseness4/5

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

The description is a single dense paragraph with no filler. It front-loads the purpose and covers key details. While it could benefit from bullet points, it is concise and informative without being verbose.

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 presence of an output schema (not shown), the description need not fully detail return values. It adequately explains the structure of returned data (lifetime totals, cost_diff in USD, per-token fields in raw units) and units. For a read-only tool with good annotations, it is complete.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters, including details for chain_id (enum values and default). The description does not add new information about parameters beyond what the schema provides, so baseline 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 retrieves PnL and yield for an Arcadia account, specifying the returned data (lifetime totals, cost basis vs current value, etc.). It uses specific verbs and resources, and among sibling read tools, it uniquely focuses on PnL, making its purpose distinct.

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 to sibling tools or state when to use this tool over others like read.account.history or read.account.info. Usage context is implied by its specific output, but no explicit guidance on scenarios or exclusions is provided.

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

read.asset.listA
Read-onlyIdempotent
Inspect

List supported collateral assets on Arcadia. Returns compact list (address, symbol, decimals, type). Use search to filter by symbol substring. For USD prices, use read.asset.prices.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoFilter assets by symbol (case-insensitive substring match)
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
assetsYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds value by specifying the return fields (address, symbol, decimals, type) and the search filtering behavior, going beyond annotations.

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

Conciseness5/5

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

Two sentences: first states main function and output, second provides usage guidance. No wasted words; front-loaded with 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 simple list tool with fully documented schema and annotations, the description is adequate. It mentions output fields and directs to alternative tool. Could mention pagination or ordering, but not critical given low 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 description coverage is 100%, so baseline is 3. The description reiterates the search parameter's purpose but does not add new meaning beyond the schema's description for either parameter.

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 lists supported collateral assets on Arcadia and mentions the return fields (address, symbol, decimals, type). It distinguishes from the sibling read.asset.prices by directing users there for USD prices.

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

Usage Guidelines4/5

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

Provides guidance on using the search parameter to filter by symbol and explicitly directs users to read.asset.prices for USD prices. Lacks explicit 'when not to use' but offers a clear alternative.

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

read.asset_manager.currentA
Read-onlyIdempotent
Inspect

Read which asset managers are currently enabled on an account, with their decoded on-chain configuration. Returns the active managers (address, protocol, initiator, decoded strategy metadata, slippage and value-loss caps, fee recipient), the intents they map to, and Merkl claim state including whether reward tokens still need registering. Managers from superseded deployments are listed separately under deprecated: pass their addresses to write.account.automations_delta to clear them, or run write.account.automations which disables them as part of the save. read_ok is false when chain state could not be read, in which case the result is unreliable rather than empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain id: 8453 Base, 130 Unichain, 10 Optimism
account_addressYesArcadia account address

Output Schema

ParametersJSON Schema
NameRequiredDescription
merklNo
accountYes
enabledYes
read_okYes
chain_idYes
warningsYes
deprecatedYes
inferred_intentsYes

TDQS

A4.4/5.0
Behavior5/5

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

The description adds behavioral details beyond annotations: read_ok indicates unreliable results, deprecated managers are listed separately, and reward token registration is mentioned. No contradiction with readOnlyHint or other annotations.

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

Conciseness4/5

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

Every sentence contributes value: purpose, return data, deprecated handling, and error semantics. The description is somewhat dense but appropriately sized for the tool's complexity.

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?

The description covers purpose, return values, edge cases, and remediation paths. With output schema present, this is complete for the tool's 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?

Since the schema covers both parameters (account_address, chain_id) with 100% coverage, the description adds no extra parameter semantics. 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 reads currently enabled asset managers with decoded on-chain configuration. It distinguishes from related tools by focusing on 'current' managers and providing detailed return contents.

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

Usage Guidelines4/5

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

It provides actionable context for handling deprecated managers through related write tools, and explains the read_ok flag's meaning. However, it doesn't explicitly compare with read.asset_manager.intents, so it lacks explicit when-not-to-use guidance.

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

read.asset_manager.intentsA
Read-onlyIdempotent
Inspect

List the automation intents Arcadia supports, with the parameters each one accepts. Pass account_address to also get per-account availability: which intents can be enabled right now and, for any that cannot, the compatibility rule blocking it. Pass position_id as well to scope availability to one LP position. Without account_address this returns the catalog only.

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain id: 8453 Base, 130 Unichain, 10 Optimism
position_idNoLP position (NFT) id to scope availability to. Requires account_address.
account_addressNoArcadia account address. Include it to get live per-account availability.

Output Schema

ParametersJSON Schema
NameRequiredDescription
usageYes
automationsYes
shared_paramsYes
availability_errorNo

TDQS

A4.7/5.0
Behavior5/5

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

While annotations already indicate read-only, idempotent, and non-destructive behavior, the description adds valuable conditional behavior: it explains what happens when account_address or position_id are passed, including the return of compatibility rules for blocked intents. It also notes that position_id requires account_address. This goes beyond the annotations and gives the agent a clear model of the tool's behavior.

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

Conciseness5/5

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

The description is three sentences long and front-loads the primary purpose. Each sentence adds distinct value without redundancy: the first defines the core function, the second explains the optional enhancement, and the third clarifies the default behavior. There is no filler or unnecessary detail.

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 has three optional parameters and conditional behavior, the description fully covers the usage space and output expectations. It mentions the compatibility-rule detail and the catalog-only default. Since an output schema exists, return values are adequately documented elsewhere. The description does not need to mention return format or additional details, making it complete for the tool's complexity.

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 input schema already provides 100% coverage with descriptions for all three parameters, so the baseline is 3. The description enriches the semantics by explaining the purpose of account_address (per-account availability with compatibility rules) and the effect of position_id (scope to one LP position). It also clarifies the default behavior when account_address is omitted, which adds meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's main function: 'List the automation intents Arcadia supports, with the parameters each one accepts.' It uses a specific verb ('list') and identifies a distinct resource (automation intents) that separates it from sibling tools focused on accounts, pools, assets, and strategies. The conditional variants (with account_address, position_id) further clarify the exact scope of the operation.

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

Usage Guidelines4/5

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

The description provides clear context for when to use different parameter combinations: without account_address it returns the catalog only, with account_address it shows per-account availability and compatibility rules, and with position_id it scopes to one LP position. It does not explicitly name alternative tools or exclusions, but the guidance is specific enough for an agent to decide correctly. Sibling tool names are available in context but not referenced in the description.

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

read.asset.pricesA
Read-onlyIdempotent
Inspect

Get USD prices for one or more asset addresses. Pass a single address or comma-separated addresses. Returns a price map keyed by address.

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
asset_addressesYesSingle address or comma-separated addresses for price lookup

Output Schema

ParametersJSON Schema
NameRequiredDescription
pricesYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, indicating a safe, idempotent read operation. The description adds the return format (price map keyed by address) but no additional behavioral traits like rate limits or auth requirements.

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

Conciseness5/5

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

The description is a single sentence followed by a usage clarification. It is front-loaded, concise, and every word adds value. No unnecessary information.

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 simple purpose, rich annotations, fully described parameters in schema, and presence of an output schema (not shown but signaled), the description sufficiently explains functionality, input format, and return structure for correct agent 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?

Schema coverage is 100%, with descriptions for both parameters. The description does not add any new meaning beyond what the schema provides. 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 name 'read.asset.prices' and title 'Get Asset Prices' clearly indicate the action and resource. The description states 'Get USD prices for one or more asset addresses' with specific verb and resource, distinguishing it from sibling tools like 'read.asset.list' or 'read.wallet.balances'.

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 instructs how to pass addresses ('single or comma-separated'), implying usage for price lookups. However, it lacks explicit guidance on when to use vs. alternatives or when not to use it (e.g., for historical prices). The context from sibling tools partially fills this gap.

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

read.guidesA
Read-onlyIdempotent
Inspect

Get Arcadia workflow guides and reference documentation. Call this before multi-step workflows (opening LP positions, enabling automation, closing positions) or when you need contract addresses, asset manager addresses, or strategy parameters. Topics: overview (addresses + tool catalog), automation (intent-based automation setup), strategies (step-by-step templates), selection (how to evaluate and parameterize strategies).

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNooverview = addresses + tool catalog, automation = intent-based automation setup, strategies = step-by-step LP templates, selection = pool evaluation + leverage sizing

Output Schema

ParametersJSON Schema
NameRequiredDescription
topicYes
contentYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds usage context but not deeper behavioral details (e.g., pagination, response shape) — though an output schema exists, so the burden is reduced. It does not contradict the annotations.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the core purpose, and efficiently packs in usage timing and topic enumeration. No fluff or redundant phrases; every sentence earns its place.

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

Completeness5/5

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

Given the tool's simplicity (one optional parameter, full schema coverage, output schema present, and strong annotations), the description provides sufficient context: it explains the tool's role as a pre-workflow guide, when to invoke it, and what topics are available. There are no significant gaps.

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%: the only parameter 'topic' has a detailed enum description in the schema. The tool description largely repeats the same topic breakdown (overview, automation, strategies, selection) without adding much semantic value beyond what the schema already provides. The baseline of 3 applies because the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb and resource: 'Get Arcadia workflow guides and reference documentation.' It distinguishes itself from sibling data-reading tools by positioning itself as a documentation/reference resource, and it enumerates concrete topics (overview, automation, strategies, selection) that clarify its scope.

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

Usage Guidelines4/5

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

The description provides explicit usage context: 'Call this before multi-step workflows ... or when you need contract addresses, asset manager addresses, or strategy parameters.' This gives clear guidance on when to use the tool, though it does not explicitly mention when not to use it or name alternative tools, stopping 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.

read.point_leaderboardA
Read-onlyIdempotent
Inspect

Get the Arcadia points leaderboard (paginated). For a specific wallet's points balance, use read.wallet.points.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax leaderboard entries to return (default 25)
offsetNoSkip first N leaderboard entries for pagination

Output Schema

ParametersJSON Schema
NameRequiredDescription
limitYes
totalYes
offsetYes
leaderboardYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, covering safety and side effects. The description adds the pagination behavior (offset/limit) beyond annotations.

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

Conciseness5/5

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

Two sentences with no redundancy: the first states purpose and pagination, the second provides the alternative. Front-loaded and efficient.

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 rich annotations, complete schema documentation, and an output schema, the description covers all necessary context: purpose, pagination, and alternative tool reference.

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

Parameters4/5

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

Schema coverage is 100% with detailed parameter descriptions. The description reinforces pagination context by explicitly mentioning 'paginated', adding slight value over schema alone.

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

Purpose5/5

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

The description clearly states 'Get the Arcadia points leaderboard (paginated)' with a specific verb and resource, and explicitly distinguishes from the sibling tool 'read.wallet.points' for wallet-specific queries.

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 directs agents to use 'read.wallet.points' for individual wallet balances, providing clear when-to-use and when-not-to-use guidance.

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

read.pool.infoA
Read-onlyIdempotent
Inspect

Get detailed info for a single lending pool including APY history over time. Useful for analyzing rate trends and comparing pools. Use read.pool.list to discover pool addresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days of APY history
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
pool_addressYesPool address

Output Schema

ParametersJSON Schema
NameRequiredDescription
poolYes
apy_historyYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Description adds context about APY history but no additional behavioral disclosures beyond that.

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

Conciseness5/5

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

Two sentences, front-loaded with main purpose, no wasted words. Highly concise and structured.

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?

Description is sufficient given the presence of output schema. It covers purpose, usage, and relationship to siblings.

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 description does not need to add parameter info. The description mentions APY history but does not elaborate on parameters beyond schema.

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

Purpose5/5

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

Description clearly states the tool gets detailed info for a single lending pool including APY history. It distinguishes from sibling read.pool.list which discovers pool addresses.

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?

Explicitly states when to use (analyzing rate trends, comparing pools) and provides alternative (use read.pool.list to discover pool addresses).

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

read.pool.listA
Read-onlyIdempotent
Inspect

List all Arcadia lending pools: TVL, utilization, available liquidity. Key fields: interest_rate = current borrow cost, lending_apy = lender yield. All rates are decimal fractions (1.0 = 100%, 0.06 = 6%). For APY history on a specific pool, use read.pool.info.

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)

Output Schema

ParametersJSON Schema
NameRequiredDescription
poolsYes
context_notesNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds that it lists all pools with no filtering, and explains decimal fraction output. No contradictions; adds useful behavioral context beyond annotations.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and key fields, no redundant information. Every sentence adds value.

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

Completeness5/5

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

Given the presence of an output schema and simple parameter, the description covers purpose, key field semantics, decimal format, and sibling reference. No gaps for a list tool.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter chain_id, including chain IDs and default. The description adds no further parameter information, which is acceptable per guidelines (baseline 3).

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 'List all Arcadia lending pools' with specific fields (TVL, utilization, available liquidity). It distinguishes from sibling read.pool.info by directing users to that tool for APY history.

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?

Explicitly provides when-to-use (list all pools) and when-not-to-use (for APY history on a specific pool, use read.pool.info). This is a clear alternative and exclusion.

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

read.strategy.infoA
Read-onlyIdempotent
Inspect

Get full detail for a specific LP strategy by ID — includes APY per range width (narrower range = higher APY but more rebalancing cost/risk), pool info, and configuration. Use read.strategy.list to discover strategy IDs. All APY values are decimal fractions (1.0 = 100%, 0.05 = 5%).

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
strategy_idYesStrategy ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint, covering safety and idempotency. Description adds valuable context about APY values being decimal fractions, which aids correct interpretation of output.

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

Conciseness5/5

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

Two concise sentences cover purpose, contents, usage tip, and important decimal clarification. No extraneous text; front-loaded with essential information.

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 presence of an output schema, the description sufficiently covers purpose, input semantics, and a key output detail (decimal format). It also connects to the sibling tool for ID discovery, making it complete for an agent to use correctly.

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

Parameters3/5

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

Schema description coverage is 100%; both parameters have adequate descriptions. The tool description reinforces strategy_id but adds no new semantic information beyond the schema.

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

Purpose5/5

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

The description clearly states the tool retrieves full details for a specific LP strategy by ID, listing included elements (APY per range width, pool info, configuration). It differentiates from sibling read.strategy.list by noting that tool is for discovering IDs.

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?

Explicitly instructs to use read.strategy.list to discover strategy IDs, providing clear guidance on prerequisite and sibling tool usage.

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

read.strategy.listA
Read-onlyIdempotent
Inspect

Get Arcadia LP strategies. Use featured_only=true for curated top strategies (recommended first call). Returns a paginated list with 7d avg APY for each strategy's default range. Increase limit or use offset for pagination. All APY values are decimal fractions (1.0 = 100%, 0.05 = 5%). For full detail on a specific strategy (APY per range width), use read.strategy.info.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax strategies to return (default 25)
offsetNoSkip first N strategies for pagination
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
featured_onlyNoReturn only featured/curated strategies (recommended)

Output Schema

ParametersJSON Schema
NameRequiredDescription
limitYes
totalYes
offsetYes
strategiesYes
context_notesNo

TDQS

A4.7/5.0
Behavior5/5

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

Adds beyond annotations: paginated list, 7d avg APY per default range, APY decimal fractions. No contradiction with readOnlyHint etc.

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

Conciseness5/5

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

Two efficient sentences, front-loaded purpose, no redundancy. Every sentence adds information.

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?

Complete for a listing tool with output schema: covers pagination, APY format, and sibling for deeper details.

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

Parameters4/5

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

Schema coverage 100%. Description adds value: recommends featured_only, explains pagination with limit/offset. Chain_id not elaborated but schema sufficient.

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?

Clear verb 'Get' + resource 'Arcadia LP strategies'. Distinguishes from sibling 'read.strategy.info' which provides full detail on a specific strategy.

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?

Explicit guidance: 'Use featured_only=true for curated top strategies (recommended first call)' and pagination instructions. Implicit when-not by directing to sibling for details.

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

read.strategy.recommendationA
Read-onlyIdempotent
Inspect

Get a rebalancing recommendation for an Arcadia account — suggests asset changes to optimize yield. Uses 1d APY (not 7d like read.strategy.list), so recommended strategies may differ from the list ranking. APY values are decimal fractions (0.05 = 5%). weekly_earning_difference is in USD.

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
account_addressYesArcadia account address

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds behavioral context: uses 1d APY, output format details. No contradictions, and the description complements annotations well.

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

Conciseness5/5

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

Three concise sentences, each adding value: purpose, usage distinction, and output format hints. No wasted words.

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

Completeness5/5

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

Given the existence of an output schema, the description adequately covers return value hints (APY decimal, USD unit). Distinguishes from sibling and provides enough context for a simple two-parameter 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?

Input schema has 100% coverage with clear descriptions for both parameters (account_address, chain_id). Description does not add new meaning beyond what schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states it gets a rebalancing recommendation for an Arcadia account, suggesting asset changes to optimize yield. Distinguishes from sibling read.strategy.list by specifying different APY period (1d vs 7d).

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?

Explicitly says when to use this tool vs read.strategy.list, explaining that recommended strategies may differ due to APY basis. Also provides format hints for output values (APY decimal, USD).

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

read.wallet.accountsA
Read-onlyIdempotent
Inspect

List all Arcadia accounts owned by a wallet address. Returns a summary of each account (address, name). Call read.account.info with a specific account_address for full details like health factor, collateral, and debt.

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
wallet_addressYesWallet address to list accounts for

Output Schema

ParametersJSON Schema
NameRequiredDescription
accountsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare it as read-only, non-destructive, idempotent, and open-world. The description adds context about return format and the pattern to get full details, which is valuable beyond the annotations.

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

Conciseness5/5

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

Two concise sentences. First sentence states the core function, second provides usage guidance. No extraneous info.

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?

With annotations and output schema present, the description covers purpose, return type, and links to a more detailed tool. It is complete for the agent to select and invoke 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?

Input schema has 100% coverage with clear descriptions for both parameters. The description doesn't add significant meaning beyond schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it lists accounts owned by a wallet address and returns a summary (address, name). It distinguishes from read.account.info by indicating that tool provides full details.

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

Usage Guidelines4/5

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

The description explicitly tells when to use this tool (for summary) and when to use read.account.info (for full details). No exclusions but clear context.

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

read.wallet.allowancesA
Read-onlyIdempotent
Inspect

Check ERC20 token allowances for a spender address. Use before write.wallet.approve to avoid redundant approvals — skip approving if the current allowance is already sufficient.

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
owner_addressYesToken owner address (the wallet granting approval)
spender_addressYesSpender address to check allowance for (e.g. Arcadia account address)
token_addressesYesERC20 token contract addresses to check

Output Schema

ParametersJSON Schema
NameRequiredDescription
tokensYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description's 'Check' aligns but doesn't add behavioral insight beyond what annotations provide. No contradiction, but no extra context like rate limits or side effects.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and actionable guidance. No wasted words.

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

Completeness5/5

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

Given the existence of output schema, high parameter coverage, and annotations, the description is sufficient. It covers the essential use case and relationship to a sibling tool, leaving no gaps for 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?

Schema coverage is 100% with parameter descriptions. The description does not add additional meaning beyond the schema; it only mentions 'spender address' generically, not enhancing parameter understanding.

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

Purpose5/5

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

The description clearly states the tool checks ERC20 token allowances for a spender address, which is a specific verb and resource. It distinguishes from sibling read tools like read.wallet.balances by focusing on allowances.

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 instructs to use this tool before write.wallet.approve to avoid redundant approvals, providing a clear when-to-use scenario and naming the alternative tool.

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

read.wallet.balancesA
Read-onlyIdempotent
Inspect

Get native ETH and ERC20 token balances for a wallet address. Reads directly from chain via RPC multicall. Use before write.account.add_liquidity or write.account.deposit to verify the wallet has sufficient tokens. Returns both raw balance (smallest unit/wei) and formatted (human-readable) per token.

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
wallet_addressYesWallet address to check balances for
token_addressesYesERC20 token contract addresses to check

Output Schema

ParametersJSON Schema
NameRequiredDescription
nativeYes
tokensYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, idempotent, and open-world behavior. The description adds value by explaining the on-chain RPC multicall method and the dual return format (raw and human-readable), which are not captured by annotations.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the main action, and every sentence provides essential information without redundancy.

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

Completeness4/5

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

Given the presence of an output schema (not shown but indicated), the description sufficiently explains the return values. It could include more detail on edge cases or errors, but overall it is adequate for the tool's 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?

The input schema has 100% description coverage for all three parameters, so the description adds minimal extra semantics. It does mention the return format but does not elaborate on parameter constraints beyond the schema.

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

Purpose5/5

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

The description clearly states it retrieves native ETH and ERC20 token balances for a wallet, with a specific method (RPC multicall). This distinguishes it from sibling tools like read.wallet.accounts or read.wallet.allowances.

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 recommends using this tool before write.account.add_liquidity or write.account.deposit to verify sufficient tokens. This provides clear context, though it does not include explicit when-not-to-use scenarios.

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

read.wallet.pointsA
Read-onlyIdempotent
Inspect

Get Arcadia points balance for a specific wallet address.

ParametersJSON Schema
NameRequiredDescriptionDefault
wallet_addressYesWallet address to get points for

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already provide readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Description adds no behavioral traits beyond the resource specifics, so minimal added value.

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

Conciseness5/5

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

Single sentence, front-loaded with verb and resource, no wasted words.

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

Completeness5/5

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

For a simple read tool with one required parameter and an output schema (assumed to document return values), the description is complete and sufficient.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter. Description does not add any meaning beyond what the schema property description 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?

Clearly states action 'Get' and resource 'Arcadia points balance for a specific wallet address'. Distinguishes from sibling 'read.point_leaderboard' which likely returns leaderboard data.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'read.point_leaderboard'. Description only states what it does, not context or exclusions.

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

write.account.add_liquidityA
Idempotent
Inspect

Multi-step flash-action: atomically combines [deposit from wallet] + [use account collateral] + [swap to optimal ratio] + [mint LP] + [borrow if leveraged] in ONE transaction. Do NOT call write.account.deposit separately. Capital sources: wallet tokens (deposits array), existing account collateral (use_account_assets=true), or both. Check allowances first (read.wallet.allowances), then approve if needed (write.wallet.approve). Supports depositing multiple tokens and minting multiple LP positions in one tx. Works with both margin accounts (can leverage) and spot accounts (no leverage). For workflows, call read.guides('strategies'). The returned calldata is time-sensitive — sign and broadcast within 30 seconds. If the transaction reverts due to price movement, rebuild and sign again immediately (retry at least once before giving up). Response includes tenderly_sim_url and tenderly_sim_status for pre-broadcast validation. expected_value_change is in raw units of the account's numeraire token (6 decimals for USDC, 18 for WETH). Negative = cost to open, positive = value gained. Compare before.total_account_value and after.total_account_value for the full picture.

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
depositsNoWallet tokens to deposit. Approve each token first (write.wallet.approve). Omit to use only account collateral.
leverageNo0 = no borrow, 2 = 2x leverage. Margin accounts only.
slippageNoBasis points, 100 = 1%
positionsYesLP positions to mint. For a single position, pass one entry.
wallet_addressYesWallet address of the account owner
account_addressYesArcadia account address
use_account_assetsNoIf true, use ALL existing account collateral for LP minting. Fetched automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
afterNo
beforeNo
descriptionNo
transactionYes
tenderly_sim_urlNo
tenderly_sim_statusNo
expected_value_changeNo

TDQS

A4.8/5.0
Behavior5/5

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

Discloses time-sensitive calldata (30 sec), retry logic on revert, tenderly simulation URLs, expected_value_change format, and full context on capital sources. Adds significant behavioral context beyond annotations like idempotentHint.

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 detailed but efficiently structured with a clear lead and inline explanations. Some redundancy could be trimmed, but overall it earns its length by covering essential operational details.

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 complexity (8 parameters, multi-step, time-sensitive, leverage options), the description covers all necessary aspects: capital sources, return fields, error handling, retry, and validation. With an output schema present, it explains return fields like tenderly_sim_url and expected_value_change comprehensively.

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

Parameters4/5

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

Schema coverage is 100%, so baseline 3. Description adds value by explaining capital sources (deposits vs account assets), tick optionality, and leverage semantics. Provides context like 'Omit to use only account collateral' and 'Margin accounts only' for leverage.

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

Purpose5/5

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

The description clearly states it is a 'multi-step flash-action' that atomically combines deposit, swap, mint LP, and borrow in one transaction. It explicitly distinguishes from siblings by saying 'Do NOT call write.account.deposit separately.'

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?

Provides explicit when-to-use guidance: capital sources, allowances, approval steps. Advises to call read.guides('strategies') for workflows. Clearly states when not to use alternatives like deposit.

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

write.account.automationsA
Idempotent
Inspect

Configure an account's automations from a list of intents and return the unsigned setAssetManagers transaction. The backend resolves which asset managers each intent needs, validates that the combination is compatible, encodes the metadata and builds the calldata, so you describe the desired outcome rather than the contracts.

With mode 'save' (the default) the intents array is the complete desired state: the backend diffs it against what is currently enabled, so any automation you leave out is DISABLED by the returned transaction. Pass a single intent with enabled: false to turn everything off.

Mode 'preview' validates and resolves the intents WITHOUT reading chain state and returns no transaction, because its calldata carries no disable entries and would only partially apply the state. Use it to check a combination is legal or to show a plan; use 'save' to get something signable. To toggle one automation without restating the rest, use write.account.automations_delta.

Intents:

  • compound_fees: reinvest earned fees/rewards back into the LP. Optional 'tokens' scopes it per yielding token. A staked reward that is not a pool token is swapped in via CowSwap automatically.

  • claim_rewards: claim yield out. config.mode as_earned pays the tokens as-is, convert_to swaps them to config.buy_token via CowSwap. config.convert_tokens converts only a subset and claims the rest as-earned. config.destination account or wallet.

  • add_to_lp: fold idle pool-token balances (deposits, rebalance leftovers) back into the LP. Opt-in per token.

  • claim_merkl: auto-claim Merkl incentive rewards. Independent of the compounder/claimer/cowswapper triad and needs no position context.

  • rebalance: reposition the LP. strategy out_of_range (default), take_profit (runs on the dedicated profit-taker contract), or protocol_owned_liquidity.

Pass position_id (from assets[] in read.account.info) and the backend fills in protocol, is_staked, token0, token1 and reward_tokens for you; anything you pass explicitly wins. claim_merkl needs no position context.

Rules the backend enforces (a violation is returned as an error, never written on-chain):

  • Every yielding token must be assigned to exactly one of compound_fees or claim_rewards. Scoping one to a subset without covering the rest is rejected, and no token may be in both.

  • A wallet or custom-recipient payout requires a pure as-earned claim: nothing converted, and every yielding token claimed. Converts settle in the account.

  • convert_tokens must be a subset of the claimed tokens, and buy_token cannot be a compounded token, a converted token, or an add_to_lp folded token.

  • Each intent kind may appear only once, and a token list must not be empty or name a token the position does not yield.

Returns { valid, errors, warnings, human_summary, plan, diff, transaction }. When a compatibility rule fires the call returns an error and no transaction: read errors[].reason, adjust the intents and retry. There is deliberately no transaction when the account already matches the request (no_changes_needed), when the Tenderly simulation predicts a revert (an error), or in preview mode (preview_only). Call read.asset_manager.intents first to see which intents this account can enable.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNosave diffs against on-chain state and returns a signable transaction that also disables anything omitted. preview resolves and validates only, returning a plan and no transaction.save
ownerNoAccount owner EOA. Used to resolve wallet payout targets.
token0NoPool token0 address.
token1NoPool token1 address.
intentsYesComplete desired automation state. In save mode anything omitted is disabled, so include every automation to keep. A single intent with enabled: false disables all automations.
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
protocolNoPosition's DEX protocol. Only needed when position_id is omitted. Accepts the dex_protocol values the read tools return (slipstream, staked_slipstream_v3, uniV3, ...), which imply is_staked, as well as the canonical slipstream_v1 / uniswap_v3 spellings.
is_stakedNoWhether the LP position is staked. Implied by a staked_* protocol value.
position_idNoLP position (NFT) id, as listed in assets[] by read.account.info. Supply this and the backend fetches protocol, staked flag, tokens and reward tokens for you. Strongly preferred over passing the position fields by hand.
reward_tokensNoStaking reward token addresses.
account_addressYesArcadia account address

Output Schema

ParametersJSON Schema
NameRequiredDescription
diffNo
planYes
validYes
errorsYes
warningsYes
descriptionYes
transactionNo
preview_onlyNo
human_summaryYes
simulation_urlNo
no_changes_neededNo
tenderly_sim_statusNo

TDQS

A5/5.0
Behavior5/5

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

Adds substantial behavioral context beyond annotations: save mode disables omitted intents, preview mode returns no transaction, errors are never written on-chain, and no transaction is produced for no_changes_needed, simulated reverts, or preview_only. No contradiction with annotations; the diff-based save mode supports the idempotentHint.

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?

Long but tightly organized with an overview, mode explanation, bulleted intent definitions, and numbered backend rules. It is front-loaded with the core action and uses headers/bullets so an agent can scan efficiently without redundant prose.

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?

Covers workflow, error handling, return-value cases, prerequisites, and alternatives despite the rich output schema. It includes all needed context to invoke correctly, including the recommendation to call read.asset_manager.intents before use.

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?

Even though the schema covers 100% of parameters, the description enriches key parameters: mode's save-vs-preview consequences, position_id's backend auto-fill, intent-kind semantics, and the compatibility rules governing tokens/convert_tokens/destination. This far exceeds the baseline 3 for 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 first sentence states a specific action ('Configure an account's automations ... return the unsigned setAssetManagers transaction') with a clear resource and outcome. It also distinguishes itself from the sibling tool write.account.automations_delta by explicitly naming it for single toggles.

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?

Provides explicit when-to-use guidance: 'save' for a signable state, 'preview' for validation/planning, and write.account.automations_delta as the alternative for toggling one automation. It also instructs the agent to call read.asset_manager.intents first and explains when no transaction is returned.

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

write.account.automations_deltaA
Idempotent
Inspect

Apply an explicit change to an account's automations and return the unsigned setAssetManagers transaction. Unlike write.account.automations this is a delta, not a full desired state: automations you do not mention are left untouched. Use it to switch one automation on or off without restating the others.

The enable array takes intents to switch on (same shapes as write.account.automations). To turn an automation OFF, call read.asset_manager.current, take the address of the manager serving it, and pass that address in the disable array: an intent with enabled: false in enable is rejected because the backend would ignore it. Superseded or unreadable managers still set on the account are force-disabled in the same transaction regardless.

Intents:

  • compound_fees: reinvest earned fees/rewards back into the LP. Optional 'tokens' scopes it per yielding token. A staked reward that is not a pool token is swapped in via CowSwap automatically.

  • claim_rewards: claim yield out. config.mode as_earned pays the tokens as-is, convert_to swaps them to config.buy_token via CowSwap. config.convert_tokens converts only a subset and claims the rest as-earned. config.destination account or wallet.

  • add_to_lp: fold idle pool-token balances (deposits, rebalance leftovers) back into the LP. Opt-in per token.

  • claim_merkl: auto-claim Merkl incentive rewards. Independent of the compounder/claimer/cowswapper triad and needs no position context.

  • rebalance: reposition the LP. strategy out_of_range (default), take_profit (runs on the dedicated profit-taker contract), or protocol_owned_liquidity.

Pass position_id (from assets[] in read.account.info) and the backend fills in protocol, is_staked, token0, token1 and reward_tokens for you; anything you pass explicitly wins. claim_merkl needs no position context.

Rules the backend enforces (a violation is returned as an error, never written on-chain):

  • Every yielding token must be assigned to exactly one of compound_fees or claim_rewards. Scoping one to a subset without covering the rest is rejected, and no token may be in both.

  • A wallet or custom-recipient payout requires a pure as-earned claim: nothing converted, and every yielding token claimed. Converts settle in the account.

  • convert_tokens must be a subset of the claimed tokens, and buy_token cannot be a compounded token, a converted token, or an add_to_lp folded token.

  • Each intent kind may appear only once, and a token list must not be empty or name a token the position does not yield.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerNoAccount owner EOA. Used to resolve wallet payout targets.
enableNoIntents to switch on. Leave empty when only disabling. This array cannot turn anything off: an entry with enabled: false is rejected, use `disable` instead.
token0NoPool token0 address.
token1NoPool token1 address.
disableNoAsset-manager addresses to switch off, as returned by read.asset_manager.current.
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
protocolNoPosition's DEX protocol. Only needed when position_id is omitted. Accepts the dex_protocol values the read tools return (slipstream, staked_slipstream_v3, uniV3, ...), which imply is_staked, as well as the canonical slipstream_v1 / uniswap_v3 spellings.
is_stakedNoWhether the LP position is staked. Implied by a staked_* protocol value.
position_idNoLP position (NFT) id, as listed in assets[] by read.account.info. Supply this and the backend fetches protocol, staked flag, tokens and reward tokens for you. Strongly preferred over passing the position fields by hand.
reward_tokensNoStaking reward token addresses.
account_addressYesArcadia account address

Output Schema

ParametersJSON Schema
NameRequiredDescription
diffNo
planYes
validYes
errorsYes
warningsYes
descriptionYes
transactionNo
preview_onlyNo
human_summaryYes
simulation_urlNo
no_changes_neededNo
tenderly_sim_statusNo

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations, the description discloses key behaviors: it returns an unsigned transaction (not an on-chain execution), disable entries with enabled:false are rejected, superseded/unreadable managers are force-disabled in the same transaction, and validated rules are returned as errors never written on-chain. It also discloses implicit CowSwap swaps for reward tokens. This far exceeds the minimal readOnly/destructive/idempotent flags in the annotations.

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

Conciseness4/5

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

The description is long but well-structured: core purpose first, then enable/disable mechanics, then per-intent bullet summaries, then position_id guidance, then backend-enforced rules. It is appropriately sized for a complex tool, though a few points are duplicated (e.g., 'claim_merkl needs no position context' appears twice) and the intent bullet summaries partially repeat schema descriptions. Overall it is readable and front-loaded.

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 complexity, the output schema existing, and the rich input schema, the description is exceptionally complete. It covers transaction return type, error behavior, how to disable, force-disabling, the distinction between full-state and delta, all intent kinds, positional context handling, and hard backend rules. An agent has all necessary context to invoke the tool correctly without reading external documentation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful orientation beyond the schema: it clarifies that the enable array cannot turn anything off, that the disable array takes addresses from read.asset_manager.current, and that position_id is strongly preferred and auto-fetches protocol/token context. It also explains shared constraints like the 'pure as-earned rule' and the 'every yielding token must be assigned' rule. This adds value, though the schema already contains detailed per-field descriptions.

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 opens with a specific verb and resource: 'Apply an explicit change to an account's automations and return the unsigned setAssetManagers transaction.' It immediately distinguishes itself from the sibling write.account.automations by stating this is a delta, not a full desired state, and that unmentioned automations are left untouched. This clearly communicates both what the tool does and how it differs from similar tools.

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 gives explicit when-to-use guidance: 'Use it to switch one automation on or off without restating the others.' It also explains the alternative (write.account.automations) and describes the exact workflow for disabling, including calling read.asset_manager.current to fetch manager addresses. It further clarifies which inputs are rejected and how force-disabling works, giving the agent clear decision rules.

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

write.account.borrowA
Idempotent
Inspect

Build an unsigned transaction to borrow from an Arcadia lending pool against account collateral. NOT needed for leveraged LP — write.account.add_liquidity handles borrowing internally when leverage > 0. Only works with margin accounts (created with a creditor/lending pool). Spot accounts (no creditor) cannot borrow — the tool will validate this and reject. Before borrowing, verify the account has positive free margin via read.account.info: collateral_value must exceed used_margin.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesAddress to receive borrowed tokens
amountYesAmount in raw units
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
pool_addressYesLending pool: LP_WETH=0x803ea69c7e87D1d6C86adeB40CB636cC0E6B98E2, LP_USDC=0x3ec4a293Fb906DD2Cd440c20dECB250DeF141dF1, LP_CBBTC=0xa37E9b4369dc20940009030BfbC2088F09645e3B
account_addressYesArcadia account address used as collateral

Output Schema

ParametersJSON Schema
NameRequiredDescription
descriptionYes
transactionYes
predicted_account_addressNo

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate idempotent, non-destructive. Description adds that tool validates account type and rejects spot accounts, and requires positive free margin. No contradiction with annotations.

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

Conciseness5/5

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

Four efficient sentences: purpose, exclusion, requirement, precondition. No redundant 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?

With output schema present, description covers all necessary context: purpose, constraints, prerequisites, and validation behavior. No gaps.

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

Parameters4/5

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

Schema coverage is 100%. Description adds concrete pool addresses beyond schema, which aids selection. Amount 'in raw units' is already in schema.

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

Purpose5/5

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

Clearly states 'Build an unsigned transaction to borrow from an Arcadia lending pool against account collateral.' Distinguishes from sibling by noting it's not needed for leveraged LP, which uses write.account.add_liquidity internally.

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?

Explicitly states when not to use (leveraged LP handled by add_liquidity), constraints (only margin accounts), and precondition (verify free margin via read.account.info).

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

write.account.closeA
Idempotent
Inspect

Atomic flash-action that closes an Arcadia account position in ONE transaction. Combines up to 3 steps atomically: [burn LP position] + [swap all tokens to a single target asset] + [repay debt]. Tokens remain in the account after closing — use write.account.withdraw to send them to your wallet.

ALWAYS try this tool first when closing/exiting a position. Only fall back to individual tools (write.account.remove_liquidity, write.account.swap, write.account.deleverage, write.account.withdraw) if this tool fails.

Supports two modes:

  • close_lp_only=true: Burns LP and leaves underlying tokens in the account. Use as step 1 if the full close fails, then call again with close_lp_only=false to swap+repay the remaining tokens.

  • close_lp_only=false (default): Full atomic close — burns LP, swaps everything to receive_assets, repays debt. Remaining tokens stay in the account. Follow up with write.account.withdraw to send to wallet. Supports multiple receive assets with custom distribution.

The returned calldata is time-sensitive — sign and broadcast within 30 seconds. If the transaction reverts due to price movement, rebuild and sign again immediately (retry at least once before giving up). Response includes tenderly_sim_url and tenderly_sim_status for pre-broadcast validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetsYesAssets to close/sell from the account. IMPORTANT: For LP positions (NFTs), always use amount='1' and decimals=1 — do NOT pass the liquidity amount. asset_address = position manager, asset_id = NFT token ID. For ERC20 tokens: asset_id = 0, amount = full balance in raw units, decimals = real token decimals. Get all values from read.account.info.
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
slippageNoBasis points, 100 = 1%
close_lp_onlyNotrue = only burn LP positions, leave underlying tokens in account. false = full close (burn + swap + repay).
receive_assetsNoTarget assets to receive after closing. For a single target, pass one entry. Required when close_lp_only=false. Omit for close_lp_only=true.
account_addressYesArcadia account address

Output Schema

ParametersJSON Schema
NameRequiredDescription
afterNo
beforeNo
descriptionNo
transactionYes
tenderly_sim_urlNo
tenderly_sim_statusNo
expected_value_changeNo

TDQS

A5/5.0
Behavior5/5

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

Discloses atomic nature (3-step process), token remain after closing, time-sensitive calldata (30s), retry advice, and tenderly simulation. No contradiction with annotations; aligns with idempotentHint=true allowing retries.

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?

Well-structured with sections, bullet points, and clear instructions. Every sentence provides value; no redundancy. Efficiently communicates complex information.

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?

Covers all aspects: purpose, modes, parameters, output (time-sensitive calldata, simulation), retry logic, and relationship to sibling tools. Complete given complexity and presence of output schema.

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?

Schema coverage is 100% but description adds critical context beyond schema: explains asset parameter for LP vs ERC20, amounts, decimals, and when receive_assets is required. Provides practical usage tips.

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

Purpose5/5

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

Clearly states 'Atomic flash-action that closes an Arcadia account position in ONE transaction', specifying verb and resource. Distinguishes from sibling tools by advising to try this first before falling back to individual tools.

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?

Explicitly tells when to use: 'ALWAYS try this tool first when closing/exiting a position.' Provides fallback strategy: 'Only fall back to individual tools if this tool fails.' Explains two modes and when to use each.

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

write.account.createA
Idempotent
Inspect

Build an unsigned transaction to create a new Arcadia account via the Factory contract. account_version: 3 with creditor → V3 margin account (can borrow/leverage). account_version: 0 or 4 → V4 spot account (no borrowing, creditor is ignored, any ERC20 allowed). Returns the predicted account address (deterministic via CREATE2).

ParametersJSON Schema
NameRequiredDescriptionDefault
saltYesUnique salt (uint32) for deterministic account address
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
creditorNoLending pool address for V3 margin account. Ignored for V4 spot accounts (version 0 or 4).
wallet_addressYesWallet address that will send the transaction (tx.origin, needed for address prediction)
account_versionNoAccount version: 0 = latest (V4 spot), 3 = margin (can borrow). 1/2 = legacy.

Output Schema

ParametersJSON Schema
NameRequiredDescription
descriptionYes
transactionYes
predicted_account_addressNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate idempotentHint=true and destructiveHint=false. The description confirms it builds an unsigned transaction (not executed), supporting idempotence. It also explains that creditor is ignored for V4 spot accounts. No contradictions with annotations.

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

Conciseness4/5

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

Three sentences front-loaded with purpose, then behavior details, then return value. No unnecessary words. Could be slightly more structured (e.g., bullet points) but is efficient and clear.

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 tool with 5 parameters and an output schema, the description covers the key behavioral aspects and version differences. It does not reiterate every parameter detail, but schema already covers those. The description is sufficient for an agent to choose and use the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, and the description adds significant context: it explains the meaning of account_version values and the role of creditor. This goes beyond the schema's basic descriptions, e.g., 'V3 margin account' vs 'V4 spot account'.

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 transaction to create an Arcadia account via the Factory contract. It specifies the verb 'build' and the resource, and distinguishes between V3 margin and V4 spot accounts. The mention of deterministic address via CREATE2 adds clarity.

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 guidance on using account_version and explains when creditor is relevant vs ignored. It implies this tool is a prerequisite for other write.account operations but does not explicitly state alternatives or exclusions. Lacks an explicit 'when not to use' but is otherwise clear.

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

write.account.deleverageA
Idempotent
Inspect

Multi-step flash-action: sells account collateral to the debt token and repays in one atomic transaction — no wallet tokens needed. To repay from wallet tokens instead, use write.account.repay. NOTE: If you are closing a position (remove LP + swap + repay + withdraw), prefer write.account.close which batches everything atomically. Only use this tool for standalone repayment while keeping the position active. The returned calldata is time-sensitive — sign and broadcast within 30 seconds. If the transaction reverts due to price movement, rebuild and sign again immediately (retry at least once before giving up). Response includes tenderly_sim_url and tenderly_sim_status for pre-broadcast validation — if tenderly_sim_status is 'false', do NOT broadcast the transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
creditorYesLending pool address
slippageNoBasis points, 100 = 1%
amount_inYesCollateral amount to sell (raw units)
numeraireYesDebt token address
asset_fromYesCollateral token to sell
account_addressYesArcadia account address

Output Schema

ParametersJSON Schema
NameRequiredDescription
afterNo
beforeNo
descriptionNo
transactionYes
tenderly_sim_urlNo
tenderly_sim_statusNo
expected_value_changeNo

TDQS

A3.7/5.0
Behavior1/5

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

The description contradicts the annotations: annotations set idempotentHint=true, but the description states the returned calldata is time-sensitive and must be rebuilt if the transaction reverts, implying non-idempotence. Per scoring rules, a contradiction yields a score of 1.

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 front-loaded with the main purpose, followed by usage guidelines and behavioral caveats. It is structured logically, but slightly verbose with 7 sentences; could be more concise without losing value.

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

Completeness4/5

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

Covers essential context: atomicity, alternatives, time-sensitivity, retry logic, and pre-broadcast validation. Given the tool's complexity and the presence of an output schema (mentioned in context signals), the description is sufficiently 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?

Input schema covers 100% of parameters with descriptions. The description adds minimal new meaning beyond the schema, such as 'no wallet tokens needed,' but the parameters are already well-documented. Baseline for high coverage is 3.

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: 'sells account collateral to the debt token and repays in one atomic transaction — no wallet tokens needed.' It distinguishes itself from sibling tools like write.account.repay and write.account.close.

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?

Explicitly tells when to use (standalone repayment while keeping position active) and when not to use (closing a position, which should use write.account.close, or repaying from wallet tokens, which should use write.account.repay). Provides clear alternatives.

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

write.account.depositA
Idempotent
Inspect

Build an unsigned transaction to deposit assets into an Arcadia account as collateral. Supports ERC20 tokens and ERC721 NFTs (LP positions). NOT needed before write.account.add_liquidity — that tool deposits from wallet atomically. Ensure the account is approved first (call read.wallet.allowances to check, then write.wallet.approve if needed). Account version is auto-detected on-chain (override with account_version if needed).

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
asset_idsNoToken IDs: 0 for ERC20, NFT token ID for ERC721
asset_typesNoV4 only. Asset types per asset: 1=ERC20, 2=ERC721, 3=ERC1155. If omitted, inferred from asset_ids (non-zero → ERC721).
asset_amountsYesAmounts in raw units/wei, one per asset
account_addressYesArcadia account address
account_versionNoOverride account version (3 or 4). Auto-detected on-chain if omitted.
asset_addressesYesToken contract addresses to deposit

Output Schema

ParametersJSON Schema
NameRequiredDescription
descriptionYes
transactionYes
predicted_account_addressNo

TDQS

A4.5/5.0
Behavior4/5

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

Description adds that the tool builds an unsigned transaction (not executed) and auto-detects account version on-chain, which aligns with annotations (idempotentHint=true) and provides context beyond them.

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?

Description is concise with two sentences, front-loading core purpose and including key details without redundancy. Slightly longer due to critical usage notes, but still efficient.

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

Completeness4/5

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

Given the presence of an output schema and comprehensive schema descriptions, the description covers necessary context: purpose, prerequisites, sibling relationships, and parameter nuances. Minor gaps like error handling are acceptable.

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

Parameters4/5

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

Schema coverage is 100% with detailed parameter descriptions. Description adds value by clarifying asset type support (ERC20, ERC721), emphasizing optionality of asset_types (V4 only, inference), and account_version auto-detection.

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 it builds an unsigned transaction to deposit assets into an Arcadia account as collateral, specifying supported asset types (ERC20, ERC721) and distinguishing from similar tools like write.account.add_liquidity.

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?

Explicitly states it is NOT needed before write.account.add_liquidity and provides prerequisite steps (check allowances, approve if needed), giving clear when-to-use and when-not-to-use guidance.

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

write.account.remove_liquidityA
Idempotent
Inspect

Flash-action: PARTIALLY decreases liquidity from an LP position. The position remains open with reduced liquidity; underlying tokens stay in the account.

For FULL position exit (burn LP + swap + repay + withdraw), use write.account.close instead — it batches everything into one atomic transaction.

The returned calldata is time-sensitive — sign and broadcast within 30 seconds. If the transaction reverts due to price movement, rebuild and sign again immediately (retry at least once before giving up). Response includes tenderly_sim_url and tenderly_sim_status for pre-broadcast validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesNFT token ID
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
adjustmentYesLiquidity amount to remove (raw uint128 value as string). Must be less than total liquidity — for full removal use write.account.close.
asset_addressYesPosition manager contract
account_addressYesArcadia account address

Output Schema

ParametersJSON Schema
NameRequiredDescription
afterNo
beforeNo
descriptionNo
transactionYes
tenderly_sim_urlNo
tenderly_sim_statusNo
expected_value_changeNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations declare idempotentHint=true and openWorldHint=true. Description adds critical behavioral traits: time-sensitivity (30 seconds), retry recommendation, and tenderly simulation for pre-broadcast validation. No contradiction with annotations.

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

Conciseness5/5

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

Concise yet comprehensive. Uses bold for key terms, bullet points for retry steps, and front-loads the core purpose. Every sentence adds value.

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

Completeness5/5

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

Fully covers the tool's role in the ecosystem (partial vs full exit), operational constraints (time-sensitive, retry), and validation hooks (tenderly). Output schema exists, so return values are handled there.

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

Parameters4/5

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

Schema has 100% coverage. Description adds context beyond schema: explains adjustment must be less than total liquidity and references close for full removal, providing decision guidance that the schema alone does not.

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

Purpose5/5

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

Clearly states it's a flash-action to partially decrease liquidity from an LP position, and explicitly distinguishes from write.account.close which handles full exit. The verb 'remove_liquidity' is specific and resource is clearly LP position.

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?

Explicitly says when to use this tool (partial decrease) and when to use write.account.close (full exit). Also provides retry guidance and time sensitivity, giving clear operational context.

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

write.account.repayA
Idempotent
Inspect

Repay debt to an Arcadia lending pool using tokens from the wallet (requires ERC20 allowance). To repay using account collateral instead (no wallet tokens needed), use write.account.deleverage. Check allowance first (read.wallet.allowances), then approve the pool if needed (write.wallet.approve). Check outstanding debt with read.account.info.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount in raw units, or 'max_uint256' to repay all debt in full
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
pool_addressYesLending pool address. Base: LP_WETH=0x803ea69c7e87D1d6C86adeB40CB636cC0E6B98E2, LP_USDC=0x3ec4a293Fb906DD2Cd440c20dECB250DeF141dF1, LP_CBBTC=0xa37E9b4369dc20940009030BfbC2088F09645e3B
account_addressYesArcadia account address with debt

Output Schema

ParametersJSON Schema
NameRequiredDescription
descriptionYes
transactionYes
predicted_account_addressNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate idempotentHint=true and readOnlyHint=false. The description adds critical behavioral context: requires ERC20 allowance, implying an on-chain interaction that may fail without prior approval. It does not repeat annotation information, but adds value.

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

Conciseness5/5

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

Three sentences, no fluff. The most critical information (purpose, alternative, prerequisites) is front-loaded. Every sentence earns its place.

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

Completeness5/5

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

Given the complexity of DeFi repayment, the description covers purpose, prerequisites, alternatives, and links to related tools for checking state. With an output schema present, return values need not be explained. The description is self-sufficient for correct agent 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?

Schema coverage is 100%, so the schema already documents each parameter thoroughly. The description adds no new parameter-level details but contextualizes the amount as 'raw units, or max_uint256' and provides example addresses for pool_address, which is helpful but not beyond baseline for high 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 'Repay debt to an Arcadia lending pool using tokens from the wallet', specifying the verb and resource. It directly distinguishes from the sibling tool write.account.deleverage by contrasting token repayment vs. collateral repayment.

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 tells when to use this tool (when wallet tokens are available) and when not to (use deleverage for collateral). It also provides prerequisite steps: check allowance with read.wallet.allowances, approve if needed with write.wallet.approve, and check outstanding debt with read.account.info.

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

write.account.stakeA
Idempotent
Inspect

Flash-action: stake, unstake, or claim rewards for an LP position in one atomic transaction. Use the action parameter to select the operation. asset_address is the position manager contract — pass the non-staked PM address when staking, or the staked PM address when unstaking. The returned calldata is time-sensitive — sign and broadcast within 30 seconds. If the transaction reverts due to price movement, rebuild and sign again immediately (retry at least once before giving up). Tenderly simulation may not be available for this endpoint — verify the position exists with read.account.info before signing.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAction to perform
asset_idYesNFT token ID of the LP position
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
asset_addressYesPosition manager contract address
account_addressYesArcadia account address

Output Schema

ParametersJSON Schema
NameRequiredDescription
afterNo
beforeNo
descriptionNo
transactionYes
tenderly_sim_urlNo
tenderly_sim_statusNo
expected_value_changeNo

TDQS

A4.8/5.0
Behavior5/5

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

Discloses key behaviors beyond annotations: atomic flash-action, time-sensitive calldata, potential revert due to price movement, retry recommendation, and Tenderly simulation unavailability. No contradiction with annotations (readOnlyHint=false, idempotentHint=true).

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

Conciseness5/5

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

Front-loaded with core purpose, each of four sentences adds unique value: operation types, parameter guidance, time-sensitivity, error handling. No redundant phrasing.

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?

Covers preconditions, error handling, parameter nuances, and environment specifics (simulation). With output schema present, description fully equips agent for correct invocation.

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?

Adds significant meaning beyond schema: explains asset_address usage differs by action (non-staked vs staked PM address). Schema descriptions are generic; description clarifies operational logic for all parameters.

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 performs flash-actions: stake, unstake, or claim rewards for an LP position. This distinguishes it from sibling tools like write.account.add_liquidity or write.account.remove_liquidity.

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

Usage Guidelines4/5

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

Provides explicit guidance on using the action parameter, specifying asset_address for staking vs unstaking, time-sensitivity (broadcast within 30s), retry logic, and a precondition (verify position existence). Lacks explicit when-not-to-use but sufficient.

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

write.account.swapA
Idempotent
Inspect

Flash-action: swaps assets within an Arcadia account in one atomic transaction. The backend finds the optimal swap route. NOTE: If you are closing a position (swap + repay + withdraw), prefer write.account.close which batches everything atomically. Only use this tool for standalone swaps within an active position. The returned calldata is time-sensitive — sign and broadcast within 30 seconds. If the transaction reverts due to price movement, rebuild and sign again immediately (retry at least once before giving up). Response includes tenderly_sim_url and tenderly_sim_status for pre-broadcast validation — if tenderly_sim_status is 'false', do NOT broadcast the transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_toYesToken address to swap to
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
slippageNoBasis points, 100 = 1%
amount_inYesRaw units
asset_fromYesToken address to swap from
account_addressYesArcadia account address

Output Schema

ParametersJSON Schema
NameRequiredDescription
afterNo
beforeNo
descriptionNo
transactionYes
tenderly_sim_urlNo
tenderly_sim_statusNo
expected_value_changeNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations provide idempotentHint and readOnlyHint; description adds time-sensitivity (30s), retry behavior, and Tenderly validation steps, exceeding annotation coverage without contradiction.

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

Conciseness4/5

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

Front-loaded with core purpose followed by critical notes; slightly verbose but every sentence adds value. Could be slightly tighter but overall good structure.

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?

Covers all operational aspects: atomicity, route selection, time sensitivity, retry logic, and pre-broadcast validation. Complete for safe and effective use given the 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 has 100% coverage with descriptions for all 6 parameters; description adds minimal extra meaning (e.g., slippage unit already in schema), so baseline 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 it swaps assets within an Arcadia account atomically, and explicitly distinguishes it from the sibling tool write.account.close for position closing scenarios.

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?

Provides explicit when-to-use (standalone swaps) and when-not-to-use (when closing a position, prefer write.account.close), plus retry and pre-broadcast validation instructions.

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

write.account.withdrawA
Idempotent
Inspect

Build an unsigned transaction to withdraw assets from an Arcadia account to the owner's wallet. Only the account owner can withdraw. Will revert if the account has debt and withdrawal would make it undercollateralized. Does not support max_uint256 — pass exact amounts from read.account.info. Account version is auto-detected on-chain (override with account_version if needed).

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
asset_idsNoToken IDs: 0 for ERC20, NFT token ID for ERC721
asset_typesNoV4 only. Asset types per asset: 1=ERC20, 2=ERC721, 3=ERC1155. If omitted, inferred from asset_ids (non-zero → ERC721).
asset_amountsYesAmounts in raw units/wei, one per asset
account_addressYesArcadia account address
account_versionNoOverride account version (3 or 4). Auto-detected on-chain if omitted.
asset_addressesYesToken contract addresses to withdraw

Output Schema

ParametersJSON Schema
NameRequiredDescription
descriptionYes
transactionYes
predicted_account_addressNo

TDQS

A4.3/5.0
Behavior4/5

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

Beyond annotations, description discloses revert conditions, unsupported max_uint256, and auto-detection of account version. Does not mention rate limits or side effects beyond reverts, but idempotentHint already indicates safety.

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?

Four sentences, all essential, front-loaded with purpose, no redundancy.

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

Completeness5/5

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

Given complexity and existence of output schema, description adequately covers behavioral constraints, prerequisites, and parameter guidance, making the tool fully usable.

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

Parameters3/5

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

Schema covers all 7 parameters with descriptions (100% coverage). Description adds minor value by advising exact amounts from read.account.info, but does not significantly enhance parameter understanding beyond schema.

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

Purpose5/5

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

The description clearly states the tool builds an unsigned transaction to withdraw assets from an Arcadia account to the owner's wallet, with a specific verb and resource, distinguishing it from other write.account.* siblings.

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

Usage Guidelines4/5

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

Provides clear context: only owner can withdraw, reverts if undercollateralized, no max_uint256, and recommends using read.account.info for amounts. Does not explicitly list alternatives but purpose is distinct enough.

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

write.pool.depositAInspect

Build an unsigned deposit transaction into an Arcadia lending tranche (ERC-4626). Lenders deposit the pool's underlying asset (USDC/WETH/cbBTC) and receive tranche shares that accrue interest from borrowers. Requires prior ERC-20 approval to the tranche (see write.wallet.approve). To check current lender yield, call read.pool.list or read.pool.info.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetsYesAmount of underlying asset to deposit, in raw units (e.g. '1000000' = 1 USDC since USDC has 6 decimals).
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
receiverYesAddress that receives the minted tranche shares. Usually the depositor's own wallet.
tranche_addressYesTranche contract address (ERC-4626 vault). Get this from read.pool.list — each pool's `tranches[0].address`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
descriptionYes
transactionYes
predicted_account_addressNo

TDQS

A4.6/5.0
Behavior5/5

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

The description explicitly states the tool builds an *unsigned* transaction rather than executing it, which is a critical behavioral detail not captured by annotations. It also mentions the prerequisite approval, adding transparency beyond the structured fields.

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

Conciseness5/5

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

Two succinct sentences with no wasted words. The key information is front-loaded: purpose in the first sentence, prerequisites and related tools immediately follow.

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

Completeness4/5

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

Given the complexity of a DeFi deposit transaction and the presence of an output schema, the description adequately covers what the tool does, prerequisites, and related tools. It could mention the output transaction object, but the output schema likely compensates.

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

Parameters4/5

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

Schema coverage is 100% with good descriptions. The description adds extra value: an example for 'assets' (e.g., '1000000' = 1 USDC) and typical usage for 'receiver' (the depositor's wallet). This goes beyond the schema.

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

Purpose5/5

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

The description clearly states the tool builds an unsigned deposit transaction into an Arcadia lending tranche (ERC-4626), specifying the action and target. It distinguishes from siblings like write.pool.redeem by focusing on deposit.

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 prerequisites (prior ERC-20 approval) and references write.wallet.approve for that step. It also suggests checking current yield via read.pool.list or read.pool.info. It does not explicitly exclude alternatives but offers clear usage context.

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

write.pool.redeemAInspect

Build an unsigned redeem transaction to withdraw from an Arcadia lending tranche (ERC-4626). Burns tranche shares and returns the corresponding amount of underlying asset, including accrued interest. The owner must be the shares holder; receiver is where the underlying asset is sent.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesAddress that owns the tranche shares being burned. Normally the signer's own wallet.
sharesYesAmount of tranche shares to burn, in raw units. To redeem everything, use the owner's full share balance.
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
receiverYesAddress that receives the underlying asset. Usually the owner's own wallet.
tranche_addressYesTranche contract address (ERC-4626 vault). Get this from read.pool.list — each pool's `tranches[0].address`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
descriptionYes
transactionYes
predicted_account_addressNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations are neutral (no readOnly/destructive hints), so the description carries the burden. It discloses that the tool burns shares and returns underlying asset with accrued interest, and that the owner must be the shares holder. This adds meaningful behavioral context beyond the structured fields.

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

Conciseness5/5

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

Three sentences with no filler. The first sentence states purpose, the second explains the effect, the third provides ownership requirements. Every sentence is essential and front-loaded.

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

Completeness4/5

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

Given the tool builds an unsigned transaction and has an output schema, the description covers the primary purpose, key parameter relationships, and constraints (owner=holder, receiver destination). It does not detail the output format or signing steps, but the output schema likely fills that gap. Overall sufficiently complete for a transaction builder.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by providing usage hints: referencing read.pool.list for tranche_address, advising to use full share balance for redemption, and clarifying that receiver is typically the owner's wallet. This goes beyond the schema descriptions.

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 redeem transaction for Arcadia lending tranche (ERC-4626), with specific verb 'build', resource 'unsigned redeem transaction', and context 'withdraw from Arcadia lending tranche'. It distinguishes from sibling tools like write.pool.deposit by mentioning redemption specifically.

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 use: it explains the roles of owner and receiver, and gives a hint to get tranche_address from read.pool.list. However, it does not explicitly state when not to use this tool or compare with alternatives like write.account.withdraw, so it misses some exclusion guidance.

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

write.wallet.approveA
Idempotent
Inspect

Build an unsigned approval transaction. For ERC20 tokens: generates approve(spender, amount). For ERC721/ERC1155 NFTs (e.g. LP positions): generates setApprovalForAll(operator, true). Required before write.account.deposit or write.account.add_liquidity (when depositing from wallet). Tip: call read.wallet.allowances first to check if approval already exists — skip this if the current allowance is sufficient.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoERC20 only: amount in raw units, or 'max_uint256' for unlimited. Ignored for NFTs.max_uint256
chain_idNoChain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)
asset_typeNoToken type: 'erc20' (default) for fungible tokens, 'erc721' or 'erc1155' for NFTs (LP positions)erc20
token_addressYesToken contract address to approve
spender_addressYesAddress being approved — use the Arcadia account address for deposits

Output Schema

ParametersJSON Schema
NameRequiredDescription
descriptionYes
transactionYes
predicted_account_addressNo

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses that the tool builds an unsigned transaction (no side effects), matches idempotentHint=true, and explains behavioral differences between token types. Annotations already confirm safe mutation (destructiveHint=false), and description adds context without contradiction.

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

Conciseness5/5

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

Four sentences, each essential: core function, token-type differentiation, prerequisite usage, and a practical tip. No superfluous content; information is front-loaded and well-organized.

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 multi-token nature and prerequisite role, the description covers all key aspects: purpose, token behavior, required context (before deposit/add_liquidity), and a best-practice tip. Output schema exists, so return details are handled elsewhere.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema by clarifying that amount is for ERC20 only and spender_address should be the Arcadia account address, enhancing parameter understanding.

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 unsigned approval transactions for tokens, specifying two cases (ERC20 approve, ERC721/ERC1155 setApprovalForAll). It also explicitly connects to its prerequisite role for other tools, distinguishing it from sibling write tools.

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

Usage Guidelines5/5

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

The description explicitly states when this tool is required (before write.account.deposit and add_liquidity) and advises checking allowances first via read.wallet.allowances, effectively communicating when to use and when to skip.

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.

  1. 13 tool updatesv0.5.1
    • Addedread.asset_manager.current
    • Changedread.asset_manager.intents5 fields changed
      • addedInput schema / properties / account_address
        Added value: +{
        +  "description": "Arcadia account address. Include it to get live per-account availability.",
        +  "type": "string"
        +}
      • addedInput schema / properties / chain_id / default
        Added value: +8453
      • changedInput schema / properties / chain_id / description
        Previous value: -"Filter to automations available on this chain. Omit to see all."New value: +"Chain id: 8453 Base, 130 Unichain, 10 Optimism"
      • addedInput schema / properties / position_id
        Added value: +{
        +  "description": "LP position (NFT) id to scope availability to. Requires account_address.",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / availability_error
        Added value: +{
        +  "type": "string"
        +}
    • Changedread.guides1 field changed
      • changedInput schema / properties / topic / description
        Previous value: -"overview = addresses + tool catalog, automation = rebalancer/compounder/claimer setup, strategies = step-by-step LP templates, selection = pool evaluation + leverage sizing"New value: +"overview = addresses + tool catalog, automation = intent-based automation setup, strategies = step-by-step LP templates, selection = pool evaluation + leverage sizing"
    • Addedwrite.account.automations
    • Addedwrite.account.automations_delta
    • Removedwrite.account.set_asset_managers
    • Removedwrite.asset_manager.compounder
    • Removedwrite.asset_manager.compounder_staked
    • Removedwrite.asset_manager.cow_swapper
    • Removedwrite.asset_manager.merkl_operator
    • Removedwrite.asset_manager.rebalancer
    • Removedwrite.asset_manager.yield_claimer
    • Removedwrite.asset_manager.yield_claimer_cowswap
  2. 1 tool updatev0.4.6
    • Changedwrite.asset_manager.cow_swapper1 field changed
      • changedInput schema / properties / chain_id / description
        Previous value: -"Chain ID: 8453 (Base)"New value: +"Chain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism)"
  3. 6 tool updatesv0.4.3
    • Changedwrite.account.add_liquidity1 field changed
      • changedOutput schema / properties / tenderly_sim_status / enum
        Previous value: -[
        -  "true",
        -  "false",
        -  "unavailable"
        -]New value: +[
        +  "success",
        +  "failure",
        +  "unavailable"
        +]
    • Changedwrite.account.close1 field changed
      • changedOutput schema / properties / tenderly_sim_status / enum
        Previous value: -[
        -  "true",
        -  "false",
        -  "unavailable"
        -]New value: +[
        +  "success",
        +  "failure",
        +  "unavailable"
        +]
    • Changedwrite.account.deleverage1 field changed
      • changedOutput schema / properties / tenderly_sim_status / enum
        Previous value: -[
        -  "true",
        -  "false",
        -  "unavailable"
        -]New value: +[
        +  "success",
        +  "failure",
        +  "unavailable"
        +]
    • Changedwrite.account.remove_liquidity1 field changed
      • changedOutput schema / properties / tenderly_sim_status / enum
        Previous value: -[
        -  "true",
        -  "false",
        -  "unavailable"
        -]New value: +[
        +  "success",
        +  "failure",
        +  "unavailable"
        +]
    • Changedwrite.account.stake1 field changed
      • changedOutput schema / properties / tenderly_sim_status / enum
        Previous value: -[
        -  "true",
        -  "false",
        -  "unavailable"
        -]New value: +[
        +  "success",
        +  "failure",
        +  "unavailable"
        +]
    • Changedwrite.account.swap1 field changed
      • changedOutput schema / properties / tenderly_sim_status / enum
        Previous value: -[
        -  "true",
        -  "false",
        -  "unavailable"
        -]New value: +[
        +  "success",
        +  "failure",
        +  "unavailable"
        +]
  4. 40 tool updatesv0.4.2
    • Addeddev.send
    • Addedread.account.history
    • Addedread.account.info
    • Addedread.account.pnl
    • Addedread.asset_manager.intents
    • Addedread.asset.list
    • Addedread.asset.prices
    • Addedread.guides
    • Addedread.point_leaderboard
    • Addedread.pool.info
    • Addedread.pool.list
    • Addedread.strategy.info
    • Addedread.strategy.list
    • Addedread.strategy.recommendation
    • Addedread.wallet.accounts
    • Addedread.wallet.allowances
    • Addedread.wallet.balances
    • Addedread.wallet.points
    • Addedwrite.account.add_liquidity
    • Addedwrite.account.borrow
    • Addedwrite.account.close
    • Addedwrite.account.create
    • Addedwrite.account.deleverage
    • Addedwrite.account.deposit
    • Addedwrite.account.remove_liquidity
    • Addedwrite.account.repay
    • Addedwrite.account.set_asset_managers
    • Addedwrite.account.stake
    • Addedwrite.account.swap
    • Addedwrite.account.withdraw
    • Addedwrite.asset_manager.compounder
    • Addedwrite.asset_manager.compounder_staked
    • Addedwrite.asset_manager.cow_swapper
    • Addedwrite.asset_manager.merkl_operator
    • Addedwrite.asset_manager.rebalancer
    • Addedwrite.asset_manager.yield_claimer
    • Addedwrite.asset_manager.yield_claimer_cowswap
    • Addedwrite.pool.deposit
    • Addedwrite.pool.redeem
    • Addedwrite.wallet.approve
  5. 38 tool updatesv0.3.4
    • Removeddev.send
    • Removedread.account.history
    • Removedread.account.info
    • Removedread.account.pnl
    • Removedread.asset_manager.intents
    • Removedread.asset.list
    • Removedread.asset.prices
    • Removedread.guides
    • Removedread.point_leaderboard
    • Removedread.pool.info
    • Removedread.pool.list
    • Removedread.strategy.info
    • Removedread.strategy.list
    • Removedread.strategy.recommendation
    • Removedread.wallet.accounts
    • Removedread.wallet.allowances
    • Removedread.wallet.balances
    • Removedread.wallet.points
    • Removedwrite.account.add_liquidity
    • Removedwrite.account.borrow
    • Removedwrite.account.close
    • Removedwrite.account.create
    • Removedwrite.account.deleverage
    • Removedwrite.account.deposit
    • Removedwrite.account.remove_liquidity
    • Removedwrite.account.repay
    • Removedwrite.account.set_asset_managers
    • Removedwrite.account.stake
    • Removedwrite.account.swap
    • Removedwrite.account.withdraw
    • Removedwrite.asset_manager.compounder
    • Removedwrite.asset_manager.compounder_staked
    • Removedwrite.asset_manager.cow_swapper
    • Removedwrite.asset_manager.merkl_operator
    • Removedwrite.asset_manager.rebalancer
    • Removedwrite.asset_manager.yield_claimer
    • Removedwrite.asset_manager.yield_claimer_cowswap
    • Removedwrite.wallet.approve
  6. 38 tool updatesv0.3.0
    • Addeddev.send
    • Addedread.account.history
    • Addedread.account.info
    • Addedread.account.pnl
    • Addedread.asset_manager.intents
    • Addedread.asset.list
    • Addedread.asset.prices
    • Addedread.guides
    • Addedread.point_leaderboard
    • Addedread.pool.info
    • Addedread.pool.list
    • Addedread.strategy.info
    • Addedread.strategy.list
    • Addedread.strategy.recommendation
    • Addedread.wallet.accounts
    • Addedread.wallet.allowances
    • Addedread.wallet.balances
    • Addedread.wallet.points
    • Addedwrite.account.add_liquidity
    • Addedwrite.account.borrow
    • Addedwrite.account.close
    • Addedwrite.account.create
    • Addedwrite.account.deleverage
    • Addedwrite.account.deposit
    • Addedwrite.account.remove_liquidity
    • Addedwrite.account.repay
    • Addedwrite.account.set_asset_managers
    • Addedwrite.account.stake
    • Addedwrite.account.swap
    • Addedwrite.account.withdraw
    • Addedwrite.asset_manager.compounder
    • Addedwrite.asset_manager.compounder_staked
    • Addedwrite.asset_manager.cow_swapper
    • Addedwrite.asset_manager.merkl_operator
    • Addedwrite.asset_manager.rebalancer
    • Addedwrite.asset_manager.yield_claimer
    • Addedwrite.asset_manager.yield_claimer_cowswap
    • Addedwrite.wallet.approve

TDQS

A4.1/5.0

Scored across 35 tools

Disambiguation4/5

Each tool targets a distinct operation, but several pairs (deposit/add_liquidity, repay/deleverage, remove_liquidity/close, swap/close) have overlapping boundaries. However, the descriptions explicitly clarify when to use each, so an agent can disambiguate after reading them.

Naming Consistency5/5

All tools follow a consistent read.<domain>.<noun> or write.<domain>.<verb> pattern (e.g., read.account.info, write.account.deposit). The only exception is dev.send, which is clearly a dev-only utility outside the standard namespace.

Tool Count2/5

35 tools is a large surface for an agent to navigate. While the domain is broad, the count exceeds the 25-tool threshold and feels heavy for a single server; many tools could be consolidated (e.g., deposit/add_liquidity, close/swap+remove_liquidity+deleverage).

Completeness5/5

The tool set covers the full account lifecycle (create, deposit, withdraw, borrow, repay, add/remove liquidity, swap, close), lending pool operations, automations (full state and delta), wallet checks, and reference guides. There are no obvious missing operations for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

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

  • F
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive MCP server providing unified access to over 144 tools for lending, trading, and staking across six major DeFi protocols on the Stacks Bitcoin Layer 2. It enables AI agents to perform complex blockchain operations and interact with the DeFi ecosystem using natural language commands.
    3
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP (Model Context Protocol) server for the MAIN DEX on Base. Provides AI agents (Claude, Cursor, etc.) with tools to interact with the protocol: swap tokens, manage liquidity, enter/exit ALM strategies(10% APY), and more.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Self-custodial crypto portfolio and DeFi MCP server. Read balances and positions (Aave, Compound, Morpho, Uniswap V3, Lido, EigenLayer) across Ethereum, Arbitrum, Polygon, and Base, and prepare transactions for approval on a Ledger via WalletConnect.
    100
    91
    4
    Business Source 1.1