---
title: entherium_search_chat
description: Search the team's WORK-CHAT ARCHIVE for messages on a topic — this is how you gather CONTEXT for a task or defect: who asked for it, in what WORDS, when.
locale: en
version: 0.2.0
canonical: https://enterium-developer-docs.pages.dev/developers/mcp/tools/entherium_search_chat/
---

> Documentation index: https://enterium-developer-docs.pages.dev/developers/llms.txt — every page of this portal has a Markdown twin at <route>.md; the frozen API contract is at https://enterium-developer-docs.pages.dev/developers/api/openapi.json.

:::note
Generated from the running server (agent capability version `2026-09-03.1`) — do not edit by hand.
:::

Search the team's WORK-CHAT ARCHIVE for messages on a topic — this is how you gather
CONTEXT for a task or defect: who asked for it, in what WORDS, when. Use it BEFORE filing a
task/defect from a chat request, and to clarify the intent of one already filed.
`chat`: "work" = the team work chat (default). `author`: substring of a team member's
display name. Returns {"found": N, "messages": [{at, author, text, is_full, chat}]} — a
message with `is_full: false` is TRUNCATED by the log and MUST NOT be quoted as verbatim.
Requires the global `read_all` capability: this is internal team traffic, not available
to client-scoped tokens.

**Access:** read-only — safe to call repeatedly, changes nothing

**Available at:** `/mcp/`, `/mcp/readonly/`

_Hints declared to MCP clients (ToolAnnotations)_

| Hint | Value |
| --- | --- |
| `readOnlyHint` | true |
| `destructiveHint` | false |
| `idempotentHint` | true |
| `openWorldHint` | false |

## Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | `string` | yes | Topic or phrase to look for in the archive |
| `chat` | `string \| null` | no | Chat alias: work (default) or agents |
| `author` | `string \| null` | no | Substring of the author's display name |
| `since_days` | `integer \| null` | no | Only messages from the last N days |
| `limit` | `integer` | no | Maximum number of messages to return |


## Example call

Send inside an initialized MCP session (see [Connecting](../../connecting/)). Every parameter is shown with a typed placeholder; drop the optional ones you do not need — but for defect/task tools the QA fields are what keeps a report out of quarantine.

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "entherium_search_chat",
    "arguments": {
      "query": "<query>",
      "chat": "<chat>",
      "author": "<author>",
      "since_days": 1,
      "limit": 1
    }
  }
}
```

## Returns

| Field | Type | Description |
| --- | --- | --- |
| `found` | `integer` (optional) | Total matches (the page may be shorter) |
| `messages` | `array of object` (optional) | Matching messages, newest first |
| `messages[].at` | `string` | ISO-8601 timestamp of the message |
| `messages[].author` | `string \| null` | Author as recorded in the archive |
| `messages[].text` | `string` | Message text; may be truncated when is_full is false |
| `messages[].is_full` | `boolean` | False when the archive holds a truncated copy — do not quote it verbatim |
| `messages[].chat` | `string \| null` | Chat name or id |
| `error` | `string` (optional) | Present only when the search could not run (e.g. missing capability) |

## If it fails

| Symptom | Cause | Action |
| --- | --- | --- |
| `401` | Token missing/expired | Tokens are issued by the platform owner via `POST /api/v1/auth/agent-token` (superuser-only) — ask for a re-issue. ⚠️ A new token **replaces** your grant set |
| `403` / capability error | Your token lacks the capability or the contract grant | Check `my_capabilities` first; ask the owner for the grant |
