> ## Documentation Index
> Fetch the complete documentation index at: https://docs.illa.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Tools & Providers Reference

> Reference for tool names, provider keys, and routing defaults

Use this page when you need the exact names that appear in SDK configuration, request payloads, or runtime responses.

<Tip>
  This page focuses on names exposed in the current shared interfaces and common runtime responses.
  Only `lifi` and `aave` are valid `autoRouter` defaults today.
</Tip>

## Start with the common defaults

```ts theme={null}
import { IllaSDK } from '@illalabs/sdk'

const sdk = new IllaSDK(
  { apiKey: process.env.ILLA_API_KEY! },
  {
    contextManagerOptions: {
      defaultToolsConfig: {
        autoRouter: {
          swapOrBridge: 'lifi',
          defi: { lending: 'aave' },
        },
      },
    },
  },
)
```

Use this as the baseline if you want explicit tool-routing defaults without overriding the rest of the SDK behavior.

## Tool names

* `swap`
* `bridge`
* `exchangeRate`
* `getWalletBalance`
* `defiFetchListings`
* `defiPositions`
* `defiSupply`
* `defiWithdraw`
* `tokenTransfer`
* `predictionMarketsFetch`
* `predictionMarketsBet`
* `predictionMarketsPositions`
* `predictionMarketsRedeem`
* `polymarketPostOrder`
* `polymarketPostRedeem`

These are the names you should expect in `pendingTools`, tool configs, and provider-specific docs.

## Provider keys

* `lifi` for swap/bridge
* `aave` for DeFi supply/withdraw
* `duneSim` for exchange-rate and wallet-balance simulation-backed responses
* `moralis` for wallet-balance responses
* `coinMarketCap` for exchange-rate responses
* `polymarket` for prediction-market responses

## Prediction-market redeem flow

Redeem support is a two-step tool sequence:

1. `predictionMarketsRedeem` returns a signature request payload for Safe execution.
2. `polymarketPostRedeem` submits the signed payload to the relayer.

If your integration executes `pendingTools` directly, ensure your executor supports signature request handling in addition to transaction handling.

## Supported chains

These chains are currently enumerated in the shared interfaces:

| Chain     | Chain ID |
| --------- | -------- |
| Ethereum  | 1        |
| Polygon   | 137      |
| Optimism  | 10       |
| Base      | 8453     |
| Arbitrum  | 42161    |
| Avalanche | 43114    |
| BSC       | 56       |

## Model selection

The SDK exposes model selection through `modelContext`, and the raw API exposes it through the `languageModel` request field.

SDK example:

```ts theme={null}
const result = await sdk.sendMessage(
  'What is my balance?',
  { userContext: { address: '0x1234...' } },
  {
    modelContext: {
      provider: 'openrouter',
      model: 'anthropic/claude-sonnet-4.5',
    },
  },
)
```

Raw API example:

```bash theme={null}
curl -X POST https://api.illa.io/api/v1/chat \
  -H "x-api-key: $ILLA_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "messages": [],
    "userContext": { "address": "0x1234..." },
    "prompt": { "role": "user", "content": [{ "type": "text", "text": "What is my balance?" }] },
    "languageModel": "openrouter:anthropic/claude-sonnet-4.5"
  }'
```

Use the SDK form when you are calling `sdk.sendMessage(...)`. Use the raw API form only if you are integrating directly with the HTTP API.

## Async execution

For operations that continue after submission, use:

* `IllaSDK.awaitAction(...)`
* `IllaSDK.subscribeToToolStatus(...)`
* `GET /api/v1/actions/check`
