# List tools

URL: https://docs.hanzo.ai/docs/openapi/pricing/get-pricing-tools

> Returns the per-use tool prices — web search, web fetch, code interpreter, file storage, image generation, speech-to-text and text-to-speech — each with the unit it is billed by and its price in that unit.

`GET /v1/pricing/tools`

> [Pricing →](https://docs.hanzo.ai/docs/openapi/pricing) · [All API references →](https://docs.hanzo.ai/docs/openapi) · [Get started →](https://docs.hanzo.ai/docs/guides)

|               |                                         |
| ------------- | --------------------------------------- |
| **Address**   | `https://api.hanzo.ai/v1/pricing/tools` |
| **Method**    | `GET`                                   |
| **Operation** | `get_pricing_tools`                     |
| **Auth**      | `Authorization: Bearer $HANZO_API_KEY`  |

Returns the per-use tool prices — web search, web fetch, code
interpreter, file storage, image generation, speech-to-text and
text-to-speech — each with the unit it is billed by and its price in that
unit.

The two WEB rows are priced from the rate card rather than from the catalog,
because those are the rows the platform charges by the call and a published
number that is also a charged one has exactly one home (see tariff.go). Read
them as integer micro-USD at /v1/pricing/tariff; the decimal here is the
display this list has always carried.

## Request

`GET /v1/pricing/tools` takes no parameters and no body — the credential is the whole request.

## Response

| Status    | Body                    | Meaning |
| --------- | ----------------------- | ------- |
| `200`     | pricing.pricingToolList | ok      |
| `default` | problem-details         | refused |

`200` body — 2 fields.

| Field       | In   | Type      | Always | Description                                                                                                                         |
| ----------- | ---- | --------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| `tools`     | body | object\[] | —      | Tools are the metered tools, each an opaque object exactly as the pricing source emits it — typically name, billing unit and price. |
| `tools[].*` | body | any       | —      |                                                                                                                                     |

Failure carries the platform error shape — see [Errors](https://docs.hanzo.ai/docs/errors).

## Examples

**CLI**

```bash
hanzo pricing tools
```

**SDK**

**.ts**

```ts
import { Configuration, PricingApi } from 'hanzoai';

const api = new PricingApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getPricingTools();
```

**.py**

```python
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import PricingApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = PricingApi(client).get_pricing_tools()
```

**.go**

```go
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.PricingAPI.GetPricingTools(context.Background()).Execute()
if err != nil {
	return err
}
```

**.rs**

```rust
use hanzo_client::apis::{configuration::Configuration, pricing_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = pricing_api::get_pricing_tools(&cfg, Default::default()).await?;
```

**.java**

```java
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.PricingApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new PricingApi(client).getPricingTools();
```

**HTTP**

```bash
curl https://api.hanzo.ai/v1/pricing/tools \
  -H "Authorization: Bearer $HANZO_API_KEY"
```

**MCP**

MCP reaches **pricing** through the `pricing` tool, which names its 28 operations with its own verbs — this one among them, under a name only MCP declares. `describe` explains any of them:

```bash
curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_pricings"
         }
       }
     }'
```

---

[Pricing API](https://docs.hanzo.ai/docs/openapi/pricing) · [All Hanzo APIs](https://docs.hanzo.ai/docs/openapi) · [Interactive reference](https://docs.hanzo.ai/docs/openapi/reference)
