add_knowledge: add a document for review

Takes title and content, both required strings, and an optional channel, support or sales, which defaults to support. The limits match the REST API: titles up to 140 characters, content up to 50,000 and 100 sources a workspace. It returns the new source’s id, and the source is always saved unapproved.

Errors come back as isError text, such as “Provide a string for title.” when it’s missing, “Choose the support or sales channel.” or “This pilot supports up to 100 knowledge sources.”

Add a sales note
// params of the tools/call request
{"name": "add_knowledge", "arguments": {"channel": "sales", "title": "Plans and pricing", "content": "Your checked pricing page copy goes here."}}

// JSON inside result.content[0].text
{
  "id": "SOURCE_ID"
}

sync_github: import or refresh a GitHub file

Takes repo, as owner/name or the repository’s GitHub address, and path, a relative .md, .mdx or .txt path. Both are required here, although the REST endpoint defaults path to README.md. Files go to the support agent only.

It returns the source’s id, the same one each time for the same repository and path. Every sync replaces the text and makes the source unapproved again, even when nothing changed.

Sync one file
// params of the tools/call request
{"name": "sync_github", "arguments": {"repo": "example-org/product-docs", "path": "docs/getting-started.md"}}

// JSON inside result.content[0].text
{
  "id": "SOURCE_ID"
}

list_knowledge: see what needs review

Takes no input and returns every source, most recently changed first, without its text: id, channel, title, kind, repo, path, approved as 1 or 0, updated_at and characters. It’s marked read-only. Ask your coding agent to list sources where approved is 0 to see the review queue.

List sources
// params of the tools/call request
{"name": "list_knowledge", "arguments": {}}

// JSON inside result.content[0].text
[
  {
    "id": "SOURCE_ID",
    "channel": "support",
    "title": "Invite a teammate",
    "kind": "document",
    "repo": null,
    "path": null,
    "approved": 0,
    "updated_at": "2026-10-08T09:30:00.000Z",
    "characters": 1240
  }
]

get_knowledge: read a source in full

Takes id and returns the whole source, including workspace_id and content, so a person can read exactly what the agent would search. It’s marked read-only. An id outside your workspace returns “Source not found in this workspace.”

approve_knowledge: switch a source on or off

Takes id and approved, a boolean, both required. It returns the id and the new value. A missing or non-boolean value returns “Provide source id and approved boolean.”, and an unknown id returns “Source not found in this workspace.”

Any workspace token can call it. To keep approval with a person, block this tool in your MCP client or confirm each call, and approve in the dashboard instead.

Approve a reviewed source
// params of the tools/call request
{"name": "approve_knowledge", "arguments": {"id": "SOURCE_ID", "approved": true}}

// JSON inside result.content[0].text
{
  "id": "SOURCE_ID",
  "approved": true
}

import_website: listed but switched off

The tool list still includes import_website, with a required url and an optional sourceId, but it doesn’t import anything. A valid public address returns isError with “Website import is unavailable on this deployment. Add reviewed sales notes instead.”, and an invalid one gets a validation message first.

Paste the page’s text into add_knowledge with channel: "sales" instead, then review and approve it like any other note.