Version
DESTRUCTIVE

update_knowledge_entry

Change a Knowledge entry's title, text or audience. Anything omitted keeps its stored value; new words are cut into passages again at once.

Change what the Copilot was taught: the entry's title, its body (the answer, or the document's text) or its audience. Partial by design: only the arguments present change, so a call with audience alone moves the member boundary and nothing else. New words are cut into passages in the same step and the old passages go with them, so the Copilot never reads a mix of old and new; a new audience alone retags the passages without rewriting them.

Emits knowledge.updated with the fields that moved and whether the text did, and only when something did. Idempotent: sending the stored values again writes nothing and emits nothing.

kind cannot change. A question that should be a document, or the other way round, is a new entry with create_knowledge_entry and a delete_knowledge_entry of the old one.

Requires ability

The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.

The REST endpoint and this tool share one action, so validation, permissions and events are identical.

Fires one event

Delivered to every endpoint subscribed to it once the change is made.

Annotations

DestructiveIdempotent

A client that honours annotations asks a person before running it. Sending the same arguments twice changes nothing the second time.

Arguments

project_id*string

UUID of the project the entry belongs to.

knowledge_entry_id*string

UUID of the entry to change, from `list_knowledge_entries`.

titlestringoptional

The question, or the document's name; 2 to 160 characters.

bodystringoptional

The answer, or the document's text; 2 to 50000 characters. New words are cut into passages again.

audiencestringoptional

"members" lets members be answered from the entry; "team" keeps it to the creator's own surfaces.

teammembers

What it returns

{  "data": {    "id": "3b7e4d2a-9c1f-4a6b-8d5e-2f7c9a1b3e4d",    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",    "kind": "question",    "kind_label": "Question & Answer",    "audience": "team",    "audience_label": "Team Only",    "status": "ready",    "status_label": "Ready",    "title": "When does my membership renew?",    "body": "Memberships renew on the first day of every month, at the price you joined on.",    "file_name": null,    "file_size": null,    "mime": null,    "chunk_count": 1,    "characters": 64,    "failure": null,    "indexed_at": "2026-10-19T16:02:11+00:00",    "created_at": "2026-10-19T16:02:11+00:00",    "updated_at": "2026-10-19T17:12:45+00:00"  }}

The complete entry after the change, text included, the same object get_knowledge_entry returns. When the words changed, chunk_count, characters and indexed_at are new.

How it fails

VALIDATION_FAILED

title outside 2 to 160 characters, body outside 2 to 50,000, or audience not members or team. The envelope names the offending field.

RESOURCE_NOT_FOUND

project_id names a project the token cannot see, or knowledge_entry_id is unknown or belongs to another project.

AUTHENTICATION_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token lacks project-knowledge:update, or its owner's role on the project's team may not change Knowledge.

How is this guide?

Last updated on