Version
DESTRUCTIVE

create_knowledge_entry

Teach Subscriby Copilot something new about a project — a question with its answer, or a document sent as text, indexed at once.

Write down something only the project knows, so the Copilot can answer from it: a question with its answer, or a document, a guide or a set of rules, sent as text. The entry is cut into passages and put in the index before the tool answers, so a member can be answered from a members entry the moment this returns. The dashboard also takes a .txt, .md or .markdown file; over MCP a document arrives as its text, and the Copilot reads the same passages either way.

audience defaults to members, because most of what a creator writes down is written for members; pass team for notes the creator's own surfaces should use alone.

Emits knowledge.created with the entry's ids and words, never its text.

Members may be answered from it

A members entry is read to members in the inbox, the project bot and the chat on the portal page wherever the project has switched the Copilot on for them. Keep anything the project would not say to a member on team.

kind is fixed once the entry exists: a guide that should have been a question is a new entry. A project holds at most 200 entries; the next one is VALIDATION_FAILED until one is removed.

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

DestructiveOpen world

A client that honours annotations asks a person before running it. It reaches beyond Subscriby: a connector, a provider or a member.

Arguments

project_id*string

UUID of the project to teach.

kind*string

"question" for a question with its answer, "document" for a plain-text or Markdown guide sent as text.

questiondocument
title*string

The question, worded the way a member asks it, or the document's name; 2 to 160 characters.

body*string

The answer, or the document's text; 2 to 50000 characters, facts only.

audiencestringoptional

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

teammembers

What it returns

{  "data": {    "id": "9d2f7a1c-4b6e-4c8a-b3e5-1f0d8c7b6a59",    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",    "kind": "document",    "kind_label": "Document",    "audience": "members",    "audience_label": "Members & Team",    "status": "ready",    "status_label": "Ready",    "title": "House rules",    "body": "# House rules\n\nClasses start on the hour. Arrive five minutes early.",    "file_name": null,    "file_size": null,    "mime": null,    "chunk_count": 1,    "characters": 73,    "failure": null,    "indexed_at": "2026-10-19T16:40:08+00:00",    "created_at": "2026-10-19T16:40:08+00:00",    "updated_at": "2026-10-19T16:40:08+00:00"  }}

The same object get_knowledge_entry returns, text included. title comes back trimmed.

How it fails

VALIDATION_FAILED

kind is not question or document, title is outside 2 to 160 characters, body is outside 2 to 50,000 characters, audience is not members or team, or the project already holds 200 entries. The envelope names the offending field.

RESOURCE_NOT_FOUND

project_id names a project the token cannot see: unknown, another team's, or outside the token's scope:project: allow-list.

AUTHENTICATION_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

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

How is this guide?

Last updated on