> ## Documentation Index
> Fetch the complete documentation index at: https://dialnexa.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload Knowledge Base Text

> Use the upload_knowledge_base_text MCP tool on the DialNexa remote MCP server.

<span data-api-safety-label="changes-state"><Badge color="yellow" size="sm" shape="pill">Changes state - verify before retry</Badge></span>

Adds a text document to a knowledge base and indexes it, so agents that use the knowledge base can draw on it from their next call. This is NOT a read-only action. Pass the document CONTENT as text — when a user shares a PDF or document in the conversation you already have its text, so send that directly; never base64-encode anything for this tool. Give it a short, unique title (the knowledge base rejects duplicate titles). Use list\_knowledge\_base\_documents to find the kb\_id. Suited to documents up to roughly a few hundred KB of text; for large PDFs or files that must keep their original layout, tell the user to upload from the dashboard.

## Parameters

| Name          | Type     | Required | Description                                                            |
| ------------- | -------- | -------- | ---------------------------------------------------------------------- |
| `kb_id`       | `string` | Yes      | The knowledge base ID, e.g. kb\_abc123                                 |
| `title`       | `string` | Yes      | Document title, unique within the knowledge base, e.g. "Refund policy" |
| `text`        | `string` | Yes      | The full document text, plain text or markdown                         |
| `description` | `string` | No       | Optional one-line description of the document                          |

## Complete input schema

```json theme={null}
{
  "type": "object",
  "properties": {
    "kb_id": {
      "type": "string",
      "description": "The knowledge base ID, e.g. kb_abc123"
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 150,
      "description": "Document title, unique within the knowledge base, e.g. \"Refund policy\""
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "description": "The full document text, plain text or markdown"
    },
    "description": {
      "type": "string",
      "maxLength": 500,
      "description": "Optional one-line description of the document"
    }
  },
  "required": [
    "kb_id",
    "title",
    "text"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
```

## Registered output schema

```json theme={null}
{
  "type": "object",
  "properties": {
    "document_id": {
      "description": "ID of the created document"
    },
    "knowledge_base_id": {
      "type": "string",
      "description": "The knowledge base it was added to, prefixed kb_"
    },
    "title": {
      "type": "string",
      "description": "The document title as stored"
    },
    "characters": {
      "type": "number",
      "description": "Length of the stored text in characters"
    },
    "status": {
      "type": "string",
      "description": "'ingested' once the text has been chunked and indexed for retrieval"
    },
    "note": {
      "type": "string",
      "description": "What happens next"
    }
  },
  "required": [
    "knowledge_base_id",
    "title",
    "characters",
    "status",
    "note"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
```

## Before you call

* Connect and initialize the MCP client with OAuth or an API key for the intended workspace.
* Provide the required parameters: `kb_id`, `title`, `text`.

## Example MCP request

Send `tools/call` after your client completes MCP initialization. Replace placeholder values with IDs and inputs from your workspace. For object and array parameters, follow the nested requirements in the parameter description instead of treating an empty value as complete.

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "upload_knowledge_base_text",
    "arguments": {
      "kb_id": "kb_abc123",
      "title": "Example resource",
      "text": "VALUE"
    }
  }
}
```

Successful results include `structuredContent` and a text content block containing the same JSON. Check `isError` first, then read `structuredContent` or parse `content[0].text`. See [MCP responses and errors](/docs/mcp-tools/errors) for the full envelope and failure behavior.

## Verify the result

Confirm the response is not marked `isError`. Call [List Knowledge Base Documents](/docs/mcp-tools/knowledge-base/list-knowledge-base-documents) to read the affected resource. Verify that the intended state is visible before making another change.

## Retry safety

This tool changes workspace state. After a timeout, read the affected resource before retrying so you do not create duplicate or conflicting changes.

## Related MCP tools

* [List Knowledge Base Documents](/docs/mcp-tools/knowledge-base/list-knowledge-base-documents): `list_knowledge_base_documents`
* [Get Knowledge Base Document](/docs/mcp-tools/knowledge-base/get-knowledge-base-document): `get_knowledge_base_document`
* [Get Knowledge Base Affected Agents](/docs/mcp-tools/knowledge-base/get-knowledge-base-affected-agents): `get_knowledge_base_affected_agents`

## Related guides

* [Connect to the DialNexa MCP server](/docs/mcp-tools/overview)
* [Knowledge Base MCP tools](/docs/mcp-tools/knowledge-base/overview)
* [MCP responses and errors](/docs/mcp-tools/errors)
