# Search the X-Buddy docs

> docs_search — Search the public X-Buddy documentation — user guides, limits and safety, troubleshooting, the API reference and error codes — in English or Vietnamese.

Source: https://x.builera.app/docs/en/reference/docs_search

`docs_search` · Reads saved data

Search the public X-Buddy documentation — user guides, limits and safety, troubleshooting, the API reference and error codes — in English or Vietnamese. Returns up to 10 pages with the best matching section and a snippet; read one with docs_read. The docs explain how X-Buddy behaves; they never contain workspace data.

| | |
|---|---|
| REST | `GET /api/public/v1/docs/search` |
| MCP tool | `docs_search` |
| Permission needed | `view` — Owner, Manager, Operator, Viewer |
| Scope group | `accounts:read` |
| Group | Indirect calls and docs |
| Shown up front in profiles | every profile (core set) |

## Input {#input}

| Field | Type | Required | Description |
|---|---|---|---|
| `query` | string (2–200 chars) | Yes | What you want to know, e.g. 'why is my job held', 'rolling 7-day limit', 'verify webhook signature'. |
| `locale` | `en` · `vi` | No | Docs language: en (default) or vi. |
| `limit` | integer (1–10) | No | How many pages (default 5, max 10). |

## Result {#output}

Returned in the `{ data, meta }` envelope, without creating a job on X. Lists include `next_cursor` and `has_more`.

## Example {#example}

### Call over REST {#example-rest}

```bash
curl -X GET "https://reach-link-craft.lovable.app/api/public/v1/docs/search?query=ai+agents" \
  -H "Authorization: Bearer $XBUDDY_API_KEY"
```

### Call over MCP {#example-mcp}

```json
{
  "method": "tools/call",
  "params": {
    "name": "docs_search",
    "arguments": {
      "query": "ai agents"
    }
  }
}
```

## Errors you may get {#errors}

| Code | HTTP | Retryable |
|---|---|---|
| [`unauthorized`](/docs/en/errors/unauthorized) | 401 | No |
| [`key_expired`](/docs/en/errors/key_expired) | 401 | No |
| [`integration_revoked`](/docs/en/errors/integration_revoked) | 401 | No |
| [`connection_not_linked`](/docs/en/errors/connection_not_linked) | 403 | No |
| [`integration_paused`](/docs/en/errors/integration_paused) | 403 | No |
| [`workspace_integrations_paused`](/docs/en/errors/workspace_integrations_paused) | 403 | No |
| [`integration_authorization_lost`](/docs/en/errors/integration_authorization_lost) | 403 | No |
| [`workspace_suspended`](/docs/en/errors/workspace_suspended) | 403 | No |
| [`forbidden`](/docs/en/errors/forbidden) | 403 | No |
| [`invalid_input`](/docs/en/errors/invalid_input) | 422 | No |
| [`rate_limited`](/docs/en/errors/rate_limited) | 429 | Yes |
| [`internal`](/docs/en/errors/internal) | 500 | Yes |

[Back to all operations](/docs/en/reference)
