# Free tools actions

> Free tools: 12 Xholic actions (12 read, 0 change), each with its MCP tool, REST endpoint and CLI command.

Source: https://docs.xholic.ai/actions/free-tools/

12 actions. Every field marked *Required* must be sent; `account`, `dryRun`, `idempotencyKey`, `confirmCredits` and `quoteId` are the [control fields](/api/responses/#control-fields) every surface adds.

## X profile report

`free_tools.profile_report` · read

A free report on any public X account. report: analytics (followers, posting and engagement over recent posts), audit (profile and content checklist with fixes), best-time (when its posts do best; pass timezone), engagement-rate (average engagement rate with a benchmark), media (its profile picture and header image at full size).

- **MCP tool:** `x_profile_report`. Free tool: loaded on `/mcp/free` with no account; signed in, reach it with `find_actions` and `run_read_action`.
- **REST:** `GET /v1/free-tools/profile-report`
- **CLI:** `xholic free-tools profile-report`
- **Scope:** `read`
- **Plan:** Free tool: no account or plan needed
- **Cost:** Live X lookup: no credits, counts toward the plan's X data limits.
- **Rate limit bucket:** `live_x`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `handle` | string ≤ 120 chars | Yes | X username, with or without @. |
| `report` | "analytics" \\| "audit" \\| "best-time" \\| "engagement-rate" \\| "media" | Yes |  |
| `timezone` | string ≤ 80 chars | No | For analytics and best-time: IANA timezone for times of day. |

**Example: Audit a profile**

```bash
curl -G https://api.xholic.ai/v1/free-tools/profile-report \
  -H "Authorization: Bearer $XHOLIC_API_KEY" \
  --data-urlencode "handle=xholicai" \
  --data-urlencode "report=audit"
```

## Shadowban check

`free_tools.shadowban_check` · read

Check whether a public X account looks shadowbanned or limited in search, replies and suggestions. A few fresh checks per day; recently checked handles come back from storage.

- **MCP tool:** `shadowban_check`. Free tool: loaded on `/mcp/free` with no account; signed in, reach it with `find_actions` and `run_read_action`.
- **REST:** `GET /v1/free-tools/shadowban-check`
- **CLI:** `xholic free-tools shadowban-check`
- **Scope:** `read`
- **Plan:** Free tool: no account or plan needed
- **Cost:** Live X lookup: no credits, counts toward the plan's X data limits.
- **Rate limit bucket:** `live_x`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `handle` | string ≤ 120 chars | Yes | X username, with or without @. |

## X trend regions

`free_tools.trend_regions` · read

The regions X trends are available for, with their region slugs for x_trends.

- **MCP tool:** `x_trend_regions`. Free tool: loaded on `/mcp/free` with no account; signed in, reach it with `find_actions` and `run_read_action`.
- **REST:** `GET /v1/free-tools/trend-regions`
- **CLI:** `xholic free-tools trend-regions`
- **Scope:** `read`
- **Plan:** Free tool: no account or plan needed
- **Cost:** Free.
- **Rate limit bucket:** `read`

**Input**

No input.

## X trends

`free_tools.trends` · read

What is trending on X in a region right now (from Xholic's recent snapshot). Use worldwide or a slug from x_trend_regions such as united-states.

- **MCP tool:** `x_trends`. Free tool: loaded on `/mcp/free` with no account; signed in, reach it with `find_actions` and `run_read_action`.
- **REST:** `GET /v1/free-tools/trends`
- **CLI:** `xholic free-tools trends`
- **Scope:** `read`
- **Plan:** Free tool: no account or plan needed
- **Cost:** Free.
- **Rate limit bucket:** `read`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `region` | string | Yes | Region slug such as worldwide or united-states. |

**Example: Worldwide trends**

```bash
curl -G https://api.xholic.ai/v1/free-tools/trends \
  -H "Authorization: Bearer $XHOLIC_API_KEY" \
  --data-urlencode "region=worldwide"
```

## Read a thread

`free_tools.read_thread` · read

Unroll an X thread from the link to any of its posts into one readable piece, with its media.

- **MCP tool:** `read_thread`. Free tool: loaded on `/mcp/free` with no account; signed in, reach it with `find_actions` and `run_read_action`.
- **REST:** `GET /v1/free-tools/read-thread`
- **CLI:** `xholic free-tools read-thread`
- **Scope:** `read`
- **Plan:** Free tool: no account or plan needed
- **Cost:** Live X lookup: no credits, counts toward the plan's X data limits.
- **Rate limit bucket:** `live_x`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `url` | string ≤ 500 chars | Yes | Link to a post in the thread. |

## Link card preview

`free_tools.card_preview` · read

Show how a link will look as a card on X (title, description, image, card type) and what is missing from its tags.

- **MCP tool:** `card_preview`. Free tool: loaded on `/mcp/free` with no account; signed in, reach it with `find_actions` and `run_read_action`.
- **REST:** `GET /v1/free-tools/card-preview`
- **CLI:** `xholic free-tools card-preview`
- **Scope:** `read`
- **Plan:** Free tool: no account or plan needed
- **Cost:** Free.
- **Rate limit bucket:** `read`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `url` | string ≤ 2048 chars | Yes | The page link to check. |

## Post media links

`free_tools.post_media` · read

Get download links for the video, GIF or images in a public X post.

- **MCP tool:** `x_post_media`. Free tool: loaded on `/mcp/free` with no account; signed in, reach it with `find_actions` and `run_read_action`.
- **REST:** `GET /v1/free-tools/post-media`
- **CLI:** `xholic free-tools post-media`
- **Scope:** `read`
- **Plan:** Free tool: no account or plan needed
- **Cost:** Live X lookup: no credits, counts toward the plan's X data limits.
- **Rate limit bucket:** `live_x`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `tweetUrl` | string ≤ 500 chars | Yes | Link to the X post. |
| `type` | "video" \\| "gif" \\| "image" | Yes |  |

## Username check

`free_tools.username_check` · read

Whether an X username is available, with similar available suggestions when it is taken.

- **MCP tool:** `x_username_check`. Free tool: loaded on `/mcp/free` with no account; signed in, reach it with `find_actions` and `run_read_action`.
- **REST:** `GET /v1/free-tools/username-check`
- **CLI:** `xholic free-tools username-check`
- **Scope:** `read`
- **Plan:** Free tool: no account or plan needed
- **Cost:** Live X lookup: no credits, counts toward the plan's X data limits.
- **Rate limit bucket:** `live_x`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `handle` | string ≤ 120 chars | Yes | X username, with or without @. |

## X ID converter

`free_tools.x_id_convert` · read

Convert between an X username and its numeric user id, in either direction.

- **MCP tool:** `x_id_converter`. Free tool: loaded on `/mcp/free` with no account; signed in, reach it with `find_actions` and `run_read_action`.
- **REST:** `GET /v1/free-tools/x-id-convert`
- **CLI:** `xholic free-tools x-id-convert`
- **Scope:** `read`
- **Plan:** Free tool: no account or plan needed
- **Cost:** Live X lookup: no credits, counts toward the plan's X data limits.
- **Rate limit bucket:** `live_x`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `input` | string ≤ 120 chars | Yes | A username, user id or profile link. |

## Follower count

`free_tools.follower_count` · read

The current follower and following counts of a public X account.

- **MCP tool:** `x_follower_count`. Free tool: loaded on `/mcp/free` with no account; signed in, reach it with `find_actions` and `run_read_action`.
- **REST:** `GET /v1/free-tools/follower-count`
- **CLI:** `xholic free-tools follower-count`
- **Scope:** `read`
- **Plan:** Free tool: no account or plan needed
- **Cost:** Live X lookup: no credits, counts toward the plan's X data limits.
- **Rate limit bucket:** `live_x`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `handle` | string ≤ 120 chars | Yes | X username, with or without @. |

## Account worth

`free_tools.account_worth` · read

An estimate of what a public X account is worth, from its followers, views and engagement on recent posts.

- **MCP tool:** `x_account_worth`. Free tool: loaded on `/mcp/free` with no account; signed in, reach it with `find_actions` and `run_read_action`.
- **REST:** `GET /v1/free-tools/account-worth`
- **CLI:** `xholic free-tools account-worth`
- **Scope:** `read`
- **Plan:** Free tool: no account or plan needed
- **Cost:** Live X lookup: no credits, counts toward the plan's X data limits.
- **Rate limit bucket:** `live_x`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `handle` | string ≤ 120 chars | Yes | X username, with or without @. |

## Engagement rate calculator

`free_tools.engagement_calculator` · read

Calculate engagement rates from numbers you already have (followers, impressions, likes, replies, reposts, quotes). No X lookup.

- **MCP tool:** `engagement_calculator`. Free tool: loaded on `/mcp/free` with no account; signed in, reach it with `find_actions` and `run_read_action`.
- **REST:** `GET /v1/free-tools/engagement-calculator`
- **CLI:** `xholic free-tools engagement-calculator`
- **Scope:** `read`
- **Plan:** Free tool: no account or plan needed
- **Cost:** Free.
- **Rate limit bucket:** `read`

**Input**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `followersCount` | integer 0–1000000000 | Yes |  |
| `impressions` | integer 0–10000000000 | Yes |  |
| `likes` | integer 0–1000000000 | Yes |  |
| `replies` | integer 0–1000000000 | Yes |  |
| `reposts` | integer 0–1000000000 | Yes |  |
| `quotes` | integer 0–1000000000 | Yes |  |
