---
title: "Standard MCP tools"
description: "Every tool of the standard Lookio MCP server, with the scope it needs, what it costs and what it changes, so you know what an agent can do."
canonical: "https://lookio.app/docs/developers/mcp/standard-tools"
updated: "2026-11-08"
---

# Standard MCP tools

The standard server at `https://mcp.lookio.app/mcp` has one tool per task. A connection sees only the tools that its scopes allow. `send_feedback` needs no scope, so it is always there.

Tool descriptions are for the model. They give the cost of the tool and the next step, for example "poll `get_resource` until it is `ready`".

## Account

| Tool                 | Scope          | What it does                                                                                                                  |
| -------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `get_account`        | `account:read` | The workspace, the plan, the credit balance and the plan limits. `credential.scopes` lists what this connection may do. Free. |
| `get_credit_balance` | `account:read` | The balance and every credit grant with its expiry. Free.                                                                     |
| `get_usage`          | `usage:read`   | Credits spent and answers completed over a period, by day, week or month. 30 days by default. Free.                           |
| `send_feedback`      | none           | Records feedback when a tool or workflow behaves differently from what was expected. Free.                                    |

## Resources

| Tool                   | Scope              | What it does                                                                                                                                                                                                                                                            |
| ---------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `list_resources`       | `resources:read`   | Resources, newest first, with their import status. Pages with `cursor`.                                                                                                                                                                                                 |
| `get_resource`         | `resources:read`   | One resource and its status. Call it until the status is `ready` or `failed`.                                                                                                                                                                                           |
| `get_resource_content` | `resources:read`   | The indexed text, in Markdown, and what Lookio could not read. A long text comes in parts: while `has_more` is true, continue with `offset` set to `next_offset`. `truncated` means that the resource is longer than the 200,000 characters that Lookio keeps readable. |
| `add_text_resource`    | `resources:write`  | Adds a text.                                                                                                                                                                                                                                                            |
| `add_web_page`         | `resources:write`  | Adds one public web page.                                                                                                                                                                                                                                               |
| `preview_site`         | `resources:write`  | Finds a site's pages without importing anything.                                                                                                                                                                                                                        |
| `add_site`             | `resources:write`  | Imports a site with include and exclude rules. Default schedule: manual on Free, weekly on paid plans.                                                                                                                                                                  |
| `list_site_pages`      | `resources:read`   | The pages of a site and why one failed. Filter with `status`, and page with `cursor`.                                                                                                                                                                                   |
| `update_site_rules`    | `resources:write`  | Replaces a site's rules, then syncs. Without a schedule, it keeps the current one.                                                                                                                                                                                      |
| `retry_failed_pages`   | `resources:write`  | Reads a site's failed pages again.                                                                                                                                                                                                                                      |
| `update_resource`      | `resources:write`  | Changes a title, tags or source, or a text resource's text.                                                                                                                                                                                                             |
| `reindex_resource`     | `resources:write`  | Reads a resource again, or syncs a site.                                                                                                                                                                                                                                |
| `delete_resource`      | `resources:delete` | Deletes a resource and everything indexed from it. Permanent.                                                                                                                                                                                                           |

These operations spend no credits. Recurring site updates require a paid plan.

## Tags

| Tool         | Scope            | What it does                                                                   |
| ------------ | ---------------- | ------------------------------------------------------------------------------ |
| `list_tags`  | `resources:read` | Every tag, with how many resources carry it and how many assistants follow it. |
| `rename_tag` | `admin`          | Renames a tag everywhere, or merges it into an existing one.                   |
| `delete_tag` | `admin`          | Removes a tag from every resource and assistant.                               |

## Assistants and questions

| Tool               | Scope               | What it does                                                                                                                                                           |
| ------------------ | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `list_assistants`  | `assistants:read`   | A summary of the assistants this connection may use: name, what each reads, how many resources, followed tags and the start of its context.                            |
| `get_assistant`    | `assistants:read`   | One assistant in full, with its complete context, guidelines, resource ids and followed tags.                                                                          |
| `create_assistant` | `assistants:write`  | Creates an assistant. Its `knowledge` mode is `all`, `selected` or `tags`. Free.                                                                                       |
| `update_assistant` | `assistants:write`  | Changes the fields you send and keeps the others.                                                                                                                      |
| `delete_assistant` | `assistants:delete` | Deletes an assistant. Its resources are kept. Refused while a widget uses it.                                                                                          |
| `ask_assistant`    | `query`             | Asks a question and returns the answer with its citations. **Spends credits.**                                                                                         |
| `search_assistant` | `query`             | Returns the passages that best match a question, best first, without an answer. Takes `question`, `history` and `limit` (1 to 20, default 8). **1 credit** per search. |

`ask_assistant` costs 30 credits in Flash (the default), 10 in Eco and 80 in Deep, whatever the answer. An assistant with no resources is refused for free.

- The result has the `conversation_id` and the answer's `message_id`. For a follow-up, send the new question and the `conversation_id`.
- An API key can also send `end_user` (its id for the person who asks) and `store: false` (keep nothing).
- `history` is for a conversation you keep yourself.
- With an `idempotency_key`, a retry returns the first result and is not charged again.
- The tool tells the model to quote the citations. Clients should confirm each call, because it spends credits.

## Conversations

A person reaches their own chats. An API key reaches the conversations it started, and can filter them on one `end_user`. See [Conversations and end users](/docs/guides/conversations-and-end-users).

| Tool                   | Scope             | What it does                                                                                                                                                                                                                     |
| ---------------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `list_conversations`   | `assistants:read` | Your own conversations, latest activity first, optionally with one assistant or, for a key, one `end_user`. Pages with `cursor`. Free.                                                                                           |
| `get_conversation`     | `assistants:read` | One of your conversations with its messages, citations, answer ids and thumbs. Free.                                                                                                                                             |
| `rename_conversation`  | `query`           | Changes the title of one of your conversations. Free.                                                                                                                                                                            |
| `delete_conversation`  | `query`           | Permanently deletes one of your conversations and its messages. A key's conversation also leaves the logs.                                                                                                                       |
| `send_answer_feedback` | `query`           | Records a thumb, with an optional comment, on one answer of a key's conversation. Free. API keys only. Not `send_feedback`, which reports a problem with Lookio itself. See [Feedback on answers](/docs/guides/answer-feedback). |

## Logs

The four logs of the workspace, all free. See [Logs](/docs/guides/logs). Every list uses `cursor`: send `next_cursor` back while `has_more` is true. Before 18 October 2026, the conversation tools were `list_logs`, `get_log_conversation` and `get_log_stats`.

**Conversations.** Questions from widget visitors and from your product's users, through an API key or the MCP server. Never a member's own chats. A person needs the right to edit assistants.

| Tool                         | Scope              | What it does                                                                                                                                                                                |
| ---------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `list_conversation_logs`     | `assistants:write` | Conversations latest first, filtered by `channel`, `widget_id`, `api_key_id`, `assistant_id`, `rating`, `end_user`, `q`, `from` and `to`. `rating` `down` finds where the assistant failed. |
| `get_conversation_log`       | `assistants:write` | One logged conversation in full: messages, citations, mode, cost, duration, thumbs and comments.                                                                                            |
| `get_conversation_log_stats` | `assistants:write` | Conversations, questions, people, credits, thumbs and conversations per channel, over the same filters.                                                                                     |

**Answers.** Every answer from every channel (`chat`, `lookio_ai`, `api`, `mcp`, `widget`). Metadata only, without the question or the answer. A line has the `conversation_id` when the conversation was kept.

| Tool                   | Scope        | What it does                                                                                                                                                        |
| ---------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `list_answer_logs`     | `usage:read` | Answers latest first, filtered by `channel`, `assistant_id`, `widget_id`, `api_key_id`, `member_id`, `result` (`answered` or `no_answer`), `mode`, `from` and `to`. |
| `get_answer_log_stats` | `usage:read` | Answers, answered and not, credits, tokens, average time and answers per channel, over the same filters.                                                            |

**Indexing.** Every file, page or text read and indexed, with its status and the reason of a failure.

| Tool                     | Scope            | What it does                                                                                                                                                                         |
| ------------------------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `list_indexing_logs`     | `resources:read` | Indexings latest first, filtered by `resource_id`, `status`, `source_type`, `q`, `include_unchanged`, `from` and `to`. Unchanged pages of a site sync are left out unless asked for. |
| `get_indexing_log_stats` | `resources:read` | Indexings, indexed, failed, in progress, unchanged and words indexed, over the same filters.                                                                                         |

**Activity.** Who changed what, never content. Admins only, with a personal connection and the `admin` scope. An API key cannot read it.

| Tool                | Scope   | What it does                                                                                                                                                                                                                           |
| ------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `list_activity_log` | `admin` | Changes latest first, filtered by `actor_id`, `origin` (`app`, `api`, `cli`, `mcp`, `agent`, `system`), `target_type`, `target_id`, `action`, `q`, `from` and `to`. Answers "who changed this assistant?" and "what did this key do?". |

## Widgets

A [widget](/docs/guides/widget/overview) shows one of your assistants to anonymous visitors on a website.

| Tool                        | Scope               | What it does                                                                                                                                                                                                                                                                                                                                |
| --------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `list_widgets`              | `assistants:read`   | The widgets, with their status, allowed domains, settings, limits, install snippets and this month's numbers. Free.                                                                                                                                                                                                                         |
| `get_widget`                | `assistants:read`   | One widget with its snippets: `bubble`, `embed`, `hosted` and `iframe`. Free.                                                                                                                                                                                                                                                               |
| `create_widget`             | `assistants:write`  | Creates a widget and returns its snippets. Free to create, but visitors' answers are charged to the workspace in the widget's mode, capped by its limits. Set `allowed_domains`, or nothing shows on any site. A new widget has the chat bubble on, and the in-page and hosted page formats off (`settings.embed`, `settings.hosted_page`). |
| `update_widget`             | `assistants:write`  | Changes only what you send: pause it, change its assistant, mode, domains, settings or limits. Free.                                                                                                                                                                                                                                        |
| `duplicate_widget`          | `assistants:write`  | Copies a widget under a new id, named `<name> (copy)`, installed nowhere yet. Counts against the plan's widget limit. Free.                                                                                                                                                                                                                 |
| `clear_widget_image`        | `assistants:write`  | Removes a widget's launcher image, header image or favicon (`kind`: `launcher`, `header` or `favicon`). Setting an image has no tool: use `PUT /v1/widgets/{widget_id}/images/{kind}`, the CLI or the app.                                                                                                                                  |
| `delete_widget`             | `assistants:delete` | Permanently deletes a widget and its visitors' conversations. Pausing it with `update_widget` keeps it.                                                                                                                                                                                                                                     |
| `list_widget_conversations` | `assistants:write`  | What visitors asked through a widget, latest first, with their thumbs and the cost. The logs filtered on the widget.                                                                                                                                                                                                                        |
| `get_widget_conversation`   | `assistants:write`  | One visitor conversation with its messages, citations, cost, thumbs and comments.                                                                                                                                                                                                                                                           |

Tools that create or change a record also take an optional `idempotency_key`. Examples include `add_text_resource`, `add_web_page`, `add_site`, `create_assistant` and `create_widget`.

## Public assistants

See [Public assistants](/docs/guides/public-assistants).

| Tool                     | Scope             | What it does                                                                                                                                       |
| ------------------------ | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `list_public_assistants` | `assistants:read` | The directory of public assistants, with the price of a question in each mode. Free. Ask one with `ask_assistant` and its id: your workspace pays. |
| `get_public_assistant`   | `assistants:read` | One public assistant: description, publisher and prices. Free.                                                                                     |
| `get_publication`        | `admin`           | Whether one of your assistants is private, pending review, public or rejected (with the reason). Free.                                             |
| `publish_assistant`      | `admin`           | Asks Lookio to list an assistant in the directory, with a `description` of 40 to 1,000 characters. Lookio reviews it. Free.                        |
| `unpublish_assistant`    | `admin`           | Makes the assistant private again, at once. Free.                                                                                                  |

## Accesses

An [access](/docs/guides/accesses) shares assistants with people outside the workspace. All these tools are for admins and are free. The workspace pays for the callers' questions.

| Tool                | Scope   | What it does                                                                                                                                                                                                                   |
| ------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `list_accesses`     | `admin` | The accesses, with their protection, modes, ceilings, this month's spending and addresses.                                                                                                                                     |
| `get_access`        | `admin` | One access with its assistants, ceilings, addresses and keys (never their secrets).                                                                                                                                            |
| `create_access`     | `admin` | Creates an access: `name`, `assistants` (1 to 20, each with an optional description), `protection` (`public` or `keys`, Pro plan), `modes` (default `flash`), `passages` (default off), `daily_credits` and `monthly_credits`. |
| `update_access`     | `admin` | Changes the fields you send. `assistants` replaces the list. `status: paused` stops every call.                                                                                                                                |
| `delete_access`     | `admin` | Deletes the access and its keys permanently.                                                                                                                                                                                   |
| `update_access_key` | `admin` | Renames a key or changes its own daily and monthly ceilings.                                                                                                                                                                   |
| `revoke_access_key` | `admin` | Revokes a key permanently.                                                                                                                                                                                                     |

There is no tool to create an access key, because Lookio shows its secret only once. Create keys in the app or with `lookio accesses keys create`.

## Members

| Tool                     | Scope   | What it does                                                                                                        |
| ------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------- |
| `list_members`           | `admin` | Members, their permissions and the assistants each may use. Admins only.                                            |
| `set_member_permissions` | `admin` | Sets some permissions of a member and replaces the assistants they may use. Admins only, Pro and Custom plans only. |

## What is not available over MCP

- Uploading a file. Use the app, the CLI or the API.
- Streaming an answer. `ask_assistant` returns the whole answer.

For anything a tool does not cover, [Code Mode](/docs/developers/mcp/code-mode) can call any JSON endpoint of the REST API.

## Tool hints

Each tool has the MCP annotations `readOnlyHint`, `destructiveHint` and `idempotentHint`: it only reads, it can destroy data, it is safe to repeat. Clients use them to decide what to confirm. Destructive tools also tell the model to confirm with the person first. See [Safety and permissions](/docs/developers/mcp/safety-and-permissions).

## Errors

A failed tool call returns an error result with the same `code`, `message` and `docs_url` that the REST API uses. See [Errors](/docs/developers/errors).
